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

Перенаправление DNS-порта на определенный DNS-сервер

Я использую сервер ubuntu в качестве маршрутизатора для своих пользователей в сети NAT. Я хочу заставить всех пользователей использовать локальную настройку DNS-сервера в сети. Даже если они используют общедоступный DNS-сервер на своих клиентских машинах, порт DNS должен быть перенаправлен (DNAT) на мой локальный DNS-сервер. Вот что я придумал:

iptables -t nat -A PREROUTING -i eth5 -p udp --dport 53 -j DNAT --to 192.168.1.1:53
iptables -A FORWARD -d 192.168.1.1 -i eth5 -p udp --dport 53 -j ACCEPT

Интерфейс, обращенный к сети NAT, eth5. Вышеупомянутые правила не работали для меня. Есть ли лучшие решения?

РЕДАКТИРОВАТЬ 1: Моя цель - реализовать фильтр Opndns для предотвращения трафика BitTorrent в сети. В настоящее время фильтр работает достаточно хорошо, и пользователи получают локальный DNS-сервер, потому что они используют DHCP. Но я боюсь, что они могут найти обходной путь, например, указать IP-адрес и IP-адреса DNS-сервера вручную.

РЕДАКТИРОВАТЬ 2: следующий код реализует эту функцию в прошивке томата:

 if (nvram_match("dns_intcpt", "1")) {
     ipt_write("-A PREROUTING -p udp -s %s/%s ! -d %s/%s --dport 53 -j DNAT --to-destination %s\n",
          lanaddr, lanmask,
          lanaddr, lanmask,
          lanaddr);
}

Вот об этом подробнее.

Есть ли лучшие решения?

Да, вообще не делаю.

Возиться с обычным разрешением DNS почти никогда не получится, какую бы проблему вы ни пытались решить.

РЕДАКТИРОВАТЬ re: ваше обновление. Вы ненадлежащим образом пытаетесь использовать технологию для решения политической проблемы. Не надо.

Это не работает, потому что ответ от вашего DNS-сервера проходит в обход брандмауэра. Затем клиенты (правильно) отбрасывают эти ответы, поскольку они не соответствуют отправленным.

Вам нужно добавить еще одно правило в вашу таблицу POSTROUTING для SNAT пакетов, направляемых на DNS-сервер, на IP-адрес маршрутизатора.

В качестве альтернативы, размещение DNS-сервера в отдельной сети могло бы решить проблему, поскольку ответы будут принудительно возвращаться через маршрутизатор.

Почему бы просто не перенаправить DNS-трафик на любой внешний DNS-сервер? Те, кто явно указывает внешний сервер, просто заметят, что это не работает.