V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
shum02
V2EX  ›  Linux

arp 不回复

  •  
  •   shum02 ·
    shum-elli · 312 天前 · 2341 次点击
    这是一个创建于 312 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在公司开发一个小产品,用的嵌入式的 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 配置中的省电模式。

    第 1 条附言  ·  311 天前
    附一下两边抓到的包

    路由器上抓的包
    http://101.43.93.152:5244/d/company/tcpdump-2024-01-15%20(2).pcap

    板子上抓到的包
    http://101.43.93.152:5244/d/company/test33.pcap

    还有个奇怪的问题,路由器上抓 lan 口抓不到任何来自这个设备的包,但是 frp 服务是通的,可以连进去
    然后设备上抓得到这个包,地址是那个 220 的
    第 2 条附言  ·  311 天前
    附一下详细环境

    linux3.10.108 ubuntu20.04.3lts
    全志的 arm32 的 u a40i
    无线网卡 rtl8188eu 走在 usb 上的

    驱动已经重新编译过了 按照某代理商给的驱动来的

    再描述一下复现操作
    连接上无线网络之后大概一分钟到十分钟即会复现该问题
    问题具体来说 就是 ping 不通路由器即网关 发送 arp 命令响应缓慢 arp -n 就很快
    然后使用 ip neigh 正常响应,显示网关 mac 信息和 reachable

    这里有个细节就是按理来说这个 arp 表应该动态刷新,linux 下没抓到 arp 包但是他还是一直显示 reachable ,arp 的一个 base_reachable_time 设置的是 30s

    在板子上抓包收不到 arp 包,但是此时 frp 服务正常,且 tcp 包正常通信
    路由器端抓包可以看到路由器发出去的 arp 包但是没有回复,然后路由器端抓不到板子上收发的 frp 服务的 tcp 包

    恢复网络操作 ip neigh flush all 或 arping 网关地址
    第 3 条附言  ·  302 天前
    这个问题已经解决了,是一个比较愚蠢的小问题导致的,我们系统里有一个开热点的软件,叫做 hostapd ,这个软件的配置文件,配置的网卡配置的有问题,配置到了 wlan0 上,wlan0 是默认用来连接 wifi 的网卡,本来在驱动里开启了虚拟网卡,有个 wlan1 ,正常来说应该开在 wlan1 上,然后这个服务之前测试完就一直 enable 着。。驱动里也改了一大堆,看日志和我组长 debug 了一星期多。。然后打开手机看的时候发现这玩意自己开了个热点,想到去看了下配置文件,果然是。。。
    24 条回复    2024-01-16 08:38:09 +08:00
    ttvast
        1
    ttvast  
       312 天前
    嵌入式 linux 居然还用 systemd 和 networkmanager ?
    hingle
        2
    hingle  
       312 天前
    你同时使用了有线和无线?而且还是同网段?
    arp 打印慢是在获取主机名,加 -n 参数就会很快
    shum02
        3
    shum02  
    OP
       312 天前
    @hingle 没用,只是单独用一个
    shum02
        4
    shum02  
    OP
       312 天前
    @hingle 打印慢这个我一会试一下
    shum02
        5
    shum02  
    OP
       312 天前
    @ttvast 遗留产品,刚来两个月,实际上就是跑个数据库+几个 c 脚本,草台班子搭起来了也不好动了
    s82kd92l
        6
    s82kd92l  
       312 天前
    我之前的 linux 本子出现过这个问题,还提过问。后来改了路由器的 group rekey interval 就没问题了。 估计是 arp 走广播的,group key 过期了,软件又有些 bug 不续约就会这样
    saturn7
        7
    saturn7  
       312 天前
    估计是你们路由是多口流量,可以试试,把本机内核检测反向路由检测的严格模式关闭。查看本机反向路由状态:sudo sysctl -a | grep rp_filter
    shum02
        8
    shum02  
    OP
       312 天前
    @saturn7 看了下这个值都是 0 和 2
    shum02
        9
    shum02  
    OP
       312 天前
    @hingle 确实 arp -n 就快了
    shum02
        10
    shum02  
    OP
       312 天前
    @s82kd92l 这个我研究研究,那边测试现场是新华三的家用路由器,这边测试华为的 4g 路由器都有这个问题,感觉从路由器层面解决的话太麻烦了
    pagxir
        11
    pagxir  
       312 天前
    试试把 wifi 修改成开放 wifi,看看还存在问题么。换成开发 wifi 后,如果问题还存在,你需要在路由器上抓包,并且在板子也抓包,如果条件许可也抓一下 wifi 空口报文。
    shum02
        12
    shum02  
    OP
       312 天前
    @pagxir 开放 wifi 暂时还没修改过,但是抓包过了,要不我搞个链接上来,两头的抓的包都有
    zhangsanfeng2012
        13
    zhangsanfeng2012  
       311 天前
    接有线网络有问题吗
    shum02
        14
    shum02  
    OP
       311 天前
    @zhangsanfeng2012 有线网络暂时没发现这个问题
    zhangsanfeng2012
        15
    zhangsanfeng2012  
       311 天前
    @shum02 #14 把 wifi 省电模式关掉试试
    shum02
        16
    shum02  
    OP
       311 天前
    @zhangsanfeng2012 关了,解决方案里有试过了
    zhangsanfeng2012
        17
    zhangsanfeng2012  
       311 天前
    不会是 ip 有冲突吧,最好把两边 ip nei 和 ip 信息发出来看看
    shum02
        18
    shum02  
    OP
       311 天前
    @zhangsanfeng2012 没,都是路由器 dhcp 的,arping 路由或者 ip nei flush 之后就正常的,有两台在一样的网络环境下。路由器 ip 是 192.168.110.1 ,抓包放上来的那个设备 ip 是 192.168.110.147 ,还有一台设备 ip 是 192.168.110.62 ,路由器下面除了这俩设备别的设备没超过 10 个,没有冲突的 ip
    hingle
        19
    hingle  
       311 天前
    我看我这 Wireshark 上显示的路由器 MAC 地址是锐捷的?难道你那有多个 DHCP Server ?
    shum02
        20
    shum02  
    OP
       311 天前
    @hingle 不好意思,没注意搞错了,是锐捷的路由器。
    tubowen
        21
    tubowen  
       311 天前
    linux arp -n 看的结果是啥,学到路由器的 mac 地址没有
    shum02
        22
    shum02  
    OP
       311 天前
    @tubowen 学到了 这样的 arp -n
    Address HWtype HWaddress Flags Mask Iface
    192.168.110.1 ether 70:42:d3:c8:66:7c C wlan0
    datocp
        23
    datocp  
       311 天前 via Android
    以前一些无线网卡有问题
    最终系统里静态写入两电脑的 mac ip 对应表,保证 2 电脑打印机能互访就算解决
    shum02
        24
    shum02  
    OP
       311 天前
    @datocp 驱动已经更到 2019 年的了 感觉不应该这么基础的问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5333 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:55 · PVG 14:55 · LAX 22:55 · JFK 01:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.