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

Как переадресовать разрешение домена по префиксу?

Иногда мне приходится подключаться к моей рабочей сети через VPNC. В этой сети есть DNS-сервер. У меня нет разрешения извлекать из него файлы зоны. И у меня есть локальный сервер привязки, который перенаправляет на 8.8.8.8 и разрешает некоторые внутренние имена моих KVM. И мой файл resolve.conf указывает на 127.0.0.1.

Все имена из рабочей сети имеют один и тот же поддомен (company.com).

Я был бы рад найти вариант конфигурации с регулярным выражением для пересылки доменных имен разрешения, соответствующих регулярному выражению /company.com$/, на другой DNS-сервер вместо значения по умолчанию.

Да, это решение не выглядит технически совершенным, но оно простое.


Спасибо за идею о dnsmasq. Теперь осталось заставить его работать.

Теперь запускаю bind9 только на вете. /etc/resolve.conf остается без изменений. dnsmasq привязан к остальным интерфейсам и по умолчанию перенаправляет на bind9, в противном случае - на сервер компании.

И все работает, если до этого была установлена ​​сеть vpn. Но если вы запускаете vpnc-connect, он не работает после некоторого зависания с жалобой на то, что vpn.company.com не может быть разрешен.

Я попытался отключить отрицательное кеширование и установить максимальный размер кеша равным нулю. Ничего не помогло.

Этого цикла не происходит, если /etc/resolve.conf указывает на 8.8.8.8 или на мой bind9.

dnsmasq сделаю это за вас. Запустите его локально на своем компьютере и установите /etc/resolv.conf указать на 127.0.0.1.

У меня нет под рукой полной конфигурации, но параметры, которые вы, вероятно, захотите изучить,

# Do not read resolv.conf
no-resolv

# Send queries for contoso.com to nameserver 10.1.2.3
server=/contoso.com/10.1.2.3

# Set your local default domain and add it to simple names in /etc/hosts
domain=fabrikam.com
expand-hosts

# DNS "A" records are like this
host-record=vpn.contoso.com,203.0.113.77

Вы можете включить другие файлы из основного /etc/dnsmasq.conf файл, поэтому один из них может быть обновлен по мере необходимости, когда вы принесете vpnc онлайн или офлайн, чтобы серверы пересылки были доступны только тогда, когда vpn включен.

Если вам нужно разрешить такое имя, как vpn.contoso.com вы не можете сделать это напрямую, так как contoso.com домен отправляется на сервер имен, который доступен только тогда, когда vpn включен. Поскольку мы не хотим вовлекать цыплят и яйца[*] решение здесь - использовать dnsmasq чтобы определить это как хорошо известное имя. Это можно добавить к /etc/hosts или установить в dnsmasq.conf как host-record.

Со временем вы можете подумать о замене bind с участием dnsmasq; для внутренней сети он делает практически все, что bind делает.