我有多个 ethX 接口。
eth0
已连接到互联网。eth1
已连接到受信任的网络。eth2
连接到网络我需要施加使用规则。
我想做的就是分开eth1
并eth2
进入他们自己的链(可信/不可信),只是为了维护“容易看到”的规则。
:INPUT DROP
-A INPUT ! -i eth0 -j ACCEPT # allows INPUT on traffic not internet based
... # More rules for eth0 allowing PING and shunting most everything else
-A INPUT -i eth1 -j trusted
-A INPUT -i eth2 -j untrusted
由于这些问题,OUTPUT 和 FORWARD 当前设置为 ACCEPT。
就目前而言,eth1
只是跳到连锁假面舞会,目前这完全没问题,但困惑在于如何操纵,eth2
因为它在我的尝试中效果不佳。
我的猜测是列出所有允许的端口/协议,但到目前为止它不起作用,因为通过连接的设备eth2
无法到达任何东西,甚至防火墙服务器的 DNS/DHCP 也无法到达。
:untrusted
-A untrusted -i eth2 -p tcp -m tcp --dport 80 -j ACCEPT
我需要的基本上是一组“说”以下内容的规则:
- 如果传出互联网流量
eth0
未 PING,则丢弃 - 如果
eth1
连接到互联网 (eth0
),请接受它 - 如果
eth2
通过 TCP 端口 80 访问互联网,请接受它,放弃其他所有内容。 - 要访问互联网,请使用伪装通过
eth0
任何想法/建议将不胜感激!
答案1
-A OUTPUT -o eth0 -p icmp --icmp-type ping -j ACCEPT
-A OUTPUT -o eth0 -j DROP
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth2 -o eth0 -p tcp --dport 80 -j ACCEPT
-A FORWARD -i eth2 -o eth0 -j DROP
-A FORWARD -i eth0 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
*nat
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
将最后一行的网络更改192.168.2.0/24
为网络;eth2
这样,只有源自eth2
网络的数据包才会被伪装。
我还更喜欢显式添加一条规则来在链的末尾丢弃数据包,而不是依赖策略。
这应该涵盖您问题中的要点。