我有一个嵌入式Linux系统,它使用systemd-networkd进行网络管理。大约有一半的时间,设备可以连接到Wifi,并通过DHCP在30秒内获得一个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)我没有为wpa_supplicant@wlan0.service配置自己的wpa_supplicant文件,因为我是在需要接口时手动启动它的。没有安装其他网络管理器(NetworkManager、connman等)。我不会启动任何DHCP工具(dhclient,dhcpcd);我依赖于系统-网络内部。
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的重新协商。有时,我无法判断后一个命令works...although,仅仅等待几秒钟是否会产生一些影响。
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总是显示与AP的连接,即使没有获得IP:
$ 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.0 MBit/s是假的。然而,信号水平应该是正确的。
有人对调试或配置有进一步的建议,以使这一工作可靠吗?我不清楚这是驱动程序问题、系统问题还是网络问题。
发布于 2019-04-25 14:32:25
从您的信号和主要的TX速率在6 6Mbps,有明显的问题,在第二层,必须改进。信号不足以保证可靠的服务。
一旦信号强度提高,DHCP问题就会消失。
TLDR问题并不在事物本身的Unix方面。
https://unix.stackexchange.com/questions/515460
复制相似问题