跨树莓派双网卡组网:PC与RPi-2无法互Ping,请求技术排查
解决RPi-2与PC跨子网Ping不通的问题
当前环境与问题梳理
先把你的组网、排查情况和关键信息整理清楚:
组网拓扑
- PC(以太网) ↔ raspberrypi(以太网)
- raspberrypi(无线) ↔ RPi-2(无线)
核心问题
RPi-2和PC互相Ping不通,但以下连通性是正常的:
- PC能Ping通raspberrypi的以太网(
192.168.137.254)和无线网卡(10.1.1.254) - RPi-2也能Ping通raspberrypi的两块网卡
- PC已经关闭了防火墙
最新关键线索:raspberrypi不回复ARP请求,这是导致通信失败的核心疑点。
IP信息汇总
- PC.eth:
192.168.137.1 - raspberrypi.eth:
192.168.137.254 - raspberrypi.wlan:
10.1.1.254 - RPi-2.wlan:
10.1.1.4
问题根源分析
从IP段就能看出,PC在192.168.137.0/24子网,RPi-2在10.1.1.0/24子网,属于不同网段。raspberrypi作为两个子网的连接点,必须开启IP转发才能让跨网段流量通行;而它不回复ARP请求,很大概率是因为IP转发未开启,或者ARP代理功能缺失,导致跨网段的ARP请求无法被正确处理。
分步解决方案
1. 开启raspberrypi的IP转发(核心前提)
树莓派默认关闭IP转发,这是跨子网通信的基础:
- 临时开启(重启后失效,先用于测试):
sudo sysctl -w net.ipv4.ip_forward=1 - 永久开启(修改配置文件,重启也生效):
编辑/etc/sysctl.conf,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#,然后执行:sudo sysctl -p /etc/sysctl.conf
2. 开启ARP代理解决ARP不回复问题
由于PC和RPi-2不在同一子网,raspberrypi需要充当ARP代理,才能转发并回复跨网段的ARP请求:
- 临时开启两块网卡的ARP代理:
sudo sysctl -w net.ipv4.conf.eth0.proxy_arp=1 sudo sysctl -w net.ipv4.conf.wlan0.proxy_arp=1 - 永久生效:把上面两行添加到
/etc/sysctl.conf末尾,再执行sudo sysctl -p。
3. 给PC和RPi-2配置静态路由
即使raspberrypi开启了转发,PC和RPi-2也需要明确“访问对方子网的流量要发往raspberrypi”:
PC端(Windows系统)配置静态路由:
以管理员权限打开命令提示符,执行:route add 10.1.1.0 mask 255.255.255.0 192.168.137.254 -p参数
-p用于让路由规则永久生效,重启PC不会丢失。RPi-2端配置静态路由:
临时添加路由:sudo ip route add 192.168.137.0/24 via 10.1.1.254 dev wlan0永久生效:编辑
/etc/dhcpcd.conf,添加一行:static route=192.168.137.0/24/10.1.1.254然后重启dhcpcd服务:
sudo systemctl restart dhcpcd
4. 检查raspberrypi的防火墙规则
虽然PC关闭了防火墙,但raspberrypi自身的iptables规则可能拦截了跨子网流量或ARP请求:
- 查看当前iptables规则:
sudo iptables -L -n - 临时清空规则测试(测试后如果正常,再重新配置合规的规则):
sudo iptables -F sudo iptables -X sudo iptables -t nat -F sudo iptables -t nat -X sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT
验证步骤
配置完成后,按以下顺序确认效果:
- 在raspberrypi上执行
sysctl net.ipv4.ip_forward,确认输出为net.ipv4.ip_forward = 1 - 在PC上Ping
10.1.1.4,同时在raspberrypi上抓包查看流量:
观察是否有ARP请求和ICMP包的转发记录sudo tcpdump -i eth0 arp or icmp sudo tcpdump -i wlan0 arp or icmp - 反过来在RPi-2上Ping
192.168.137.1,同样抓包验证流量是否正常经过raspberrypi。
内容的提问来源于stack exchange,提问作者stepj
相关产品推荐
相关产品推荐

