我正在尝试在网关服务器上设置 iptables 规则以强制我的孩子使用 opendns(我最近发现他们中的一个在他的本地计算机上手动使用 google DNS)。
以下是 /etc/dhcp/dhcpd.conf 中的配置:
option domain-name-servers 208.67.222.222, 208.67.220.220;
它运行正常,因为当 IP 分配给本地计算机时,默认 DNS 服务器是第一个 OpenDNS 条目:
$ nslookup
> serverfault.com
Server: 208.67.222.222
Address: 208.67.222.222#53
Non-authoritative answer:
Name: serverfault.com
Address: 151.101.65.69
Name: serverfault.com
Address: 151.101.129.69
Name: serverfault.com
Address: 151.101.193.69
Name: serverfault.com
Address: 151.101.1.69
现在,如果我在我的服务器上放置以下规则:
#allow dns requests to opendns
sudo iptables -A OUTPUT -p udp --dport 53 -d 208.67.220.220 -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -d 208.67.222.222 -j ACCEPT
#block all other dns requests to other servers
sudo iptables -A OUTPUT -p udp --dport 53 -j DROP
sudo ip6tables -A OUTPUT -p udp --dport 53 -j DROP
...它运行正常,但仅限于服务器本身,而不是客户端。事实上,客户端仍然可以使用除 OpenDNS 之外的任何其他 DNS 服务器。
我怀疑当我执行 NAT(网关路由器)时,我在 iptables 中访问的表有问题。
你能帮忙吗?非常感谢你的支持。