允许来自除一个接口之外的多个接口的 INPUT 的最简洁的单个 iptables 规则是什么?

允许来自除一个接口之外的多个接口的 INPUT 的最简洁的单个 iptables 规则是什么?

我在网络边缘设置了运行 Ubuntu x64 的组合防火墙 (iptables)、路由器、DHCP 和 DNS 设备。一切工作正常,但我希望将防火墙规则的数量保持在最低限度,因为边缘设备的配置文件会随着时间的推移而发生变化,例如当向其中添加其他 VLAN(在本例中为 VLAN=专用 NIC)或服务时。

假设以下情况:

wan0= 广域网/互联网接入

ens123= 局域网/VLAN235

ens456= 服务器/VLAN245

ens789= 实验室/VLAN335

目前,它使用类似于以下的 INPUT 规则来允许内部机器访问其服务:

# allow DNS from lan
-A INPUT -i ens123 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i ens123 -p udp -m udp --dport 53 -j ACCEPT

# allow DNS from servers
-A INPUT -i ens456 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i ens456 -p udp -m udp --dport 53 -j ACCEPT

# allow dns from lab
-A INPUT -i ens789 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i ens789 -p udp -m udp --dport 53 -j ACCEPT


从网上的 iptables 文档和示例来看,使用 bang ( !) 似乎有帮助,因为它只将 WAN NIC 列入黑名单,从而允许一切别的从各个 VLAN 内部连接到边缘。

但是,当我改用以下规则时,多个 VLAN 内的机器将无法再访问边缘设备上运行的 DNS 服务:

# allow DNS from not-wan
-A INPUT -i !wan0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i !wan0 -p udp -m udp --dport 53 -j ACCEPT
  1. 我是否忽略了新规则中的一些小问题?
  2. 如果没有,您认为使用 iptables 来管理此类设置的简单方法是什么?

由于这种性质,简单的线路 + 更少的线路 = 更好。让我限定一下:如果突然将多个 VLAN 添加到网络/边缘,我真的更希望根本不需要接触防火墙;或者,如果将另一个服务添加到边缘,则只需为端口添加一两个规则。

答案1

您应该在 前面加上“感叹号”(!-i,因为接口名称可以由 组成!

相关内容