有一台具有 3 个网络接口的 Linux 服务器。eth0, eth1, eth2
该服务器已开启 IP 转发。
- eth0 连接到 10.0.1.0/24。其 IP 为
10.0.1.1
。 - eth1 连接到 172.16.1.0/24。其 IP 为
172.16.1.1
。服务器 A 可以 ping 通位于 172.16.1.2 的路由器 C。 - eth2 连接到 192.168.1.0/24。其 IP 为
192.168.1.1
。服务器 A 可以 ping 通位于 192.168.1.2 的服务器 B。 - 路由器 C 能够路由到 172.16.2.0/24 和 172.16.3.0/24。
[10.0.1.0/24] | 172.16.2.0/24------| | [C]------172.16.1.0/24------[A]------192.168.1.0/24------[B] 172.16.3.0/24------|
我们在 eth0 上设置了 MASQUERADE。当服务器 B(192.168.1.2)连接到 10.0.1.0/24 时,eth0 上将发生 IP MASQUERADE。
可以在 eth1 上设置 MASQUERADE 吗?在 Linux 中可以在多个网络接口上设置 MASQUERADE 吗?
答案1
是的,可以有多个MASQUERADE
规则。通常,每个规则都会匹配从特定接口发出的数据包,例如:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
第一条规则匹配出去的数据包eth0
,而第二条规则匹配出去的数据包eth1
。