2022 年度 OSS リテラシー 3 : wi-fi (WPA2 Enterprise) の設定

校内無線 LAN ネットワークへの接続

松江高専の無線 LAN ネットワークに接続するために, WPA2 Enterprise の設定を行う.

無線 LAN 関係の設定ファイルは /etc/wpa_supplicant/wpa_supplicant.conf である. この設定ファイルをエディター (vi, nano, leafpad 等) で編集し, アクセスポイントの情報を追加する. なお, シェルにはタブ補完という便利機能があるので使ってみると良い (例えば, /e まで打ったところでタブを押すと /etc となる. /etc/wp まで打ったところでタブを押すと /etc/wpa_supplicant となる).

個人のパスワードを平文で設定ファイルに書き込むのはセキュリティ的に問題がある. 暗号化したパスワードを設定ファイルに保存することにする.

$ read -s pass
  ********  (Wi-Fi に接続するためのパスワードを入力.入力値は表示されない)

$ echo -n "$pass" | iconv -t utf16le | openssl md4

  (stdin)= YYYYYYYYYYYYYYYYYYYYYYYY

この (stdin)= の後に続く YYYYYYYYYYYYYYYYYYYYYYYY が暗号化したパスワードである. これを用いて無線 LAN 関係の設定ファイルを書き換える. この機会に 5 棟, 6 棟の無線 LAN アクセスポイントも追加しておくと良いだろう.

$ cd

$ wget https://www.gfd-dennou.org/arch/iotex/oss/IoTeX_2022/wpa_supplicant.conf

$ sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.bk

$ sudo cp ~/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

  ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
  update_config=1
  country=JP
  network={
        ssid="H510W_pub"  
        key_mgmt=WPA-EAP
        eap=PEAP
        identity="jXXXX" (学生番号. ダブルクォーテーションで囲む)
        password=hash:YYYYYYYYYYYYYYYYYYYYYYYY (上記の (stdio)= 以降の文字列のコピペ. hash: という文字列を付けるのを忘れずに. ダブルクォーテーションで囲まないこと)
  }

  ... 以下,略 ...

設定を有効にする./etc/init.d の下に wpa_supplicant の起動スクリプトが 置かれていないようなので,ここでは wpa_supplicant のプロセスに HUP をかける.

プロセス一覧は以下で表示することができる.

$ pa aux

wpa_supplicant のプロセス番号を調べ,それらに HUP をかける. (/etc/init.d/XXX restart や systemctl restart XXX で内部的に行われていることを手動で行ったにすぎない).

$ pgrep wpa_supplicant

  442
  551

$ sudo kill -HUP 442 551
なお,上記のようにプロセス番号を調べて kill -HUP するのが基本であるが,"$ sudo killall -HUP wpa_supplicant" でそれらをまとめて実行することもできる.

正しく設定されていれば校内の無線 LAN ネットワーク (H520W_pub, H530W_pub, H540W_pub) に接続できるはずである.

ifconfig でネットワークパラメタを, iwconfig で wifi 関連のパラメタを確認できる. もしも wlan0 が表示されない場合は,wifi の電源が切れている可能性が高い. デスクトップ右上のネットワークのアイコンをクリックして,"Turn on wifi" とすること.

$ ifconfig

  ...(略)...

  wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
          inet 10.163.64.185  netmask 255.255.255.0  broadcast 10.163.64.255
          inet6 fe80::16d8:a409:bd12:9f61  prefixlen 64  scopeid 0x20<link>
          ether bc:5c:4c:58:36:46  txqueuelen 1000  (イーサネット)
          RX packets 27  bytes 6841 (6.6 KiB)
          RX errors 0  dropped 1  overruns 0  frame 0
          TX packets 39  bytes 6111 (5.9 KiB)
          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ iwconfig 

  wlan0     IEEE 802.11gn  ESSID:"H540W_pub"  Nickname:"<WIFI@REALTEK>"
            Mode:Managed  Frequency:2.472 GHz  Access Point: 6C:DD:30:3E:83:40   
            Bit Rate:72.2 Mb/s   Sensitivity:0/0  
            Retry:off   RTS thr:off   Fragment thr:off
            Power Management:off
            Link Quality=39/100  Signal level=31/100  Noise level=0/100
            Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
            Tx excessive retries:0  Invalid misc:0   Missed beacon:0

トラブルシューティング

もしも無線 LAN に接続できない場合は, 設定ファイルが間違っている可能性が高い. 間違いを探すときは, 手動で以下の順にコマンドを実行すると良い. エラーの原因となる行番号が表示される.

wpa_supplicant のプロセス番号を調べる

$ pgrep wpa_supplicant

  354
  405
  423  

もし例のようにプロセス番号が表示されたらそれを KILL する. 表示がなければ次に進んで良い.

$ sudo kill -KILL 354 405 423

wpa_supplicant コマンドを実行する.

# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf