ping
говорит мне, что он не может разрешить какое-то имя хоста ("ping: unknown host domain.company.local") в URL, но когда я использую host
или nslookup
на том же компьютере в командной строке, разрешение работает нормально (т.е. это быстро и надежно ).
Что может быть причиной этого?
Еще тестирование: у Firefox wget
и ping
та же проблема. Пинг IP-адреса работает.
ОС: Linux (Ubuntu 13.04)
РЕДАКТИРОВАТЬ Мой /etc/resolv.conf
читает:
nameserver 127.0.1.1
search domain.company.local
netstat
доклады:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
поэтому что-то работает на этом порту ( nslookup
также сообщает, что он использует в 127.0.1.1
качестве DNS-сервера).
Нет /etc/*inetd.conf
, поэтому я не уверен, какое приложение обслуживает этот порт.
Похоже, что dnsmasq
используется:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces
--pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1
--conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec
--enable-dbus=org.freedesktop.NetworkManager.dnsmasq
--conf-dir=/etc/NetworkManager/dnsmasq.d
Все файлы конфигурации и папки пусты. Так как nslookup
говорит, что использует, 127.0.1.1#53
я думаю, что dnsmasq
работает даже без конфигурации. Но как узнать, какой родительский DNS запрашивать?
EDIT2 Отключение, dnsmasq
как было предложено harrymc, не помогло. Итак, я побежал, strace ping
который дал мне этот странный вывод (только интересные части):
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
read(4, "127.0.0.1\tlocalhost\n#127.0.1.1\ta"..., 4096) = 613
...
open("/lib/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\f\0\0\0\0\0\0"..., 832) = 832
...
mmap(NULL, 2105560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f7829b00000
...
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl(4, F_GETFD) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fstat(4, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f782a4f8000
lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "RESOLVE-HOSTNAME-IPV4 domain.com"..., 44) = 44
read(4, "-15 Timeout reached\n", 4096) = 20
Так ping
выглядит в /etc/hosts
чем смысл. Затем он загружает и mmap()
s , /lib/libnss_mdns4_minimal.so.2
который имеет смысл , а также.
Но тогда это говорит с авахи !?
Который привел меня к этому сообщению на форуме: ping не делает запрос DNS .
Мой /etc/nsswitch.conf
также содержит эту строку:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Если у меня ping
рабочий адрес, я вижу, что процесс также загружается, /lib/libnss_mdns4_minimal.so.2
но затем он выполняет DNS-запрос через порт 53.
Таким образом, я предполагаю, что теперь /lib/libnss_mdns4_minimal.so.2
как-то замечает, что IP-адрес заканчивается, .local
а не с, .com
и затем [NOTFOUND=return]
срабатывает.
Как я могу это исправить?
/etc/resolv.conf
?wget
.nslookup
или какhost
можно разрешить имя и все остальное в системе, не может./etc/NetworkManager/NetworkManager.conf
и прокомментируйтеdns=dnsmasq
строку (поставьте перед ней #), затем выполните asudo restart network-manager
. Это отключит локальный распознаватель. ( источник )Ответы:
Как подробно описано в этом блоге , вам нужно отредактировать
/etc/avahi/avahi-daemon.conf
:Это привязывает демон к домену
.alocal
вместо значения по умолчанию.local
.и перезапустите демон с помощью:
Примечание от поста в блоге:
После этого
ping
иnslookup
начали договариваться.Спасибо harrymc за то, что я выбрал правильный путь.
источник
ping
будет использовать NSS,nslookup
нет. (он использует lwres и, ну, в общем, связывается, чтобы напрямую общаться с распознавателем)Изменить /etc/nsswitch.conf и заменить:
по:
работал на меня.
источник
Легко сделать: Изменить
/etc/default/avahi-daemon
Измените строку:
в
Перезапустите
avahi-daemon
или убейте его.Я не люблю Avahi, и я не использую какие-либо его функции. Если вы хотите действительно отключить avahi, измените
/etc/init/avahi-daemon.conf
, как показано ниже:источник
кажется, .local адрес не может быть доступ в Ubuntu.
решение состоит в том, чтобы отредактировать
/etc/nsswitch.conf
и изменить эту строку:этим :
источник
Если вы не делите соединение с другими устройствами или виртуальными машинами через ваш компьютер, вы можете отключить dnsmasq в Network Manager.
Отредактируйте
/etc/NetworkManager/NetworkManager.conf
и прокомментируйте строку (поставьте перед ней #):Затем сделайте:
Это отключит локальный распознаватель.
Источник: DNS в Ubuntu 12.04 .
источник
Довольно хорошее предположение, но другие ответы излишни. Простое решение состоит в том, чтобы удалить бит, который действительно сработал, то есть удалить просто
[NOTFOUND=return]
.Удаление означает, что если
mdns4_minimal
возвращаетсяNOTFOUND
, используется следующая запись в списке распознавателя. Это нормальное поведение;[NOTFOUND=return]
Оптимизация для быстрого сбоя при неизвестных именах, но предполагает, что все.local
имена находятся в mDNS.источник
У меня был интересный случай с такими же симптомами (пинг, монтирование и т. Д. Не работает, но хост, копать работает). Проверьте права доступа к файлу /etc/resolv.conf . В моем случае кто-то изменил его, и у меня не было прав на его чтение (хотя
cat /etc/resolv.conf
и редактирование файла работало нормально).Во всяком случае, strace показывал:
И в результате он пытался запросить localhost (127.0.0.1) вместо IP-адреса сервера имен из файла resolv.conf:
И tcpdump не показывал трафик DNS при пинге. Все работает после разрешения разрешения:
Другая проблема может быть расширенными атрибутами файла или любой другой проблемой доступа. В этом случае просто удалите файл /etc/resolv.conf и создайте его заново.
источник
x
флаг, и поэтому многие двоичные файлы не работали должным образом. Исправление былоchmod +x /*
.Другой причиной является формат
/etc/hosts
. Убедитесь, что между IP и именем хоста нет пробелов, вместо этого используйте TAB. После изменения на TAB имя хоста может быть разрешено с помощью ping.источник
Настройте avahi-daemon в Ubuntu, чтобы вы могли получить доступ к имени хоста
ubuntu.local
из операционной системы хостаsudo apt-get установить avahi-демон avahi-обнаружить avahi-utils libnss-mdns mdns-scan
источник