KUINS-Air(京都大学の学内ネットワーク)にiwdで接続する(PEAP)
はじめに
私は、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
設定
京都大学情報環境機構の出している、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認証が始まります。
+ [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では、プロファイルを暗号化する方法もあるようなので、また試してみたいです。
[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=(パスワード)
最後に、自動接続の設定をしておきます。
[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が変わったばかりなので、回線速度もしっかり出ます。
ハマっていたエラー
「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