matsuoka.yasufumi
2022年10月12日 18時16分
いつもお世話になっております。
パナソニック インダストリー株式会社 松岡です。
問題の概要、手順、解析情報、使用環境、添付ファイルの情報を以下に示します。
お手数ですが、原因や解析方法のアドバイスを頂けますでしょうか?
A.概要
Armadillo IoT-G3Lで、ソフトをdebian9からdebian10へ更新しました。
debian9では、wifiは正常に動作していましたが、
debian10では、wifiに接続できません。
弊社の方で、debian10への移行時のwifi設定の不足(漏れ)の可能性もあります。
B.現象、手順
debian10で、
1.wifiアクセスポイント(AP)のArmadilloで、
"$nmcli connection show"コマンドを実行する
→wifiは有効であり、DEVICE=wlan0と表示される。
2.パソコン(Windows10)の右下のwifi表示で、このAPのSSIDを選択し、[接続]を押下する。
→"このネットワークには接続できません"と表示される。
C.解析情報
1.debian9とdebian10で、"$nmcli connection show wifi"コマンドの出力結果
の差異を確認しましたが、特に問題となるような項目は見つけられませんでした。
2.パソコン以外に、スマホから、このAPのSSIDを選択し、[接続]を押下すると、
"IPアドレスの取得に失敗しました"というエラーが出力された。
D.使用環境、ハードとソフトの情報
1.機種:ArmadilloG3l AGL3100-C13Z (メモリ1GByte)
2.ソフト
1)debian9
Linuxカーネル :uImage-x1-v4.9-at6
ルートファイルシステム:debian-stretch-armhf_aiotg3l_20190327.tar.gz
2)debian10(buster)
Linuxカーネル :uImage-x1-v4.9-at25
ルートファイルシステム:debian-buster-armhf_aiotg3l_20220829.tar.gz
E.添付ファイル
1.パソコンでwifi接続エラー時の画面キャプチャ
ファイル:PC_wifi表示_接続結果_接続できませんpng.png
2.debian9とdebian10について、下記の1)~3)のコマンドの実行結果
1)$ifconfig
2)$nmcli connection show
3)$nmcli connection show wifi
3.ebian9とdebian10について、
tcpdumpツールで、インターフェイス"wlan0"を指定した場合のパケットログ
ファイル | ファイルの説明 |
---|---|
PC_wifi表示_接続結果_接続できませんpng.zip | 添付ファイルの詳細は、本文の"E.添付ファイル"欄を参照して下さい。 |
コメント
matsuoka.yasufumi
アットマークテクノ 水谷様
松岡です。回答どうもありがとうございます。
>お手数ですが、G3L上でAPの構築を行った際の、AP構築手順についてお教えいただけないでしょうか。
wifiに関する設定は、
起動時に、シェルスクリプトで、
"nmcli connection modify wifi"コマンドにより、
下記8個の設定を実施しています。
1)ssid wifi-pan (例)
2)802-11-wireless.mode "ap"
3)802-11-wireless-security.key-mgmt wpa-psk
4)802-11-wireless-security.psk abcd1234 (例)
5)ipv4.method share
6)ipv6.method auto
7)connection.zone internal
8)connection.autoconnect no
以上です。
matsuoka.yasufumi
アットマークテクノ 水谷様
松岡です。解析の支援どうもありがとうございます。
こちらで、解析を進めており、質問が2件あります。
お手数ですが、アドバイスを頂けますでしょうか?
debian9とdebian10について、
tcpdumpツールで、インターフェイス"wlan0"を指定した場合のパケットログを解析した結果、
debian10では、
802.1X Authenticationのシーケンスで、失敗しています。
具体的には、
Armadillo(AP)→Client(パソコン)への[EAP-Request/Identify]メッセージを送信後、
Client(パソコン)→Armadillo(AP)へ[EAP-Response/Identify]メッセージが返信されていません。
このため、Armadillo(AP)は、[EAP-Request/Identify]メッセージの再送を行っている。
debian9からdebian10への更新で、
802.1X Authenticationのプロトコルのバージョンが変更になっています。
debian9 :802.1X-2004
debian10:802.1X-2010 (*1)
*1 MACsecによるレイヤ2暗号化対応
この変更点に関して、質問2件です。
wifiの知識不足の所があり、申し訳ありません。
1.802.1X Authenticationのプロトコルのバージョンが変更になったことにより、
設定の追加等が必要であれば、教えて頂けますでしょうか?
2.今回のwifi接続できない問題が、プロトコルのバージョンに関係しているか確認するため、
debian10で、プロトコルバージョンを、802.1X-2004に戻して動作確認したいのですが、
プロトコルバージョンを変更する方法を教えて頂けますでしょうか?
"/etc/wpa_supplicant/wpa_supplicant.conf"ファイルを作成し、
eapol_version=2
の設定を追加し、wpa_supplicant.serviceを再起動しましたが、
変更は有効となりませんでした。
at_takumi.mizutani
松岡様
水谷です。返答が遅くなってしまい申し訳ございません。
> 2.今回のwifi接続できない問題が、プロトコルのバージョンに関係しているか確認するため、
> debian10で、プロトコルバージョンを、802.1X-2004に戻して動作確認したいのですが、
> プロトコルバージョンを変更する方法を教えて頂けますでしょうか?
>
> "/etc/wpa_supplicant/wpa_supplicant.conf"ファイルを作成し、
> eapol_version=2
> の設定を追加し、wpa_supplicant.serviceを再起動しましたが、
> 変更は有効となりませんでした。
プロトコルバージョンの変更方法についてですが、下記手順にて一度お試しいただけますでしょうか。
1. "systemctl edit --full wpa_supplicant.service" で supplicant.service を開く
2. "ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant" の部分を以下のように編集する
"ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf"
3. 再起動する
"systemctl daemon-reload"
"systemctl restart wpa_supplicant.service"
参考
https://unix.stackexchange.com/questions/571590/changing-eapol-version-…
以上、よろしくお願いいたします。
matsuoka.yasufumi
matsuoka.yasufumi
アットマークテクノ 水谷様
松岡です。解析の支援ありがとうございます。
802.1X認証のeapol_versionの変更方法について、
a)supplicant(client)の場合は、wpa_supplicant.confで設定し、
b)access point(server)の場合は、hostapd.confのような設定が必要でしょうか?
昨日、スマホをWiFiテザリング設定し、
Armadillo(supplicant)からスマホ(access point)へは、WiFi接続できました。
このとき、パケットログを見ると、eapol_version=2でした。
Armadilloで、access pointの場合に、eapol_version=2に設定できれば、
パソコン(supplicant)からArmadillo(access point)へ接続できるのでは?と考えています。
★Armadilloで、access pointとして動作しているソフトの名前と、eapol_versionの設定方法を教えて頂けますでしょうか?
(現状、hostapdソフトは、使用していませんでした)
at_takumi.mizutani
水谷です。
> ★Armadilloで、access pointとして動作しているソフトの名前と、eapol_versionの設定方法を教えて頂けますでしょうか?
> (現状、hostapdソフトは、使用していませんでした)
APを構築する方法ですと、create-apを使用する方法と、dnsmasqを使用する方法をご紹介したブログがございます。
https://armadillo.atmark-techno.com/blog/615/8642
https://armadillo.atmark-techno.com/blog/615/10073
上記ブログでご紹介している方法の場合ですと、eapol_versionについては特に設定しておりません。
一度お試しいただけますと幸いです。
以上、よろしくお願いいたします。
matsuoka.yasufumi
アットマークテクノ 水谷様
松岡です。APの構築方法の情報ありがとうございます。
現状、弊社のArmadilloでは、NetworkManagerで、無線LANアクセスポイント構築していました。
(create-ap、dnsmasqは使用していない)
NetworkManagerの設定を調査した結果、eapol_versionは指定できず、
デフォルト値(802.1x-2010)を使用するしかなさそうです。
よって、10/18の質問No.1について、アドバイスをお願いできますでしょうか?
>1.802.1X Authenticationのプロトコルのバージョンが変更になったことにより、
> 設定の追加等が必要であれば、教えて頂けますでしょうか?
matsuoka.yasufumi
アットマークテクノ 水谷様
松岡です。いつもお世話になっております。
10/20の質問から、設定の条件を絞りました。
eapol_version = 802.1x-2010(3)の場合、
EAP(PPP Extensible Authentication Protocol)プロトコル上で、
複数の認証方式(MD5, TLS, TTLS, PEAP, LEAP) をサポートしていますが、
証明書を用いないパスワード系のEAPである、
EAP-PSK、EAP-PWDについて、
必要なNetworkManagerの設定を教えて頂けますでしょうか?
debian9でのwifi接続では、wpa-psk(事前共有鍵)認証を使用しており、
debian10でも、これと同等の認証方式を採用したいと考えております。
at_takumi.mizutani
松岡様
ご返信が遅くなってしまい申し訳ございません。水谷です。
こちらでも松岡様と同様の環境、設定でAPを構築し、再現試験を行ったのですが、
こちらではAPへの接続に成功しました。
その際にパケットをキャプチャし、ログを確認したのですが、
802.1X Authenticationのプロトコルのバージョンは802.1X-2010となっておりました。
また、APに接続した対向機(PC)側で確認したところ、"WPA, WPA2"となっており、松岡様からご提供いただいた設定情報の通りで問題ないようでした。
参考までに試験時のパケットも添付いたします。
解決方法に関するご返信でなく申し訳ございませんが、以上、よろしくお願いいたします。
ファイル | ファイルの説明 |
---|---|
test_connection.tar |
at_takumi.mizutani
matsuoka.yasufumi
アットマークテクノ 水谷様
松岡です。いつもお世話になっております。
お忙しい中、再現試験の実施ありがとうございました。
弊社の方でも、supplicant(client)側も、Armadillo(debian10 OS)を使用した場合、
正常に、WiFi接続できました。
このとき、802.1X Authenticationのプロトコルのバージョンは802.1X-2010でした。
現状、supplicant(client)側が、Windows10のパソコン、Android OSのスマホの場合、
WiFi接続できていません。
弊社の方で、Windows 10 OSの設定を確認してみます。
ご対応どうもありがとうございました。
また、何か不明な点がありましたら、質問させて下さい。
matsuoka.yasufumi
at_takumi.mizutani
at_takumi.mizutani
水谷です。
調査の結果、debian10 でインストールされている wpasupplicant 2.7の問題であることが判明いたしました。
https://bugs.launchpad.net/raspbian/+bug/1834749
添付ファイルの wpasupplicant 2.9 をインストールしていただくことで本問題は解決すると思いますので、一度お試しいただけますと幸いです。
また、以下は本問題とは別件となりますが、よろしければご確認ください。
NetworkManager ではWPSが標準で有効となっており、Windowsから接続する場合
「ルータのラベルに記載されている PIN (通常は 8 桁) を入力してください」というように表示されますが、
WPSはセキュリティの観点から無効化しておくことを推奨いたします。
WPSは以下のコマンドにて無効化出来ます。
nmcli connection modify wifi 802-11-wireless-security.wps-method disabled
以上、よろしくお願いいたします。
ファイル | ファイルの説明 |
---|---|
wpasupplicant_2.9.0-21_armhf.tar |
matsuoka.yasufumi
at_hanada
花田です。
> wpasupplicant 2.7の原因については、連絡頂いたページをみましたが、よくわかりませんでした。
原因の部分ですが、調査した範囲の読み解きで間違ってなければ…
先のリンク先でいうと
> v2.8 supplicant is illegally trying to use 4-way handshake offloading in NL80211_CMD_SET_PMK without declaring
といっている部分が当該するところ。
(この動作自体が本来想定されていない異常なもので、その先でアクセス違反が起きるのはその無線LANチップの問題)
OpenWrtではそういうシーケンスに陥らないように、hostapdのsetupで解消させていたようです。何が起きているかは、これの説明がわかりやすいと思います。
https://github.com/openwrt/openwrt/commit/cb41bc508856167ce302c31c2fc73…
network-manager上から、eapol_versionを強制的に上書きするパスは用意されていないようで。
https://unix.stackexchange.com/questions/571590/changing-eapol-version-…
wpa_supplicant側で根本原因部分を解消したのは、恐らくこのパッチだと思うんですが…
https://w1.fi/cgit/hostap/commit/?id=cb28bd52e1f0300c128d96cc57127c1319…
ただここだけを単独で2.7に反映して、他所との不整合が起きないことを確認するのはなかなか大変そうです。
WPA周りはセキュリティ面の脆弱性に直接関わるところですから、現在のstableで使われている2.9がより安全ともいえます…
at_hanada
花田です。
今回ものは、bullseye(11)のwpasupplicantパッケージソースをbuster(10)に持ってきて、実機ビルドしたものです。
ビルド手順についてご紹介します。
Debian -- bullseye の wpa ソースパッケージに関する詳細
https://packages.debian.org/ja/source/bullseye/wpa
こちらから、以下のファイルをダウンロード(wgetなど)しておきます。
- wpa_2.9.0.orig.tar.xz
- wpa_2.9.0-21.debian.tar.xz
ソースファイルを展開します。
armadillo:/~$ tar xf wpa_2.9.0.orig.tar.xz armadillo:/~$ cd wpa-2.9 armadillo:~/wpa-2.9$ tar xf ../wpa_2.9.0-21.debian.tar.xz
スーパーユーザー権限(root)で、ビルドに必要なパッケージをインストールしておきます。
root@armadillo# apt install debhelper-compat dh-exec docbook-to-man docbook-utils libdbus-1-dev libnl-genl-3-dev libnl-route-3-dev libpcsclite-dev libreadline-dev libssl-dev pkgconf qtbase5-dev
wpa-2.9ディレクトリで、以下のようにビルドします。
armadillo:~/wpa-2.9$ dpkg-buildpackage -b -rfakeroot -us -uc : armadillo:~/wpa-2.9$ ls ../deb ../eapoltest-dbgsym_2.9.0-21_armhf.deb ../eapoltest_2.9.0-21_armhf.deb ../hostapd-dbgsym_2.9.0-21_armhf.deb ../hostapd_2.9.0-21_armhf.deb ../libwpa-client-dev_2.9.0-21_armhf.deb ../wpagui-dbgsym_2.9.0-21_armhf.deb ../wpagui_2.9.0-21_armhf.deb ../wpasupplicant-dbgsym_2.9.0-21_armhf.deb ../wpasupplicant_2.9.0-21_armhf.deb
matsuoka.yasufumi
アットマークテクノ 花田様
松岡です。いつもお世話になっております。
原因と対策案の情報どうもありがとうございます。
対策について、下記の方針で問題ありません。
>ただここだけを単独で2.7に反映して、他所との不整合が起きないことを確認するのはなかなか大変そうです。
>WPA周りはセキュリティ面の脆弱性に直接関わるところですから、現在のstableで使われている2.9がより安全ともいえます…
アドバイス依頼 1件です。
debian10(buster)に、教えて頂いた対策手順を実行しましたが、
「ビルドに必要なパッケージをインストール」の手順で、
"Package libpcsclite-dev is not available"のエラーが出力されます。
何かよい対策案は、ございますでしょうか?
出力されたエラーの内容を以下に示します。
----
root@armadillo:~/wpa-2.9# apt install debhelper-compat dh-exec docbook -to-man docbook-utils libdbus-1-dev libnl-genl-3-dev libnl-route-3-dev libpcscli te-dev libreadline-dev libssl-dev pkgconf qtbase5-dev Reading package lists... 0%Reading package lists... 100%Reading package lists... Done Building dependency tree... 0%Building dependency tree... 0%Building dependency tree... 50%Building dependency tree... 50%Building dependency tree Reading state information... 0%Reading state information... 0%Reading state information... Done Note, selecting 'debhelper' instead of 'debhelper-compat' Package libpcsclite-dev is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Unable to locate package dh-exec E: Unable to locate package docbook-to-man E: Unable to locate package docbook-utils E: Unable to locate package libdbus-1-dev E: Unable to locate package libnl-genl-3-dev E: Unable to locate package libnl-route-3-dev E: Package 'libpcsclite-dev' has no installation candidate E: Unable to locate package pkgconf E: Unable to locate package qtbase5-dev root@armadillo:~/wpa-2.9#
at_takumi.mizutani
水谷です。
> アドバイス依頼 1件です。
> debian10(buster)に、教えて頂いた対策手順を実行しましたが、
> 「ビルドに必要なパッケージをインストール」の手順で、
> "Package libpcsclite-dev is not available"のエラーが出力されます。
>
> 何かよい対策案は、ございますでしょうか?
こちらでも以下製品マニュアルの手順にしたがって初期化を行ったG3L上にて確認を行いましたが、同様のエラーは発生いたしませんでした。
https://manual.atmark-techno.com/armadillo-iot-g3l/armadillo-iotg-g3l_p…
以下のことをお試しいただき、解決するかご確認いただいてもよろしいでしょうか。
・apt update 後に再度 apt install を行う
・上記マニュアルの初期化手順に従い、クリーンな環境で再度wpa ソースパッケージのビルドを行う
以上、よろしくお願いいたします。
matsuoka.yasufumi
アットマークテクノ 水谷様
松岡です。いつもお世話になっております。
申し訳ありません。
"apt-get update"を実行後、正常に、パッケージのダウンロードができました。
何度も申し訳ありませんが、
対策方法について、ご相談 1件です。
弊社のArmadilloを使用したIoT端末では、eMMC領域の残容量が少ないため、
上記のパッケージの追加ができない状態です。
教えて頂いた対策のパッケージ追加では、debian10ではインストールされていないものがほとんどで、
712 MByteも消費するようです。
添付ファイル"20221109_パッケージ追加_必要サイズ.txt"で★印箇所を参照。
eMMC領域の増加を抑えることができる対策方法はありますでしょうか?
例.
案1.wpasupplicant V2.7へパッチの適用
案2.wpasupplicant V2.9の必要ファイルのみの適用
以上、宜しくお願い致します。
ファイル | ファイルの説明 |
---|---|
20221109_パッケージ追加_必要サイズ.txt |
at_takumi.mizutani
水谷です。
> eMMC領域の増加を抑えることができる対策方法はありますでしょうか?
> 例.
> 案1.wpasupplicant V2.7へパッチの適用
> 案2.wpasupplicant V2.9の必要ファイルのみの適用
まず、パッケージをビルドするために追加するパッケージ郡(debhelper-compat, dh-exec, docbook-to-man, 等)は動作環境には不要なものとなります。
そのため、動作環境とは別にビルド環境を用意することで動作環境のeMMCの残容量低下を抑えることが出来ます。
ビルド環境の用意方法としては、例えばSDカード(最低2GB、4GB以上推奨)でSDブートを行う方法があります。
SDブートを行う方法については「Armadillo-IoT ゲートウェイ G3製品マニュアル」の「第15章 SDブートの活用」をご参照ください。
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro…
以上、よろしくお願いいたします。
matsuoka.yasufumi
アットマークテクノ 水谷様
松岡です。いつもお世話になっております。
回答どうもありがとうございます。
本当に何度も申し訳ありませんが、質問です。
11/2に教えて頂いた、お試しの対策方法
"wpasupplicant_2.9.0-21_armhf.deb"をインストールする方法を正式対策とすることは可能でしょうか?
この方法の場合、品質的な問題や、懸念点がありますでしょうか?
教えて頂いた、eMMCの容量削減方法について、
SDブートは活用しているのですが、
SD上でビルドした後、
wpasupplicantについて、どのファイルをSD側からeMMC側のルートファイルシステムに移植すればよいか
教えて頂けますでしょうか?
at_takumi.mizutani
at_hanada
花田です。
> 11/2に教えて頂いた、お試しの対策方法
> "wpasupplicant_2.9.0-21_armhf.deb"をインストールする方法を正式対策とすることは可能でしょうか?
> この方法の場合、品質的な問題や、懸念点がありますでしょうか?
こちらについて、私の方から回答させていただきます。
同一のソースから同一の環境でビルドしたものであれば、(埋め込まれたビルドタイムスタンプなどを除き)同一のパッケージファイルができあがりますので、(私側の作業を信用していただけるという前提で)そのままお使いいただいてもまったく問題ありません。
注意点がいくつかあります。
まず"wpa"のソースからビルドされるパッケージはwpa_supplicantのみではありません。先のコマンド一つで、以下のファイル群が生成されます。
- hostapd_2.9.0-21_armhf.deb
- wpasupplicant-dbgsym_2.9.0-21_armhf.deb
- hostapd-dbgsym_2.9.0-21_armhf.deb
- wpagui_2.9.0-21_armhf.deb
- eapoltest_2.9.0-21_armhf.deb
- wpagui-dbgsym_2.9.0-21_armhf.deb
- eapoltest-dbgsym_2.9.0-21_armhf.deb
- wpasupplicant_2.9.0-21_armhf.deb
- libwpa-client-dev_2.9.0-21_armhf.deb
- wpa_2.9.0-21_armhf.buildinfo
- wpa_2.9.0-21_armhf.changes
将来も含めwpasupplicantパッケージしか使わないということであれば、他は無視していいのですが。hostapdパッケージが必要になった、どうしてもwpasupplicant本体をデバッグしたくなりsymbolが欲しい…etcといったことが起きた場合、そちらだけを(公式リリースされている)古いバージョンで使うというわけにはいきません。ですので、これらすべてを一連のものとして管理する必要が出るはずです。
同時にライセンス面から見ても、ビルド前のソースファイルと一連の生成物をセットで保持して取り扱うことが望ましく。ですので、改めてこれらすべてをこのリプライに添付させていただきます。
より重要なことは、今後wpaに新たな問題(特に脆弱性)が発見され、さらなる対策版が必要になる可能性があることです。
そうなったときも、基本的には今回と同様に新たなソースファイルを取得して、同様にビルドして提供するという形になるはずです。
自己ビルドパッケージを利用する以上、そうした状況になることを想定して準備する(ビルドに慣れておく、環境を保持しておく)ことが望ましいかなと。
ひとまず、このような辺りについてご検討ください。
ファイル | ファイルの説明 |
---|---|
wpa_2.9.0-21_armhf.tar.gz |
matsuoka.yasufumi
matsuoka.yasufumi
at_takumi.mizutani
2022年10月14日 16時10分
お世話になっております、
アットマークテクノの水谷です。
お手数ですが、G3L上でAPの構築を行った際の、AP構築手順についてお教えいただけないでしょうか。
以上、よろしくお願いいたします。