Ubuntu 20.04でステルスAPに接続する
ラズパイに Ubuntu を入れて Wi-Fi 接続しようとしまったらハマったのでメモ
環境
- Raspberry Pi 4
- Ubuntu 20.04
1$ cat /etc/lsb-release 2DISTRIB_ID=Ubuntu 3DISTRIB_RELEASE=20.04 4DISTRIB_CODENAME=focal 5DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
接続
以下を参考に設定ファイルを作成します。
ポイントは ssid の指定に wpa supplicant の scan_ssid を設定している点です。
1$ sudo vim /etc/netplan/99_config.yaml
2network:
3 ethernets:
4 eth0:
5 dhcp4: true
6 optional: true
7 version: 2
8 wifis:
9 wlan0:
10 dhcp4: true
11 optional: true
12 access-points:
13 "ssid\"\n scan_ssid=1\n#":
14 password: "password"
※環境によっては一度ここでrebootする必要があるかもしれません。
ファイルを作成したら以下のコマンドで適用します。
1$ sudo netplan apply
適用後 IP が振られていることを確認します。
1$ ip -4 a show wlan0
23: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
3 inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.xxx scope global dynamic wlan0
4 valid_lft 258516sec preferred_lft 258516sec
接続できない時の確認
対象のデバイス名のサービスが作成されているため、そのサービスの status とログを確認します。
1$ sudo systemctl status netplan-wpa-wlan0.service
2$ sudo journalctl -u netplan-wpa-wlan0.service
3Apr 01 17:40:48 ubuntu wpa_supplicant[2051]: Line 6: Invalid SSID line '"'.
4Apr 01 17:40:48 ubuntu wpa_supplicant[2051]: Line 9: failed to parse network block.
5Apr 01 17:40:48 ubuntu wpa_supplicant[2051]: Failed to read or parse configuration '/run/netplan/wpa-wlan0.conf'.
6Apr 01 17:40:48 ubuntu systemd[1]: netplan-wpa-wlan0.service: Main process exited, code=exited, status=255/EXCEPTION
7Apr 01 17:40:48 ubuntu systemd[1]: netplan-wpa-wlan0.service: Failed with result 'exit-code'
なぜ ssid の指定時に scan_ssid を埋め込む必要があるのか
詳細は以下にまとまっていますが、netplan のバグのようです。
のため、ssid の部分に後続で生成される wpa supplicant 用のconfigを差し込んでおくことで生成されるconfigに必要な設定が書き込まれるようです。
生成されたconfigを見ると以下のように scan_ssid が書き込まれていることがわかります。
1$ sudo cat /run/netplan/wpa-wlan0.conf
2ctrl_interface=/run/wpa_supplicant
3
4network={
5 ssid="ssid"
6 scan_ssid=1
7#"
8 key_mgmt=WPA-PSK
9 psk="password"
10}
現在は修正されているようで netplan の 0.100 からは hidden オプションが追加されています。
ただ、手元で利用しているパッケージのバージョンは 0.99 であったため対象外でした。
1$ sudo dpkg -l | grep netplan
2ii libnetplan0:arm64 0.99-0ubuntu2 arm64 YAML network configuration abstraction runtime library
3ii netplan.io 0.99-0ubuntu2 arm64 YAML network configuration abstraction for various backends