arp 不回复

2024-01-15 09:42:56 +08:00
 shum02

在公司开发一个小产品,用的嵌入式的 linux ,然后用无线模块连 Wifi ,最近更新了一个版本,禁用了 Systemd-networkd 和 Systemd-resolvd ,然后出现了一个奇怪的 bug ,为什么禁用这两个呢,前者是无线管理用 NetworkManager 了,有线之前是 networkd 的,想统一到 Nm 上,后者是因为 Systemd-resolvd 之前使用的时候,遇到偶发性的 Dns 无法解析的问题,于是就关了这玩意,直接让 NetworkManager 管理 dns ,底层用 resolvconf 管理。

然后现在的 Bug 是大概连上 Wifi 或 dhcp 续约十分钟之后,路由器发到板子上的 arp 包就不回复了,但是呢奇怪的点是板子上跑的 Frp 服务可以正常通信,抓包这个 frp 的 tcp 包也正常,路由器上抓包的话就是显示 arp 发包不回复。Wifi 用的是 2.4g 的 wifi 模块 rtl 的。然后比较显著的现象就是本来 linux 打 arp 会秒回,如果 arp 不回复即断网之后,arp 命令需要很长一会时间才有打印,然后目前尝试到的解决方案就是在 linux 中清空 arp 缓存就好了,之前还没有出现过这个 bug 。

尝试过的解决方案:关闭路由器双频合一,关闭 Wifi6 ,wifi 频段从 40mhz 调到 20mhz ,关闭 NetworkManager 配置中的省电模式。

2434 次点击
所在节点    Linux
24 条回复
ttvast
2024-01-15 10:46:36 +08:00
嵌入式 linux 居然还用 systemd 和 networkmanager ?
hingle
2024-01-15 10:54:29 +08:00
你同时使用了有线和无线?而且还是同网段?
arp 打印慢是在获取主机名,加 -n 参数就会很快
shum02
2024-01-15 11:09:39 +08:00
@hingle 没用,只是单独用一个
shum02
2024-01-15 11:10:13 +08:00
@hingle 打印慢这个我一会试一下
shum02
2024-01-15 11:11:27 +08:00
@ttvast 遗留产品,刚来两个月,实际上就是跑个数据库+几个 c 脚本,草台班子搭起来了也不好动了
s82kd92l
2024-01-15 11:57:36 +08:00
我之前的 linux 本子出现过这个问题,还提过问。后来改了路由器的 group rekey interval 就没问题了。 估计是 arp 走广播的,group key 过期了,软件又有些 bug 不续约就会这样
saturn7
2024-01-15 12:00:50 +08:00
估计是你们路由是多口流量,可以试试,把本机内核检测反向路由检测的严格模式关闭。查看本机反向路由状态:sudo sysctl -a | grep rp_filter
shum02
2024-01-15 13:18:24 +08:00
@saturn7 看了下这个值都是 0 和 2
shum02
2024-01-15 13:46:12 +08:00
@hingle 确实 arp -n 就快了
shum02
2024-01-15 13:54:43 +08:00
@s82kd92l 这个我研究研究,那边测试现场是新华三的家用路由器,这边测试华为的 4g 路由器都有这个问题,感觉从路由器层面解决的话太麻烦了
pagxir
2024-01-15 14:02:22 +08:00
试试把 wifi 修改成开放 wifi,看看还存在问题么。换成开发 wifi 后,如果问题还存在,你需要在路由器上抓包,并且在板子也抓包,如果条件许可也抓一下 wifi 空口报文。
shum02
2024-01-15 14:04:44 +08:00
@pagxir 开放 wifi 暂时还没修改过,但是抓包过了,要不我搞个链接上来,两头的抓的包都有
zhangsanfeng2012
2024-01-15 15:12:45 +08:00
接有线网络有问题吗
shum02
2024-01-15 15:13:58 +08:00
@zhangsanfeng2012 有线网络暂时没发现这个问题
zhangsanfeng2012
2024-01-15 15:39:45 +08:00
@shum02 #14 把 wifi 省电模式关掉试试
shum02
2024-01-15 15:50:03 +08:00
@zhangsanfeng2012 关了,解决方案里有试过了
zhangsanfeng2012
2024-01-15 15:57:52 +08:00
不会是 ip 有冲突吧,最好把两边 ip nei 和 ip 信息发出来看看
shum02
2024-01-15 16:11:44 +08:00
@zhangsanfeng2012 没,都是路由器 dhcp 的,arping 路由或者 ip nei flush 之后就正常的,有两台在一样的网络环境下。路由器 ip 是 192.168.110.1 ,抓包放上来的那个设备 ip 是 192.168.110.147 ,还有一台设备 ip 是 192.168.110.62 ,路由器下面除了这俩设备别的设备没超过 10 个,没有冲突的 ip
hingle
2024-01-15 16:27:40 +08:00
我看我这 Wireshark 上显示的路由器 MAC 地址是锐捷的?难道你那有多个 DHCP Server ?
shum02
2024-01-15 16:29:28 +08:00
@hingle 不好意思,没注意搞错了,是锐捷的路由器。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/1008661

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX