我在网络边缘设置了运行 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
- 我是否忽略了新规则中的一些小问题?
- 如果没有,您认为使用 iptables 来管理此类设置的简单方法是什么?
由于这种性质,简单的线路 + 更少的线路 = 更好。让我限定一下:如果突然将多个 VLAN 添加到网络/边缘,我真的更希望根本不需要接触防火墙;或者,如果将另一个服务添加到边缘,则只需为端口添加一两个规则。
答案1
您应该在 前面加上“感叹号”(!
)-i
,因为接口名称可以由 组成!
。