Raspberry Pi 4 を WPA2-EAP なネットワークに繋ぐ

GUIで設定できなかったり、ググった内容が古かったりとかいろいろ苦労したのでメモ

環境

項目
ボード Raspberry Pi 4 Model B / 1GB
OS Raspbian GNU/Linux 10(Raspbian Buster)(Linux kernel 4.19.97-v7+)

設定の流れ

  • wpa_supplicant でアクセスポイントの認証情報の設定を行う。
  • dhcpcdIPアドレスの設定を行う。
  • 再起動する。

設定

WPA2-EAP の設定

wpa_supplicant の設定

設定ファイルは /etc/wpa_supplicant/wpa_supplicant.conf です。はじめに元に戻せるようにオリジナルをコピーしておきます。

cd /etc/wpa_supplicant
sudo cp wpa_supplicant.conf wpa_supplicant.conf.orig

コピー出来たら編集する前にパスワードをハッシュ化します。

read -s pass
(password入力)
echo -n "$pass" | iconv -t utf16le | openssl md4

出力された16バイトのハッシュ値クリップボードにコピーしておきます。 次に好きなエディタで /etc/wpa_supplicant/wpa_supplicant.conf を編集します。

vim wpa_supplicant.conf

以下を末尾に追記します。

network={
    ssid="<接続先のSSID>"
    proto=RSN
    key_mgmt=WPA-EAP
    pairwise=CCMP
    auth_alg=OPEN
    eap=PEAP
    identity="<ユーザー名>"
    password=hash:<パスワードハッシュ値>
    phase1="peaplabel=0"
    phase2="auth=MSCHAPV2"
    priority=1
}

各項目の説明に関しては下記の記事が参考になります。

qiita.com

パスワードのハッシュ化に関して

MD4を使用しているため、気休め程度にとらえておきましょう。環境によるところかもしれませんが、今回はNTLMで使用されるNTハッシュ(パスワードのUTF-16LE表現のMD4ハッシュ)でないといけないらしく、説明の通りとなっています。

IPアドレスの設定

IPアドレスの管理には dhcpcd というサービスが使われており、設定ファイルは /etc/dhcpcd.conf となります。
従来の設定ファイル /etc/network/interfaces は使用しません。

はじめに元に戻せるようにオリジナルをコピーしておきます。

cd /etc
sudo cp dhcpcd.conf dhcpcd.conf.orig

コピー出来たら編集していきます。

vim dhcpcd.conf

下記内容を末尾に追記します。

interface <無線LANインターフェース名>
env ifwireless=1
env wpa_supplicant_driver=wext,nl80211

静的IPアドレスを使用する場合はさらに下記内容を追記します。

static ip_address=<IPアドレス/CIDR>
static routers=<デフォルトゲートウェイIPアドレス>
static domain_name_servers=<DNSサーバIPアドレス>
static domain_search=<検索ドメイン>
noipv6

再起動

上記の設定を終えたら再起動します。

sudo reboot

躓いたところ

古い情報をもとに設定を行っていたところ、目的のネットワークに接続できるものの、DHCPサーバを見つけられずネットワークに参加できない状態になりました(リンクローカルアドレス(169.254.xxx.xxx)が割り当てられた状態)。その後 Raspbian Buster 向けの情報(dhcpcd.confの設定)を見つけて無事設定できました。

参考

qiita.com

forums.raspberrypi.com

unix.stackexchange.com