У меня есть пара локальных доменов, разрешенных в 127.0.0.1
в моем файле /etc/hosts
. И все было хорошо в течение некоторого времени, но теперь, когда я запускаю:
nslookup test.local
Это приводит к:
Server: 192.168.1.3
Address: 192.168.1.3#53
** server can't find test.local: NXDOMAIN
192.168.1.3
- это DNS нашей сети, и он не должен знать мой локальный домен test.local
. После нескольких поисков я обнаружил, что файл /etc/nsswitch.conf
содержит информацию о приоритете источников DNS для запроса. Но там не было никаких проблем! Вот мое:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Так кто-нибудь знает, почему мой файл hosts
не включен в поиск DNS?
nslookup
только делает надлежащий разрешение DNS, которое существенно отличается от служба имен Переключатель подсистема, которую используют Ваши другие приложения; то есть nslookup
игнорирует /etc/hosts
и mDNS.
Для тестирования локальных разрешений как этот используйте что-то, что использует NSS. ping <hostname>
, например. Вот простая демонстрация на основе /etc/hosts
запись в моей сети.
$ nslookup bert
Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find bert: NXDOMAIN
$ ping bert
PING bert (10.10.0.4) 56(84) bytes of data.
64 bytes from bert (10.10.0.4): icmp_seq=1 ttl=64 time=0.352 ms
64 bytes from bert (10.10.0.4): icmp_seq=2 ttl=64 time=0.407 ms
Примечание, что существуют серверы DNS и прокси, которые могут включить в /etc/hosts
файл. В этих случаях, nslookup
мог бы возвратить результат локального источника.
Другая общая вещь, которую я вижу, состоит в том, где кто-то (обычно меня) инвертирует IP-адрес с именем хоста в /etc/hosts
- например:
mysite.com 10.2.3.4
На первый взгляд, это выглядит нормальным... Вот - мое решение приблизительно 50% времени:
10.2.3.4 mysite.com
Я предполагаю, что Вы хотите определение имен от /etc/hosts
файл для определенного хоста (mysite.com).
Другая типичная проблема, которая может вызвать это поведение, состоит в том, что у Вас может быть много записей на /etc/hosts
файл для того же IP, примера:
1.1.1.1 host1.domain1.com
1.1.1.1 host2.domain2.com
В некоторых реализациях, это может заставить определение имен быть врученным DNS. Быстрое исправление, сгруппируйте все в 1 строке
1.1.1.1 host1.domain1.com host2.domain2.com