某项目攻关,某终端与某基于某国产芯片的设备做网络连接,发现相互ping不通。同时,商用RK3588板载电脑与终端的网络连接正常。
排查过程
- 终端的IP固定为某ip,设备上
bash
# 检查两端的物理连接
ethtool eth0
# 主要看返回的Speed\Duplex\Link detected,一次是速率、全双工、物理层是否通了
# 查路由决策,不发包
ip route get <xxx.xxx.xxx.xx>
#确认路由没有问题;
# 发ARP请求
arping -I <网卡名> <ip>
# 显示已发送N次探测(广播),已接受到0个响应。
# 查邻居表,记IP到MAC的map
arp -n
# 该ip的HWaddress值为incomplete
ip neigh show
# 同样显示该ip FAILED
检查发现设备网卡为千兆,终端网卡为百兆,
意外发现临时解决
在设备上要手动输入,解决了ping不通的问题,
bash
# 设置设备网卡为100M速率,全双工,并且关闭自协商
ethtool -s <网卡名> speed 100 duplex full autoneg off
# 然后再开启自协商
ethtool -s <网卡名> speed 100 duplex full autoneg on
该设备可能存在软硬件设计问题,如可能是前面ethtool查看到的配置状态是虚假的,然后上述两条指令重启了物理链路,消除了设备硬件配置问题,如清除之前的协商状态,重新建立链路。