客户端无法在 WLAN 上相互连接。没有回复 ARP 请求

客户端无法在 WLAN 上相互连接。没有回复 ARP 请求

我已经安装了带有接入点的 WLAN,可将客户端连接到互联网。起初一切似乎都工作正常,直到我注意到客户端无法相互通信。

详细信息如下: 一台机器通过 eth0 连接到互联网,并通过 wlan1 作为接入点。它正在运行hostapd,并且dnsmasq 正在使用 NAT 将其他客户端连接到互联网。

Client A             Client B
192.168.1.143        192.168.1.235
      \                /
       \              /
        \            /
         Access Point, AP
         wlan1: 192.168.1.1
         eth0:  192.168.0.xxx

至此,客户端可以成功连接互联网。他们可以连接(例如通过 ssh)到接入点。并且接入点可以通过 ssh 连接到客户端。

现在的问题是客户端 A 无法连接到客户端 B,反之亦然。在接入点上使用时tcpdump,我看到客户端 A 正在向客户端 B 发送 ARP 请求。但客户端 B 从未收到这些请求,因此无法回复。因此,客户端 B 的 arp 表条目不完整(反之亦然)。

出于测试目的,我使用 手动为两个客户端设置 arp 表条目arp -s <ip> <hw_addr>。现在一切都进展顺利。客户端可以相互连接,也可以连接到互联网。但实际上我不想为所有客户端计算机手动设置 arp 表条目。

现在,我的问题是:问题出在哪里? arp 表如何自动更新?我应该去哪里调查?是否是接入点(路由表、hostapd、dnsmasq...)上的问题?还是客户端机器有问题?

ps: 任何机器上都没有安装 arptables 规则:

$ arptables -L
Chain INPUT (policy ACCEPT)

Chain OUTPUT (policy ACCEPT)

编辑: 最后我发现了问题:

重新检查配置后,我最终使用另一个 USB Wifi 适配器对其进行了测试。我真的很惊讶地发现当时一切都正常。客户端正在接收并应答 ARP 请求。任意客户端之间的 Ping 和 ssh 也能正常工作。

为了确定起见,我又换回了第一个 USB Wifi 适配器。客户端再次没有收到(并应答)ARP 请求。因此我可以确认这不是 hostapd 配置或内核 arp 表的问题。问题出在 Wifi 适配器的驱动程序上。

详细信息如下:

  1. ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN 适配器

    • 无法正常工作。
    • 接入点会收到 ARP 请求,但客户端不会收到它们。
  2. ID 0bda:b812 瑞昱半导体公司

    • 工作令人满意。
    • 任意客户端之间的 ARP 请求和 ARP 应答均正常工作。

答案1

您可以设置配置,以便 ap_isolate = 0.

或者先设置ap_isolate = 1hair_mode(要求网桥通过同一接口将帧发回):

echo 1 > /sys/devices/virtual/net/br-lan/lower_wlan.name/brport/hairpin_mode

相关内容