Domain-Name-System
使 iptables 更易於維護
除了一些列入白名單的網站外,我的網路已完全鎖定。這一切都是通過 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 ...
顯然,這些地址是假設的,但你明白了。我的防火牆變得巨大。如果我可以這樣做,維護起來會容易得多:
# 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
我相信這是可能的,因為
man iptables
說:地址可以是網路名稱、主機名(請注意,使用遠端查詢(如 DNS)指定要解析的任何名稱是一個非常糟糕的主意)、網路 IP 地址(使用 /mask)或純 IP 地址。
但我擔心的是“指定要解析的任何名稱…… DNS 是一個非常糟糕的主意”的部分。為什麼這是個壞主意?它只會減慢一切嗎?
如果我真的不應該在 iptables 規則中使用主機名,那麼我應該怎麼做才能簡化我的防火牆?
在添加規則時解析 DNS 名稱,而不是在檢查數據包時解析。這違背了大多數人的期望。
- 該規則不會更新以反映更改的 DNS 結果。添加時已解決,僅此而已。您將需要定期重新載入規則,否則某些網站可能會中斷。
存在一些安全問題,因為您基本上是將防火牆規則的控制權委託給外部實體。
- 如果您的父 DNS 伺服器遭到入侵並返回錯誤數據怎麼辦。
如果您的目的是阻止 HTTP 訪問,那麼您通常最好設置一個設計用於在該級別進行過濾的軟體(例如 squid+squidquard)。