echo "200 rj45" >> /etc/iproute2/rt_tables
echo "201 WIFI" >> /etc/iproute2/rt_tables
ip route add default via 192.168.5.9 dev eth0
ip rule add from 192.168.5.8/24 table rj45
ip rule add from 192.168.61.128/24 table WIFI
ip route add default via 192.168.5.9 dev eth0 table rj45
ip route add default via 192.168.61.38 dev wlan0 table WIFI
iptables -t nat -A POSTROUTING -s 10.196.0.0/16 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.196.0.0/16 -o wlan0 -j MASQUERADE
ip route flush cache
你好。上述命令是在 Linux 服务器 1 启动时输入的。
在Linux服务器1中,有3个接口。 2个接口是WAN接口,eth0具有192.168.5.8/24 IP,wlan0 具有192.168.61.128/24 IP。另一个接口是LAN ,IP为10.196.3.254/16。
Linux 服务器 1 eth0通过IP 192.168.5.9/24连接到Linux 服务器 2 eth0。
上述策略路由命令是针对Linux策略路由实现的。默认路由是 rj45,但在某些情况下默认路由更改为 WIFI。
当以下 NAT iptables 命令不生效时,我遇到问题,特别是使用命令ip Rule add from 192.168.5.8/24 table rj45。当客户端IP 10.196.3.253/16 ping 192.168.5.9时,这是Linux Server 1 eth0的子网。 如果10.196.3.253 ping 192.168.3.9哪个Linux服务器2别名IP,就可以ping通。
Linux 服务器 2 上的 tcpdump -i eth0 icmp 显示它尝试回复 10.196.3.253 的 icmp ping,这意味着 ICMP ping 很可能不是 NAT。下面是输出
12:31:14.519000 IP 192.168.5.8 > 192.168.5.9: ICMP echo request, id 4213, seq 155, length 64
12:31:14.519018 IP 192.168.5.9 > 192.168.5.8: ICMP echo reply, id 4213, seq 155, length 64
12:31:14.520018 IP 192.168.5.9 > 10.196.3.253: ICMP echo reply, id 4213, seq 155, length 64
知道为什么 NAT 在此设置中不起作用吗?为了清晰起见,下面是网络图。