Диагностика проблем с поиском DNS - возможно, плохой файл nsswitch.conf или другая проблема
tl:dr моя система Ubuntu 16.04 часто пытается разрешить DNS, с которыми у моих коллег (в основном использующих OSX/mac) нет проблем. Мы все используем 8.8.8.8 из той же сети Wi-Fi. Указанные домены - это URL-адреса AWS, которые часто создаются или обновляются. Прочитав этот вопрос - я боюсь, что мой nsswitch.conf не имеет смысла.
/etc/nsswitch.conf
содержит строку:
hosts: files mdns4_minimal [NOTFOUND=return] dns
Это выглядит правильно? Если я правильно понимаю, он проверит (по порядку) файл hosts, mdns (локальный dns?), А затем провалится, прежде чем проверит DNS-серверы?
запуск команды nmcli dev show | grep DNS
(из этого вопроса - как узнать, какой днс я использую) возвращает следующее:
IP4.DNS[1]: 8.8.8.8
IP4.DNS[2]: 8.8.4.4
Я также проверил, что мой хост-файл не содержит неожиданных конфликтующих записей. Где еще мне искать улики?
Поиск DNS не выполняется постоянно (т. Е. Это не медленный DNS-сервер, который дает сбой с первой попытки, пока значение не будет кэшировано).
Пример неудачного nslookup (с измененным доменом для удаления рабочего домена) выглядит так:
> nslookup example.somedomain.com: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
*** Can't find example.somedomain.com: No answer
Онлайновые инструменты nslookup могут корректно разрешать URL-адреса и показывать, что время жизни составляет 59 секунд, довольно мало, но не безумно.
Изменить: Дополнительная информация (которую я не очень понимаю, но может помочь эксперту) после прочтения еще нескольких вопросов:
вышеупомянутый nslookup, кажется, использует локальный сервер DNS (127.0.1.1
) с помощью nslookup, но при явной настройке сервера DNS правильно разрешил URL-адреса:
> nslookup example.somedomain.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: example.somedomain.com
Address: 10.116.[blah].[blah]
Name: example.somedomain.com
Address: 10.116.[blah].[blah]
/etc/NetworkManager/NetworkManager.conf
выглядит следующим образом:
[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq
[ifupdown]
managed=false
1 ответ
Кажется, есть проблема с механизмом локального кэша DNS, предоставляемым dnsmasq (который работает на localhost, 127.0.1.1). Не уверен, что именно, но если вы отключите кэш dnsmasq и всегда будете запрашивать первичный (8.8.8.8) и вторичный (8.8.4.4) DNS-серверы напрямую, это может работать лучше.
Чтобы отключить dnsmasq, вы редактируете файл /etc/NetworkManager/NetworkManager.conf
и закомментировать dns=dnsmasq
как в конфиге ниже:
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
Надеюсь, что это работает для вас:)