Почему мой файл / etc / hosts не запрашивается, когда nslookup пытается разрешить адрес?

У меня есть пара локальных доменов, разрешенных в 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?

12
задан 26.05.2015, 01:52

3 ответа

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 мог бы возвратить результат локального источника.

0
ответ дан 17.04.2019, 23:21
  • 1
    Вместо ping нужно использовать getent ahosts, потому что это не требует всего дополнительного материала, который ping имеет. – Unome 02.10.2017, 23:09

Я предполагаю, что Вы хотите определение имен от /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
0
ответ дан 17.04.2019, 23:21

Другая общая вещь, которую я вижу, состоит в том, где кто-то (обычно меня) инвертирует IP-адрес с именем хоста в /etc/hosts - например:

mysite.com    10.2.3.4

На первый взгляд, это выглядит нормальным... Вот - мое решение приблизительно 50% времени:

10.2.3.4    mysite.com
0
ответ дан 17.04.2019, 23:21
  • 1
    виновный в нем на этот раз...#sigh – alannaC 15.06.2017, 05:08
  • 2
    Обычно файлы hosts идут с предопределенными 127.0.0.1 localhost записями. Выполнение его неправильно является таким большим количеством неправильного:-), – Alim Özdemir 17.05.2018, 05:05

Теги

Похожие вопросы