我有两块微控制器板,上面有相同的 Wifi 模块。其中一块板充当接入点 (AP),另一块板充当站点 (STA),在 AP 处于覆盖范围内时尝试与其建立连接。
我只使用链路本地 IPv6 地址。奇怪的是,如果我在链路本地多播地址 (ff02::1) 上 ping,STA 第一次连接到 AP 时,它会正常工作。断开并重新连接到 AP 后,我无法再 ping 到链路本地多播地址,尽管我可以 ping 到 AP 的 IPv6 链路本地地址 (fe80:xx)。
如果我重置 STA 端的接口,我可以再次 ping 到 STA。有什么想法可以解决无法访问链接本地地址的问题吗?整个过程必须自动化,即不需要用户进行任何交互。
以下是一个示例会话:
STA首次连接AP
wpa_supplicant -c /etc/wpa_supplicant.conf -Dnl80211 -iwlan0
链路本地多播工作正常
ping6 -I wlan0 ff02::1
断开连接并重新连接
杀死所有 wpa_supplicant wpa_supplicant -c /etc/wpa_supplicant.conf -Dnl80211 -iwlan0
链路本地多播不起作用
ping6 -I wlan0 ff02::1 connect: 网络不可达
仅链路单播工作正常
ping6 -I wlan0 fe80:xx
打开和关闭网络接口可以解决问题
ip link set wlan0 down && ip link set wlan0 up ping6 -I wlan0 ff02::1 #有效
答案1
问题出在 systemd 网络设备文件上。只需删除这些文件并重新启动即可解决问题。