Ubuntu双内网子网PC无法互访的iptables配置解决方案求助
Ubuntu双内网子网PC无法互访的iptables配置解决方案求助
您好,我来帮您解决这个跨子网设备互访的问题~
首先咱们理清问题根源:您的PC1和PC2分别在10.10.10.0/24和10.10.20.0/24两个不同子网,虽然您已经开启了IPv4转发并配置了NAT上网规则,但目前的iptables规则只允许内网接口的输入流量,没有开放两个内网接口之间的转发流量,这就导致两个子网的设备无法互相通信。另外还要确保两台PC的路由配置正确,让它们知道跨子网的流量要走您的Ubuntu主机。
接下来按步骤操作就能解决问题:
1. 确认Ubuntu主机的内网接口IP配置(前提)
您需要给两个内网网卡设置对应子网的网关IP:
- 给
enp2s0设置10.10.10.1/24 - 给
enp3s0设置10.10.20.1/24
可以通过netplan或nmcli工具配置,确保配置重启后生效。
2. 添加iptables跨子网转发规则
在终端执行以下命令,允许两个内网子网之间的双向流量转发:
# 允许enp2s0子网访问enp3s0子网 sudo iptables -A FORWARD -i enp2s0 -o enp3s0 -j ACCEPT # 允许enp3s0子网访问enp2s0子网 sudo iptables -A FORWARD -i enp3s0 -o enp2s0 -j ACCEPT
3. 配置两台PC的路由
确保两台PC的跨子网流量能找到正确路径:
- PC1:将默认网关设置为
10.10.10.1(Ubuntu主机enp2s0的IP),或者添加静态路由:# Windows PC执行此命令 route add 10.10.20.0 mask 255.255.255.0 10.10.10.1 # Linux/macOS PC执行此命令 sudo ip route add 10.10.20.0/24 via 10.10.10.1 - PC2:将默认网关设置为
10.10.20.1(Ubuntu主机enp3s0的IP),或者添加静态路由:# Windows PC执行此命令 route add 10.10.10.0 mask 255.255.255.0 10.10.20.1 # Linux/macOS PC执行此命令 sudo ip route add 10.10.10.0/24 via 10.10.20.1
4. 保存iptables规则(避免重启失效)
Ubuntu 22.04可以用iptables-persistent工具保存规则:
sudo apt update && sudo apt install iptables-persistent # 保存当前规则 sudo netfilter-persistent save # 加载规则验证生效 sudo netfilter-persistent reload
验证效果
配置完成后,在PC1上ping PC2的IP10.10.20.2,在PC2上ping PC1的IP10.10.10.2,如果能ping通,说明跨子网通信正常,此时游戏的局域网会话应该就能互相看到了。
备注:内容来源于stack exchange,提问作者Mohammad Muwafi
相关产品推荐
相关产品推荐

