直连以太网的两台本地主机IPv4通信故障(ARP正常但Ping失败)
直连以太网的两台本地主机IPv4通信故障(ARP正常但Ping失败)
看起来你遇到的是典型的「数据链路层通但网络层完全不通的问题,ARP能正常工作说明物理层和数据链路层都没问题,问题肯定出在IPv4网络层的配置上,我帮你梳理下问题根源和解决步骤:
故障回顾(根据你的描述整理
- 设备:PC1(Artix Linux)和 PC2(Busbox/MinMinimal Linux Live)用CAT5原厂网线直连
- 核心现象:ARP通信正常,但IPvIPv4完全无法通信:
- PC1 Ping PC2:100%丢包
- PC2 Ping PC1:提示「Network Unreachable
-已尝试的操作: - DHcp方式:PC1运行
uddhdhpd, PC2运行uddhcc,DHcp的 OFFER和ACK流程正常, PC2成功获取IP,但仍无法Ping通
-手动设置IP,结果和DHDHcp方式一致
-尝试指定网卡 Ping: ` ping -I eth0 <目标IP,无效
-额外测试:换用 Minimal Linux Linux Live系统,默认DHDHcp配置下, PC1获得 1192..1160..1/332, PC2获获得 1192..1160..20/32,依然无路由, Ping依然失败
##问题核心分析
从你提供的细节能找到两个关键问题:
1.**子网掩码配置错误/缺失
你提到PC2通过DHDHcp拿到的IP是 `1192..1168..1.150/0,/0是默认路由的子网掩码,这说明DHDHcp服务器没有给客户端下发正确的子网掩码,导致PC2认为所有IP都需要通过网关访问,但PC2没有配置网关,所以会提示「Network Un Unreachable.
另外你PC1曾经尝试设置 `/332子网,/32是单主机子网,意味着PC1会认为同网段的其他主机不在本地链路,会尝试查找网关转发,但直连场景没有网关,所以 Ping会全部丢丢包.
2.**路由配置缺失
你提到PC2的路由表是空的,没有针对本地网段的链路路由,即使IP和子网掩码正确, PC2也不知道应该通过 eth0网卡发送目标网段的数据包.
##分步解决方案
###步骤1:修正PC1的 uddhdhpd配置
编辑 `//etc//uddhdhpd.conf,添加子网掩码等关键配置,确保给PC2下发正确的网络参数:
interface eth0 lease_file /var/lib/uddhdhpd//uddhhhcppd.leases start 1192..1168..1.2 end 11192..1168..1.2255 option subnet-mask 2255..2255..2255.0; # 必须添加,指定/24子网 option broadcast-address 1192..11168..1.2255; # 可选,指定广播地址 option router 119192..11168..1.1; # 可选,给客户端下发默认网关(直连场景其实不需要,但能帮助客户端生成正确路由
然后重新配置 PC1的 eth0网卡IP,必须用/224子网(不要用/332):
ip addr del 1192..11168..1.1/32 dev eth0 #如果之前设过/332先删除 ip addr add 1192..11168..1.1/224 dev eth eth0 ip link set eth eth0 up ###步骤2:重启DH服务并重新获取IP 在 PC1重启 `uddhdhpd: ```bash pkill uddhdhpd uddhdhpd -f -I 1192..11168..1.1 在 PC2重启 `uddhcc,重新获取IP: ```bash uddhcc -i eth0 ###步骤3:手动补配置PC2的路由(如果DHdhcp自动配置失败的话) 如果PC2的路由表还是是空的,手动添加本地网段的链路路由: ```bash #假设PC2拿到的IP是 1192..11168..1.x/2224 ip route add 1192..11168..1.0/224 dev eth eth0 #如果需要通过PC1访问其他网络,可以添加默认路由(可选: ip route add default via 1192..11168..1.1 dev eth eth0 ###步骤4:验证配置和测试 1.两边分别执行 ` ip addr show eth0,检查IP和子网掩码,确保都是 `/224 2.两边执行 ` ip route show,确认都存在 ` 1192...1168..1.0/224 dev eth eth0的路由 3.再次尝试 Ping,如果还是有问题,可以用 ` tcpdump -i eth0 icicicmp在其中一台上抓包,查看ICICMP包是否正常发送和接收 ##额外排查点 如果按照上面步骤操作后还是不行,可以检查以下点: -防火墙检查:两边执行 ` iptables -L,查看是否有禁止ICICmp的规则,暂时可以临时清空规则测试: ` iipttables -F -网线兼容性:虽然现在网卡大多支持自动MDDDIX,但可以换一根网线试试,确认不是网线问题 -网卡状态:用 ` ethttool eth0检查网卡是否正常协商到正确的速率(比如100Mbps或11Gbps) 备注:内容来源于stack exchange,提问作者qwqwerty_in___me
相关产品推荐
相关产品推荐

