Назад | Перейти на главную страницу

Предотвращение обхода OpenDNS с помощью iptables на сервере шлюза

Я пытаюсь настроить правила 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

... он работает нормально, но только на самом сервере, а не на клиентах. Действительно, клиенты по-прежнему могут использовать любые другие DNS-серверы, кроме серверов OpenDNS.

Я подозреваю, что когда я выполняю NAT (маршрутизатор шлюза), что-то не так с таблицей, которую я достигаю в iptables.

Не могли бы вы помочь? Заранее большое спасибо за вашу поддержку.