Я бы хотел, чтобы в моей сети хост 10.10.10.1
разрешить имена через 8.8.8.8
и 10.10.10.2
через 8.8.4.4
. Они получают свои настройки DNS через dnsmasq
Служба DHCP.
Я могу представить два решения:
dnsmasq
сервер (поэтому они оба получают его IP-адрес как DNS-сервер) и dnsmasq
перенаправляет запросы на основе исходного IP-адреса запрашивающего хоста.Это то, что можно настроить в 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