🎓

KUINS-Air(京都大学の学内ネットワーク)にiwdで接続する(PEAP)

2025/02/28に公開

はじめに

私は、ArchLinuxを使っており、ネットワーク認証の設定、DHCPクライアントデーモンには、扱いが単純明快なiwdを愛用しています。(NetworkManagerは、色々煩雑で、自分には使い方がよくわからないので・・・)
しかし、iwdでIEEE802.1x認証するには、少々面倒な設定が必要です。
2年ほど前は、iwdを使ったPEAPでの認証がうまくいかず、別のPCをPEAPで接続し、そのPCでEAP-TLSに使うクライアント証明書を取得し、それを使ってEAP-TLS認証をする、という少々本末転倒なことをしていました。NetworkManagerを使ってどうにかPEAPで繋いでいた時期もありました。
ところが最近、iwdでKUINS-AirにPEAPで接続することができたので、設定を紹介します。

環境

ArchLinux(カーネルバージョン:6.13.5.arch1-1)
systemd 257.3-1
iwd 3.4-1
openssl 3.4.1-1
firewalld 2.3.0-2

設定

https://www.iimc.kyoto-u.ac.jp/ja/services/network/wifi/setupandroidkuins-air.html

京都大学情報環境機構の出している、Android向けの設定手順を参考にしながら、設定を進めていきます。
まず、KUINS-Airの設定ファイルを作成します。

# touch /var/lib/iwd/KUINS-Air.8021x
# chmod 600 /var/lib/iwd/KUINS-Air.8021x

適当なテキストエディタで編集していきます。
まず、「4.PEAPを選択、MSCHAPV2を選択、システム証明書を使用を選択、ドメイン(kyoto-u.ac.jp)入力し、匿名IDに値が入っている場合は消す」という部分です。
自分の環境では、システム証明書(SSL)は、/etc/ssl/cert.pemでした。中身を見てみると、証明書が色々入っています。
ところで、「匿名IDに値が入っている場合は消す」ということですが、実はEAP-Identityを設定しないと、自動で匿名IDとなってしまいます。また、EAP-Identityに適当なID(anonymousとか)を入れても、うまいこといきません。(ちょっと考えてみれば、適当なIDからのアクセスでいちいちトンネルを開いてたら、大変ですね。)EAP-Identityに、学内のアカウントのIDを入れれば、トンネル化が行われ、MSCHAPv2認証が始まります。

/var/lib/iwd/KUINS-Air.8021x
+ [Security]
+ EAP-Method=PEAP
+ EAP-PEAP-CACert=/etc/ssl/cert.pem
+ EAP-Identity=(ECS-ID)
+ EAP-PEAP-Phase2-Method=MSCHAPV2
+ EAP-PEAP-ServerDomainMask=*.kyoto-u.ac.jp

次に、「5. ID(ECS-IDまたはSPS-IDまたはKUINS接続機器アカウント)とパスワード(そのパスワード)を入力し接続」です。ECS-IDとパスワードを入力するだけです。iwdでは、プロファイルを暗号化する方法もあるようなので、また試してみたいです。

/var/lib/iwd/KUINS-Air.8021x
  [Security]
  EAP-Method=PEAP
  EAP-PEAP-CACert=/etc/ssl/cert.pem
  EAP-Identity=(ECS-ID)
  EAP-PEAP-Phase2-Method=MSCHAPV2
  EAP-PEAP-ServerDomainMask=*.kyoto-u.ac.jp
+ EAP-PEAP-Phase2-Identity=(ECS-ID)
+ EAP-PEAP-Phase2-Password=(パスワード)

最後に、自動接続の設定をしておきます。

/var/lib/iwd/KUINS-Air.8021x
  [Security]
  EAP-Method=PEAP
  EAP-PEAP-CACert=/etc/ssl/cert.pem
  EAP-Identity=(ECS-ID)
  EAP-PEAP-Phase2-Method=MSCHAPV2
  EAP-PEAP-ServerDomainMask=*.kyoto-u.ac.jp
  EAP-PEAP-Phase2-Identity=(ECS-ID)
  EAP-PEAP-Phase2-Password=(パスワード)

+ [Settings]
+ AutoConnect=true

このあと、iwdを再起動すれば、KUINS-Airに接続されます。

# systemctl --system restart iwd

接続確認

Google検索ができることで、接続できていることを確認しました。(KUINS-Airはpingが通らないので・・・)
最近APが変わったばかりなので、回線速度もしっかり出ます。
image.png

ハマっていたエラー

「EAP negotiation stopped after the Identity exchange, this can happen when the EAP-Identity value is not what the authenticator expects」というエラーにハマっていました。(journalctlで確認できます)
EAP-Identityに適当な値を入れてもトンネルは開きません。EAP-IdentityをECS-IDに設定したところ、トンネルが開通しました。

おわりに

この記事が、iwdを使う京都大学のみなさんの役に立つことを願います。

Discussion