
OpenDNS предлагает довольно простой способ фильтрации интернета по категориям. Конечно, тот, кто может получить правильный IP-адрес, может легко обойти фильтр, но этого будет достаточно для моих ожиданий.
Более серьезная проблема заключается в том, что смена поставщика DNS на стороне клиента не представляет большой проблемы.
Поэтому мой вопрос заключается в том, можно ли принудительно использовать только определенного провайдера DNS в локальной сети.
Целевое устройство — WiFi-роутер с OpenWRT. (Однако я был бы рад любому аналогичному простому в настройке решению по фильтрации, но главный вопрос — это принудительное использование DNS-провайдера.)
решение1
С брандмауэром iptables это работает (OpenWRT также использует iptables):
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p udp --dport 53 -j DNAT --to 192.168.1.1
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 53 -j DNAT --to 192.168.1.1
На вашем маршрутизаторе используйте Opendns-серверы. 192.168.1.1
— это IP-адрес маршрутизатора Openwrt. 192.168.1.0/24
— это подсеть локальной сети. Измените приведенные выше правила в соответствии с настройками подсети вашей сети. Если вы пробуете приведенные выше правила в командной строке openwrt, замените -A
на -I
. Если вы сохраняете правила в скрипте, который загружается при загрузке или при перезапуске, то -A
switch должен работать. При такой настройке, какие бы DNS-серверы ни использовали клиентские машины, когда DNS-запрос достигает маршрутизатора, IP-адрес назначения будет изменен на IP-адрес вашего маршрутизатора. Вы можете узнать больше о iptables на Openwrtздесь.
решение2
Да, можно заставить все хосты в локальной сети использовать только определенного провайдера DNS. Вы можете сделать это, настроив прокси-сервер, напримерПрокси-сервер Squidи заставляя все хосты в локальной сети получать доступ к Интернету только через этот прокси-сервер. Таким образом, каждый запрос, будь то DNS-запрос, HTTP-запрос или любой другой запрос, сначала будет отправлен на прокси-сервер. Таким образом, любая запись DNS, которая будет написана при настройке прокси-сервера, будет использоваться всеми хостами в локальной сети.