Убедитесь, что все пользователи в сети используют мой DNS-сервер

Я использую маршрутизатор с DNS-сервером и хочу убедиться, что все в моей сети действительно используют мой DNS. Каковы необходимые iptables (?) Для перенаправления всего трафика, связанного с DNS, на мой локальный DNS-сервер?

3 ответа

Вы, вероятно, имеете в виду своего рода прозрачную пересылку, которую iptables называет Destination NAT:

ethL=eth0     # internal network NIC
dnsip=1.2.3.4 # IP of your DNS
iptables -t nat -A PREROUTING -p udp --dport 53 -i $ethL -j DNAT --to $dnsip

Тем не менее, есть потенциальные проблемы с этим подходом для рассмотрения:

  • это вариант NAT со всеми сопутствующими затратами (пропускная способность, память ядра и т. д.);
  • это будет работать только для пакетов, которые пересекают маршрутизатор - клиенты, которые обращаются к DNS-серверу в своей локальной IP-сети, будут продолжать.

Вам нужно разрешить только DNS-трафик с вашего DNS-сервера и отклонить все остальные запросы

# Разрешить DNS с вашего IP

iptables -A INPUT -p udp --dport 53 -s <source IP> -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -s <source IP> -j ACCEPT

# Отклонить все остальные запросы

iptables -A INPUT -p udp --dport 53 -j DROP
iptables -A INPUT -p tcp --dport 53 -j DROP

Проверьте ответ здесь. Заблокируйте все входящие DNS-запросы, КРОМЕ от IP-адресов x, y,

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

local_network=X.X.X.X/24 # IP address/subnet-mask of local network
dns_server=Y.Y.Y.Y # IP address of DNS server

iptables -A INPUT -s $local_network -d $dns_server -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s $local_network ! -d $dns_server -p udp --dport 53 -j DROP
iptables -A OUTPUT -s $dns_server -d $local_network -p udp --sport 53 -j ACCEPT

Если ваш DNS-сервер является кеширующим / рекурсивным DNS-сервером, вам необходимо разрешить ему также выполнять внешний поиск:

iptables -A INPUT -d $dns_server -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -s $dns_server -p udp --dport 53 -j ACCEPT
Другие вопросы по тегам