Big*_*uge 16 domain-name-system firewall iptables hostname ip-address
除了一些列入白名单的网站外,我的网络已完全锁定。这一切都是通过 iptables 完成的,它看起来像这样:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 11.12.13.0/24 -j ACCEPT
iptables -A zone_lan_forward -p tcp -d 101.102.103.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 101.102.103.0/24 -j ACCEPT
...
Run Code Online (Sandbox Code Playgroud)
显然,这些地址是假设的,但您明白了。我的防火墙变得巨大。如果我可以这样做,维护起来会容易得多:
# Allow traffic to google.com
iptables -A zone_lan_forward -p tcp -d google.com -j ACCEPT
iptables -A zone_lan_forward -p udp -d google.com -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我相信这是可能的,因为man iptables
说:
地址可以是网络名称、主机名(请注意,指定要通过远程查询解析的任何名称,例如 DNS 是一个非常糟糕的主意)、网络 IP 地址(使用 /mask)或普通 IP 地址。
但我担心的是“指定要解析的任何名称...... DNS 是一个非常糟糕的主意”的部分。为什么这是一个坏主意?它只是减慢了一切吗?
如果我真的不应该在 iptables 规则中使用主机名,那么我应该怎么做来简化我的防火墙?
Zor*_*che 30
如果您的目的是阻止 HTTP 访问,那么您通常最好设置一款旨在在该级别进行过滤的软件(例如 squid+squidquard)。
jef*_*aid 10
如果您在防火墙中使用主机名,则您的防火墙现在依赖于 DNS。这使防火墙面临许多问题:
如果您使用主机名而您不控制 DNS,那么其他人可以有效地控制您的 IPtables 规则。错误、错误或安全问题最终会成为您的问题。
我唯一一次看到主机名使用得很好是用于内部操作。我曾在通过 DHCP 分配 IP 和主机名的办公室工作。防火墙使用主机名在不同组之间设置障碍。由于这一切都是内部控制的,因此运行良好。