iptables --append FORWARD 是否需要在 NIC 别名 IP 之间进行路由?

iptables --append FORWARD 是否需要在 NIC 别名 IP 之间进行路由?

我有一个带有单个 NIC 的 ubuntu 盒子。为了绑定多个服务(如 apache、dnsmasq 等),我将它们绑定到不同的别名(例如 eth0:0 等),其中一些别名位于完全不同的 IP 范围内。由于我的所有客户端计算机都使用我的 ubuntu 盒子作为其默认网关,我想知道此 iptables 规则是否必要:

iptables --append FORWARD --in-interface eth0:0 -j ACCEPT(这面向 10.2.0.0/24 上的客户端,而此框与 192.168.1.1 /24 上的 DSL 路由器通信)。我已经启用了 IP 转发等。

基本上,我想知道不同 IP 范围内的别名之间是否需要转发(我假设多个独立的 NIC 之间需要转发,但请记住我只有一个。

我为出站接口添加了以下 iptables 规则:

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE

谢谢

贾里德

答案1

不,严格来说您不需要这样做。您已经通过在 sysctl 中允许 IPv4 转发以及通过 MASQUERADE 规则明确说明了您想对来自 10.2.0.0/24 子网的数据包执行的操作。

如果你要实施非常严格的政策,那么你需要制定规则,例如一切未明确允许的行为都是被禁止的换句话说,如果你要使用最后一个 iptables 规则,

  iptables -t filter -j DROP

如果您不使用这个,或者不使用策略 DROP,那么您不需要明确允许通过该规则转发,因为您的内核已经被告知如何继续。但是如果您很严格,并且您的数据包冒着触及上述规则的风险,那么您最好使用它。

顺便说一句,不要使用 IP 别名,它们已被严重弃用。如果您已经启动并运行了 eth0,则以下命令

  ip addr add 10.2.0.1/24 dev eth0

会将新地址添加到同一网卡的不同子网中。您可以使用以下命令查看

  ip addr show

但不可以使用 ifconfig,它是另一个您应该放弃的过时工具。

相关内容