systemd-networkd - wifi有时无法连接

systemd-networkd - wifi有时无法连接

问题陈述

systemd-networkd我有一个用于网络管理的嵌入式Linux系统。大约一半的情况下,设备可以在 30 秒内连接到 Wifi AP 并通过 DHCP 获取 IPv4 地址。在其他情况下,系统日志显示身份验证和关联,但设备未获取 IPv4 地址。我已经等了 5 分钟或更长时间没有获得 IP。

配置

1)这是/etc/systemd/network/wlan0.network配置文件:

[Match]
Name=wlan0
[Network]
DHCP=ipv4
IPv6AcceptRA=no
LinkLocalAddressing=no

我还进行了.network文件设置,仅DHCP=yes此以下内容。结果看起来是一样的。

2)这是/etc/wpa_supplicant.conf文件:

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 内部组件来实现这一点。

调试

1) 这是显示关联的输出dmesg | tail,无论是否获取 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) 一些博客/帖子建议使用systemctl restart systemd-networkd和等命令ifconfig wlan0 down && ifconfig wlan0 up来触发 DHCP 重新协商。有时后一个命令有效......尽管我无法判断仅仅等待几秒钟是否会产生一些影响。

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) 与 类似dmesgiw 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 link 的输出始终将比特率显示为所连接频段的最低数据速率。”所以 6.0 MBit/s 是错误的。然而,信号电平应该是正确的。

问题

有人对调试或配置有进一步的建议以使其可靠地工作吗?我不清楚这是驱动程序问题、系统问题还是网络问题。

答案1

从您的信号来看,主要是 6Mbps 的 TX 速率,第 2 层显然存在需要改进的问题。信号不够强,无法保证可靠的服务。

一旦信号强度提高,DHCP问题就会消失。

TLDR 问题本身不在于 Unix 方面。

相关内容