====== Ubuntu 14.04 LTSの古いnmcliでステルスSSIDの無線APに接続する ======
Ubuntu 14.04 LTSなマシンで無線LAN接続するのに苦労したのでメモ。自分はタコなので(最近はあんまりタコって言わなくなった気がする…)、間違いとかあると思う。
===== 試した環境 =====
* Ubuntu 14.04 LTS
* NetworkManager 0.9.8.8
* nmcli 0.9.8.8
最近のnmcliではコマンドの書式が違うので使えない。というか、調べても最近のnmcliの事しか見つからなかったので、あえて古い情報を書くに至ったというわけ。
===== ステルスモードのアクセスポイントに接続 =====
古いnmcliは見えているアクセスポイント、つまり非ステルスなSSIDにしか繋ぎにいかない仕様?バグ?らしく、普通にステルスなSSIDを指定しても「Error: No network with SSID 'STEALTH_AP' found.」と直ぐ様エラーを返してきやがる。
なので、先にiwlistでステルスSSIDを指定した上でAPのスキャンを行い、ステルスSSIDを可視化してやる。(ステルス機能とはAPが自ら名前を名乗らないというだけで、正しい名前を読んであげれば応答するのである。)
# iwlist wlan0 scanning essid STEALTH_AP
# nmcli device wifi connect STEALTH_AP password PASSWORD
認識されているSSIDは nmcli device wifi で確認できる。
$ nmcli device wifi
SSID BSSID MODE FREQ RATE SIGNAL SECURITY ACTIVE
'DIRECT-PE-BRAVIA' 4A:E2:44:xx:xx:xx Infrastructure 2437 MHz 54 MB/s 90 WPA2 no
'STEALTH_AP' CC:E1:D5:yy:yy:yy Infrastructure 2447 MHz 54 MB/s 97 WPA2 no
'guest2' DC:FB:02:zz:zz:zz Infrastructure 2462 MHz 54 MB/s 37 WPA WPA2 no
ちなみに、古くないnmcliではhiddenオプションが追加されており、hidden yesとすることでステルスSSIDに直接繋げるようだ。ついでにいうと、NetworkManager自体は昔からhiddenオプションを持ってるので、D-Busで叩いてやればふつーに繋がる……というか、nmcliはNetworkManagerのD-Busラッパーでしかないわけだが、なぜそこの実装をサボったんだよっていう。
===== 古いnmcliのコマンド例集 =====
==== アクセスポイントに接続 ====
nmcli device wifi connect SSID password PASSWORD
==== 使用する無線LANデバイスを指定してアクセスポイントに接続 ====
nmcli device wifi connect SSID password PASSWORD iface wlan0
==== 接続プロファイルを表示 ====
無線LAN以外も表示されることに注意
nmcli connection list
==== 接続プロファイルで接続 ====
nmcli connection up id プロファイル名
プロファイルは初回接続時に/etc/NetworkManager/sustem-connections/の下に自動で作られる。デフォルトではSSID名になるが、nameオプションで名前指定が可能。
===== 戯言 =====
/-はっきり言ってLinuxはクソだと思う。-/
無線LAN接続するためのコマンドが iwconfig, wpa_cli, nmcli と3つあり、それぞれ出来ることが違ってて、同じコマンドでもバージョンで書式が微妙に違うっていうのは、多様的で自由ソフトウェアのあるべき姿を体現しており、Linuxは大変に素晴らしいものだなぁと思いました。ラブアンドピース!
===== 参考サイト =====
* [[https://bbs.archlinux.org/viewtopic.php?id=204074|NetworkManager won't connect to already configured wifi network / Networking, Server, and Protection / Arch Linux Forums]]
* [[https://linux.die.net/man/1/nmcli|nmcli(1): tool for controlling NetworkManager - Linux man page]] (古いnmcliのman)
* [[http://www.usupi.org/sysad/274.html|Network Managerをコマンドラインで操作する - いますぐ実践! Linuxシステム管理 / Vol.274]]