問題の説明
systemd-networkd
ネットワーク管理に使用される組み込みLinuxシステムがあります。約半分の間、デバイスは30秒以内にWifi APに接続し、DHCPを介してIPv4アドレスを取得できます。それ以外の場合は、システムログに認証と接続が表示されますが、デバイスはIPv4アドレスを取得できません。 IPを受信せずに5分以上待ちました。
構成
/etc/systemd/network/wlan0.network
1)設定ファイルは次のとおりです。
[Match]
Name=wlan0
[Network]
DHCP=ipv4
IPv6AcceptRA=no
LinkLocalAddressing=no
.network
ファイル設定も次のように指定しましたDHCP=yes
。結果は同じように見えます。
/etc/wpa_supplicant.conf
2)ファイルは次のとおりです。
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
country=US
network={
ssid=<my SSID>
psk=<my key>
}
3)必要に応じてインターフェースを手動で起動する[email protected]
ため、私のファイルを設定していません。wpa_supplicant
他のネットワーク管理者(NetworkManager、connmanなど)はインストールされません。私はDHCPツール(dhclient、dhcpcd)を起動しませんでした。これを達成するために、systemd-networkの内部に依存しました。
デバッグ
dmesg | tail
1)以下は、IPアドレスを取得するかどうかに関係なく発生する接続を示す出力です。
[ 846.988274] ieee80211 phy1: WMM Turbo=1
[ 847.312843] wlan0: authenticate with <AP MAC addr>
[ 847.329052] wlan0: send auth to <AP MAC addr> (try 1/3)
[ 847.334566] wlan0: authenticated
[ 847.352271] wlan0: associate with <AP MAC addr> (try 1/3)
[ 847.362762] wlan0: RX AssocResp from <AP MAC addr> (capab=0x1011 status=0 aid=1)
[ 847.373968] wlan0: associated
[ 847.391864] wlan0: Limiting TX power to 24 (24 - 0) dBm as advertised by <AP MAC addr>
この出力はドライバから出てくるので、「関連があります」と言う以外に、一般的な意味ではあまり意味がありません。
2)一部のブログ/投稿では、DHCPの再ネゴシエーションをトリガするためのコマンドとsystemctl restart systemd-networkd
同じコマンドを使用することを提案しています。ifconfig wlan0 down && ifconfig wlan0 up
時には後者のコマンドが動作することがあります。ほんの数秒待っても効果があるかどうかはわかりませんが。
3) すべてが正常な場合、次のログが表示されます。
Apr 25 12:41:43 host systemd-networkd[511]: [[0;1;39m[[0;1;31m[[0;1;39mwlan0: found matching network '/etc/systemd/network/wlan0.network', based on potentially unpredictable ifname[[0m
Apr 25 12:41:43 host systemd-networkd[511]: wlan0: IPv6 successfully disabled
Apr 25 12:41:48 host systemd-networkd[511]: wlan0: Gained carrier
Apr 25 12:41:48 host systemd-networkd[511]: wlan0: DHCPv4 address 10.217.244.165/8 via 10.128.128.128
Apr 25 12:41:48 host systemd-networkd[511]: wlan0: Configured
問題が発生した場合は、「wlan0:一致するネットワークが見つかりました...」というメッセージのみが表示されます。
4) 類似dmesg
:iw wlan0 link
IP が得られなくても、AP への接続は常に表示されます。
$ iw wlan0 link
Connected to <AP MAC addr> (on wlan0)
SSID: <AP name>
freq: 5200
RX: 87243 bytes (416 packets)
TX: 3038 bytes (11 packets)
signal: -60 dBm
tx bitrate: 6.0 MBit/s
bss flags: short-slot-time
dtim period: 1
beacon int: 100
編集:ドライバには、「iw wlan0リンクコマンドの出力が常に接続されている帯域の最も低いデータレートでビットレートを表示します」という既知のバグがあります。したがって、6.0MBit/s は間違っています。ただし、信号レベルは正確でなければなりません。
質問
このタスクを確実に実行するためのデバッグや設定に関する追加の提案がある人はいますか?これがドライバの問題なのか、システムの問題なのか、ネットワークの問題なのかはわかりません。
ベストアンサー1
主に6MbpsのTX速度である信号で判断すると、レイヤ2には明らかに改善が必要な問題があります。安定したサービスを保証するのに十分な信号はありません。
信号強度が向上すると、DHCPの問題は消えます。
TLDRの問題自体はUnixに限定されていません。