遭遇した問題
試験用に(閉じた)無線LANを用意しようとして、一般的な無線LANアクセスポイントを用意し、WiFiのSSIDは非公開とした。 LinuxのDHCPサーバを用意して、あらかじめ登録したhardware address (MAC address)のみにIPアドレスを割り振るようにした。
そこにLinux(CentOS)のマシンでWiFi経由でDHCPで接続しようとした。
- まず、接続させたいLinuxマシンで、
ifconfig
とかip addr
等でDHCPクライアントのMACアドレスを調べる。 - クライアントのMACアドレスに対して、IPアドレス等を割り振るようにDHCPサーバを設定する。(ステルスSSIDに対する接続設定は、この記事を参考にした)
- クライアントマシンで、無線LANの設定(SSID,WPA2パスフレーズ等)を設定して接続する
という手順を取ったが、3でDHCPサーバーからIPアドレス等が割り振られず、接続に失敗した。
原因
原因は、NetworkManager
のデフォルトでMACアドレスのランダム化が有効になっていたからであった。DHCPクライアントから適当なMACアドレスを使ってDHCPサーバに問い合わせるので、DHCPサーバは無効なリクエストとみなして完全無視していた。
解決策
この環境はテストのためのネットワークで外界に全く出ないので、MACアドレスを収集されるリスクは少ないので、MACアドレスのランダム化を無効にした。
実行例
参考にした記事にあるステルスSSIDへの接続方法も含めた実行例は下記. [[コネクション名]], [[インターフェース名]], [[接続先SSID]], [[WPA2パスフレーズ]]は実際に合わせる必要がある。
実行例
# nmcli c add type wifi con-name [[wlan0a]] ifname [[wlan0]] ssid [[ACTUAL-SSID-NAME]]
# nmcli con modify [[wlan0a]] wifi-sec.key-mgmt wpa-psk
# nmcli con modify [[wlan0a]] wifi-sec.psk [[ACTUAL-WPA2-PASSPHASE]]
# nmcli con modify [[wlan0a]] wifi.mac-address-randomization never
# nmcli con up [[wlan0a]]
# nmcli con show [[wlan0a]]