我有一个带有单个 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,它是另一个您应该放弃的过时工具。