Я постараюсь объяснить это как можно лучше ...
Я использую ubuntu 13.04, и я запускаю локальный экземпляр BIND на 127.0.0.1 для доступа к базовому DNS с подстановочными знаками для разработки (например, «* .dev == 127.0.0.1» - да, я знаю, не надо создавать поддельные TLD и т. д. Однако это полностью локально для моей машины).
У меня также есть клиенты, у которых есть собственные DNS-серверы, настроенные через VPN (192.168.140.111 или что-то подобное).
Моя проблема в том, что если в моем resolv.conf их DNS-сервер указан первым, я не могу получить доступ к моему * .dev, а если мой DNS-сервер указан первым, я не могу получить доступ к их записям * .vpn.
В настоящее время это мой файл resolv.conf:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.140.111
search ns1.vpn
nameserver 127.0.0.1
nameserver 127.0.1.1
search fritz.box
Первые три строчки конфига находятся в /etc/resolvconf/resolv.conf.d/head
, поэтому они переживут resolvconf -u
.
По сути, я хочу знать следующее: есть ли способ настроить это так, чтобы * .dev перешло на мой DNS-сервер, а * .vpn - на их (а все остальное перешло к моему интернет-провайдеру).
Да, есть. Настройте локальный преобразователь в качестве локальной привязки (nameserver 127.0.0.1
в /etc/resolv.conf
), затем сообщите своему локальному серверу имен, что он является локальным для .dev
(как вы уже есть); который .vpn
это специальный TLD, запросы на который следует отправлять на настраиваемый DNS-сервер; и что все остальные запросы должны поступать к вашему провайдеру. Это то, что вы захотите добавить к named.conf
:
zone "vpn" {
type forward;
forward first;
forwarders {
192.168.140.11 ;
} ;
} ;
zone "." {
type forward;
forward first;
forwarders {
dns.of.isp.1 ;
dns.of.isp.2 ;
} ;
} ;