我已经安装了一个无线局域网与接入点,连接客户端到互联网。起初,一切似乎都是正确的,直到我注意到客户之间无法沟通。
以下是详细信息:一台机器通过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)到达接入点。接入点可以直接发送到客户端。
现在的问题是客户端A不能连接到客户端B,反之亦然。通过在接入点上使用tcpdump,我看到客户机A正在为客户端B发送ARP请求,但是客户机B从未接收到这些请求,因此无法回复。因此,客户机B的arp表条目是不完整的(反之亦然)。
为了测试目的,我用arp -s <ip> <hw_addr>手动为两个客户端设置arp表条目。现在一切都很成功。客户端可以相互连接,也可以连接到意愿。但实际上,我不想手动为所有客户端计算机设置arp表条目。
现在,我的问题是:问题在哪里?如何自动更新arp表?我该去哪里查?在接入点(路由表、hostapd、dnsmasq、.)上有问题吗?或者是客户端机器上的问题?
ps:在任何机器上都没有安装arptable规则:
$ arptables -L
Chain INPUT (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)编辑:最后我发现了这个问题:
在重新检查配置之后,我最终用另一个USB适配器对其进行了测试。我很惊讶地发现当时一切都很正常。客户正在接收和答复ARP请求。武断客户之间的Ping和ssh也在起作用。
为了确定,我换回了第一个USB适配器。同样,客户端也没有接收到(并答复) ARP请求。因此,我可以确认,这不是主机配置或内核arp表的问题。问题是Wifi适配器的驱动程序。
以下是详细信息:
发布于 2021-04-17 05:00:54
您可以将配置设置为ap_isolate = 0。
或者设置ap_isolate = 1,然后设置hair_mode (它要求网桥通过相同的接口将帧发回):
echo 1 > /sys/devices/virtual/net/br-lan/lower_wlan.name/brport/hairpin_modehttps://unix.stackexchange.com/questions/645513
复制相似问题