在Linux服务器的2个网络接口上设置MASQUERADE可以吗?

在Linux服务器的2个网络接口上设置MASQUERADE可以吗?

有一台具有 3 个网络接口的 Linux 服务器。eth0, eth1, eth2该服务器已开启 IP 转发。

  1. eth0 连接到 10.0.1.0/24。其 IP 为10.0.1.1
  2. eth1 连接到 172.16.1.0/24。其 IP 为172.16.1.1。服务器 A 可以 ping 通位于 172.16.1.2 的路由器 C。
  3. eth2 连接到 192.168.1.0/24。其 IP 为192.168.1.1。服务器 A 可以 ping 通位于 192.168.1.2 的服务器 B。
  4. 路由器 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

相关内容