У меня есть локальная сеть с 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
файл (если это поможет.