同一 WiFi 网络上的两台设备无法互相看到,除非手动设置 ARP 表

同一 WiFi 网络上的两台设备无法互相看到,除非手动设置 ARP 表

我最近开始遇到本地 WiFi 网络上的笔记本电脑设备(运行 Ubuntu 22.04)无法连接到两个独立的 Android 设备(均运行 SSHelper)的问题。在第一次尝试时,当我尝试从笔记本电脑 ping android1 时,我不断收到错误“目标主机无法访问”。但是,当我尝试从 android1 ping 笔记本电脑时,在出现大约 5 或 10 条相同的错误消息后,它突然开始工作了!

但是当我尝试用同样的方法从笔记本电脑连接到 android2 时,它却不起作用。经过一番折腾之后,我想到尝试手动将 android2 的 MAC 地址添加到笔记本电脑上的 ARP 表 (arp -s),突然它开始起作用了!几个小时后,我尝试从笔记本电脑连接到 android2,但它又不起作用了。ARP 表仍处于相同状态。这次我能够通过将笔记本电脑的 MAC 地址添加到 android2 上的 ARP 表来使其正常工作!(幸运的是 android2 是一个可 root 的设备!)

虽然这是一种解决方法,直到我弄清楚它为什么不起作用,但它并不能长期解决问题。此外,似乎我找到的每种解决方法在一段时间后都会停止工作,我还有很多事情要尝试!我该如何解决问题?我已经尝试过重新启动所有设备(这实际上是我尝试的第一件事,因为我似乎记得过去它确实有效),我查看了网络路由、子网掩码、ARP 表(在我手动强制将其放入其中之前,它显示“不完整”。)我觉得广播数据包或其他东西可能存在一些问题 - 可能是 WiFi 网络存在问题?

答案1

ARP 失败的原因可能是多播(在 Wi-Fi 环境中,包括广播)由于实施错误而失败,可能是在您的 Android 设备 Wi-Fi 驱动程序中,也可能是在您的 AP(无线路由器)中。Wi-Fi 上的多播很棘手,并且存在许多实施错误,无论是在 AP 中还是在客户端中。

从各种客户端对子网广播地址或所有主机多播地址 (224.0.0.1) 执行 ping 操作,并查看每种情况下谁响应或谁不响应,可能会对多播是否正常工作有所了解(警告:不幸的是,由于政策原因,Windows 并不总是喜欢响应广播或多播 ping,因此如果您没有收到 Windows 设备的响应,请不要感到惊讶)。

如果多播确实中断,重启 AP 可能会暂时解决问题,直到再次出现问题。即使错误出在客户端,重启 AP 也会强制客户端重新连接,这可能会导致一段时间内出现问题。

另一个测试是暂时不进行无线安全保护。Wi-Fi 上多播最棘手的部分与安全加密有关。因此,如果禁用安全保护可以解决问题(而不仅仅是暂时),那么它表明 WPA2 实现存在问题。当您重新打开安全保护时,请务必使用 WPA2(或更高版本)仅有的。即 AES-CCMP仅有的. 不应以任何方式启用或使用原始 WPA (TKIP)。WEP 也是如此。

如果是多播中断而不是安全性问题,则可能是 AP 的多播速率设置问题。确保将其设置为足够低的速率,以便网络上的所有设备都能可靠地接收。或者暂时将其设置为最低速率(2.4GHz b/g/n/ax 上为 1Mbps,5GHz a/n/ac/ax 上为 6Mbps)。

导致 Wi-Fi 上多播中断的最后一个潜在原因是多播流量过多。如果您在有线以太网 LAN 上进行任何类型的多播流,请确保已启用 AP 的“IGMP 侦听”功能,以防止其泛滥到您的 Wi-Fi 网络上。

相关内容