Armadilloフォーラム

NetworkManagerでMACアドレス/IPアドレス固定で無線LAN接続

tsato

2022年8月1日 17時58分

お世話になります。

Armadillo-X1の無線LAN接続について、
客先先方のセキュリティにより特定のMACアドレスかつ特定のIPアドレスでないと接続出来ないアクセスポイント(DHCP無効)への接続を試みてます。
(アクセスポイントのSSIDはステルス設定です)
X1の製品マニュアルに記載されている方法の以下のコマンドを実行したところエラーとなり、プロファイルは自動で作成されました。

root@armadillo:~# nmcli device wifi connect [SSID] password [パスワード] hidden yes
Error: Connection activation failed: (5) IP configuration could not be reserved (no available address, timeout, etc.).

そのプロファイルを修正して、IPアドレス、デフォルトゲートウェイを指定された固定値に以下のコマンドで修正してconnectコマンドを実行しましたが同様のエラーメッセージとなり、指定したSSIDに「1」が付いた新規プロファイルが作成されてしまいました。

root@armadillo:~# nmcli con modify [SSID] ipv4.method manual ipv4.addresses "[IPアドレス]/16" ipv4.gateway [デフォルトゲートウェイ]
root@armadillo:~# nmcli con modify [SSID] 802-11-wireless.hidden yes

プロファイルデータは[SSID名].nmconnectionが作成され、中身は以下のようなデータでした。

[connection]
id=[SSID名]
uuid=b8899c4e-5920-464b-9a4f-033d51a6f687
type=wifi
permissions=
 
[wifi]
hidden=true
mac-address=[MACアドレス]
mac-address-blacklist=
mode=infrastructure
ssid=[SSID名]
 
[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk=[パスワード]
 
[ipv4]
address1=[IPアドレス]/16,[デフォルトゲートウェイ]
dns-search=
method=manual
 
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto

ステルスかつMACアドレスとIPアドレス固定限定のアクセスポイントへの接続方法は以上の方法で合ってますでしょうか。
それとも他に何か必要が設定があったりしますでしょうか。

因みに先方のIT担当は、「Linuxは無線LANのIPアドレスが正しく設定されていれば、アクセスポイントへ接続前でもifconfigコマンドでwlan0にIPアドレス(inet)が表示される」と仰ってましたが、本当なのでしょうか。

よろしくお願いします。

コメント

at_dominique.m…

2022年8月2日 8時59分

tsatoさん、

お世話になっています。

> そのプロファイルを修正して、IPアドレス、デフォルトゲートウェイを指定された固定値に以下のコマンドで修正してconnectコマンドを実行しましたが同様のエラーメッセージとなり、指定したSSIDに「1」が付いた新規プロファイルが作成されてしまいました。

nmcli con modify や up (接続コマンド)で新プロファイルが作成されるのはちょっと気になります、念のため「nmcli con」からwifiのプロファイルがなくなるまで「nmcli con delete <プロファイル名>」で消してから、作成しなおしてもらえないでしょうか?

> プロファイルデータは[SSID名].nmconnectionが作成され、中身は以下のようなデータでした。

パスワードの設定は多数あって何とも言えませんが、他の設定はこれであってると思います。

コンフィグ自体はそれで大丈夫と思いますが、mac の設定だけ一つの注意点があります:「mac-address」はデバイスの本来の mac address であって、Armadillo のどれのデバイスを使う選択肢に使われています(複数の wifi インタフェースがない場合にあまり意味がないですが)
NetworkManager のデフォルトの設定ではそのアドレスを接続にそのまま使うはずですが、スキャンの際にランダムなアドレスを使ってると思われます。privacyの設定によって接続の時にも変更が可能です。

そうならないように、以下のコンフィグファイルを追加してください

root@armadillo:~# vi /etc/NetworkManager/conf.d/no-random-mac.conf
[connection-mac-randomization]
wifi.cloned-mac-address=permanent
 
[device]
wifi.scan-rand-mac-address=no

追加してから再起動か「systemctl restart NetworkManager」でリロードさせてください。

AP が hidden なので、もしかしたら違うMACアドレスでスキャンを行うと返事してくれないかもしれません。

> 因みに先方のIT担当は、「Linuxは無線LANのIPアドレスが正しく設定されていれば、アクセスポイントへ接続前でもifconfigコマンドでwlan0にIPアドレス(inet)が表示される」と仰ってましたが、本当なのでしょうか。

そうですね、他のツールを使えば IP アドレスを先に設定することもありえますが、Armadillo で使われてる NetworkManager では接続してから設定されます。
接続されない場合に ifconfig コマンドで表示されることはないでしょう。

設定変更でも接続できなかった場合にお手数ですが、以下のコマンドの出力をお願いします:

root@armadillo:~# iw event > /tmp/iw-event.log &
[1] 6626
root@armadillo:~# nmcli c up <プロファイル名>
エラーなど…
root@armadillo:~# fg
# control + C で iw event を停止させます
root@armadillo:~# cat /tmp/iw-event.log 
ログ
root@armadillo:~# grep NetworkManager /var/log/messages | tail -n 100
ログ

MACやSSIDを隠していただいても構いませんがスキャンのパラメターや接続しようとしているのかを確認したいので、お手数ですがよろしくお願いします。

お世話になります。
ご回答ありがとうございます。

> nmcli con modify や up (接続コマンド)で新プロファイルが作成されるのはちょっと気になります、念のため「nmcli con」からwifiのプロファイルがなくなるまで「nmcli con delete <プロファイル名>」で消してから、作成しなおしてもらえないでしょうか?
modifyコマンドやupコマンドではプロファイルは作成されません。上記のとおりconnectコマンドでプロファイルが作成されました。

今、先方の環境ではなく市販のルータを使いDHCP無効化、ステルス化などを設定して同様のコマンドで接続を試みて同じエラーが出た状態で検証していましたが、
プロファイルを作成した後に以下のコマンドを実行したら接続できました。

root@armadillo:~# nmcli c up <プロファイル名>

接続コマンドにおいて自分が勘違いしていた部分がありましたが、
上記のとおり今まで自分の方で指令していた接続するコマンドは全て[connect]でした。(X-1の説明書の無線LAN接続にて記載されている方法です)
しかし今までの流れから、[connect]コマンドはプロファイルが存在しない場合に新規プロファイルを作成して接続を試みるコマンドで、
既にプロファイルが存在する設定への接続は[up]コマンドを使用しないといけない、というように思えてきました。(先方の環境では[up]コマンドは一度もトライしてませんでした)
(既に存在するプロファイル名(SSID)で[connect]コマンドを実行したら、指定したSSIDに「1」が付いた新規プロファイルが作成されたのも納得できそうです)
なので、先方の環境でも[connect]コマンドではなく[up]コマンドを使用すれば良かったのかもしれませんでした。
もう一度、先方のネットワーク環境にて接続を試みてみます。

ありがとうございました。

at_dominique.m…

2022年8月3日 16時42分

tsatoさん、

お世話になっています、
報告ありがとうございました

> 上記のとおり今まで自分の方で指令していた接続するコマンドは全て[connect]でした。(X-1の説明書の無線LAN接続にて記載されている方法です)
> しかし今までの流れから、[connect]コマンドはプロファイルが存在しない場合に新規プロファイルを作成して接続を試みるコマンドで、
> 既にプロファイルが存在する設定への接続は[up]コマンドを使用しないといけない、というように思えてきました。(先方の環境では[up]コマンドは一度もトライしてませんでした)
> (既に存在するプロファイル名(SSID)で[connect]コマンドを実行したら、指定したSSIDに「1」が付いた新規プロファイルが作成されたのも納得できそうです)
> なので、先方の環境でも[connect]コマンドではなく[up]コマンドを使用すれば良かったのかもしれませんでした。

そのとおりです、「nmcli device wifi connect」では新しいプロファイルが作成されますのでその後の変更(hiddenやIPアドレス)無しで再接続を実行しようとしていました。

X-1 の説明書の内容について承知いたしました、改善できないか見てみます。

よろしくお願いします。

お世話になります。

その後客先先方のセキュリティ環境上でのトライで、無事[up]コマンドでアクセスポイントへ接続することが出来ました。
とりあえずのご報告となります。
ありがとうございました。