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

Как условно перенаправить DNS-запросы с помощью dnsmasq?

Я бы хотел, чтобы в моей сети хост 10.10.10.1 разрешить имена через 8.8.8.8 и 10.10.10.2 через 8.8.4.4. Они получают свои настройки DNS через dnsmasq Служба DHCP.

Я могу представить два решения:

Это то, что можно настроить в dnsmasq?

Самая близкая конфигурация, которую я нашел, это server=/example.com/8.8.8.8 который перенаправит на 8.8.8.8 просьбы разрешить example.com. Однако в моем случае это источник должен запускать условие, а не пункт назначения.

Вы можете сделать это, назначив класс одному из серверов. Затем на основе этого класса отправьте другой список DNS-серверов. В приведенной ниже настройке используется MAC-адрес для установки тега, который используется для указания другого списка серверов. Существуют различные условия, которые можно использовать для установки тега.

dhcp-mac=set:alt,00:03:aa:bb:cc:dd
dhcp-option=6,8.8.8.8,8.8.4.4
dhcp-option=alt:6,8.8.4.4,8.8.8.8

Проще было бы просто установить /etc/resolv.conf на одном сервере к соответствующему значению.

Возможно, вам стоит подумать об использовании функции «просмотров» в BIND. Я не совсем уверен, что вы делаете, но похоже, что вам нужно другое разрешение IP внутри вашей локальной сети за пределами вашей локальной сети.

BIND позволяет вам отвечать на запросы с разными результатами в зависимости от исходного IP-адреса. Об этом подробнее здесь: https://kb.isc.org/article/AA-00851/0/Understanding-views-in-BIND-9-by-example.html

вы можете использовать параметр -p в dnsmasq для запуска нескольких экземпляров dnsmasq и перенаправления с использованием iptables

что-то вроде этого :

# dnsmasq -p 1054
# dnsmasq -p 1055
# iptables -I INPUT --src NET1/M --dst YOURIP -p udp --dport 53 -j REDIRECT --to-ports 1054
# iptables -I INPUT --src NET2/M --dst YOURIP -p udp --dport 53 -j REDIRECT --to-ports 1055