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

Локальный DNS не работает при подключении другого интерфейса

У меня есть локальная сеть с Linux-сервером, на котором запущен BIND для адресации локальных компьютеров. Когда рабочая станция подключена к локальной сети (где нет доступа к Интернету), я могу без проблем обращаться к устройствам, используя имена хостов:

$ host server1.local
$ server1.local has address 192.168.2.2

$ host 192.168.2.2
$ 2.2.168.192.in-addr.arpa domain name pointer server1.local.

Когда эта же рабочая станция включает Wi-Fi (или любой дополнительный интерфейс) и подключается к большему Интернету, машина больше не может обращаться к локальным устройствам по имени хоста. Предположительно это связано с тем, что он использует DNS-сервер неправильного сетевого интерфейса для адресации моих устройств.

Моя конфигурация BIND выглядит следующим образом:

$ORIGIN local.
$TTL 604800
@ IN SOA server1 admin (
                2008080101      ;serial
                04800           ;refresh
                86400           ;retry
                2419200         ;expire
                604800          ;negative cache TTL
                )
@       IN      NS      server1
@       IN      A       192.168.2.2
server1  IN      A       192.168.2.2
workstation1   IN      A       192.168.2.44
workstation2   IN      A       192.168.2.45

и обратный DNS:

$ORIGIN 2.168.192.in-addr.arpa.
$TTL 604800
@ IN SOA server1.local. admin.local. (
                2008080101      ;serial
                604800          ;refresh
                86400           ;retry
                2419200         ;expire
                604800          ;negative cache TTL
                )

                NS      server1.local.
2       IN      PTR     server1.local.

44      IN      PTR     workstation1.local.
45      IN      PTR     workstation2.local.

Как я могу заставить клиентов смотреть на правильный сетевой интерфейс, чтобы найти хосты в пространстве имен ".local"? Можно ли сделать это из конца конфигурации BIND, поскольку я не могу полностью контролировать отдельных клиентов?

Некоторые версии OS X назначают предпочтения DNS-серверам. Это может привести к тому, что ваш внутренний DNS-сервер будет понижен в порядке предпочтений.

Попробуйте выполнить эту команду, чтобы узнать, какой сервер используется:

scutil --dns | grep nameserver\[[0-9]*\]

Источники:

Проверьте свои /etc/resolv.conf (OSX) после подключения к другой сети и убедитесь, что она содержит search .local. Вы также можете попробовать разместить записи внутри hosts файл (если это поможет.