我有一个 IP 为 10.0.0.1/24 的服务器,并且我有一个防火墙,它是 IP 为 10.0.0.2/24 的默认网关。我需要在防火墙上设置权限,只允许服务器访问dns服务。我必须使用 iptables。
答案1
如果您的防火墙 FORWARD 链默认执行 DROP,则这应该足够了:
iptables -A FORWARD -s 10.0.0.1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 10.0.0.1 -p udp --dport 53 -j ACCEPT
(DNS 同时使用端口 53 UDP 和 TCP)
例如,如果您还想指定 DNS 服务器 10.1.1.1:
iptables -A FORWARD -s 10.0.0.1 -d 10.1.1.1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 10.0.0.1 -d 10.1.1.1 -p udp --dport 53 -j ACCEPT
您还可以将 DNS 服务器配置为仅接受来自 IP 地址/网络的请求,需要在其配置文件中给出答案。
答案2
(假设正在使用绑定 DNS) - 为什么不让 DNS 服务/守护进程仅侦听 127.0.0.1。只需将其添加到绑定守护进程的选项中即可:
listen-on { 127.0.0.1; };
然后让服务器使用位于 127.0.0.1 的 DNS 服务器。无需防火墙规则! :)