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

Работа с несколькими частными DNS-серверами

Я постараюсь объяснить это как можно лучше ...

Я использую 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 ;
        } ;
} ;