34

Я обновился до Ubuntu 17.04, и теперь у него появился новый механизм распознавания DNS, впервые введенный в Ubuntu 16.10.

Теперь я получаю ошибки поиска DNS в 50% случаев. Каждый второй вызов nslookup завершается неудачно, половина вызовов разрешается нормально, а половина дает следующее:

watch -n 1 nslookup google.com

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find google.com: SERVFAIL

Из того, что я понимаю, этот IP-адрес DNS-сервера теперь используется для представления системного разрешения, которое выполняет мета-поиск, чтобы избежать более медленных DNS-запросов (или чего-то ...). Я наблюдаю точно такое же поведение на двух машинах, которые я обновил до 17.04 на прошлой неделе.

Любая идея, в чем проблема, и правильный способ ее решения?

До обновления все работало нормально (с 16.04 или 16.10, не помню, извините). Я ДУМАЛ, что 17.04 был релизом LTS, но теперь я вижу, что я прыгнул, и он не будет считаться стабильным до апреля. И вот я здесь.

Также следует отметить, что браузеры, похоже, не демонстрируют проблем, а nslookup, ping, git и т.д.

5 ответов5

42

Ubuntu 17.04 не может разрешать DNS-серверы с поддержкой DNSSEC по состоянию на 2017-04-18. Отключите DNSSEC с этим демоном:

sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf

При необходимости перенастроить resolvconf, если вы с ним не справились (скажите «да», чтобы «подготовить /etc/resolve.conf к динамическим обновлениям?»).«):

sudo dpkg-reconfigure resolvconf

Перезапустите systemd-resolved:

sudo systemctl restart systemd-resolved

Ваш DNS должен начать работать. Вы можете проверить, попробовав systemd-resolve www.google.com и увидев ответ.

12

Я переключался между systemd-resolved и ручным управлением /etc/resolv.conf и еще не нашел механизм распознавания DNS systemd стабильным.

По-видимому, в Ubuntu 16.10 есть, по крайней мере, одна ошибка libnss и, по-видимому, до 17.04. Есть много людей с проблемами DNS, так как Ubuntu 16.10 включил systemd-resolved, вот один анализ, а вот обходной путь другого человека. Ни один из них не работал для меня, пока я вручную не перезаписал /etc/resolv.conf DNS-серверами Google.

nameserver 8.8.8.8   << or another if you don't trust google
nameserver 8.8.4.4

Это совершенно правильное решение, если вам не нужна динамическая настройка DNS. Просто убедитесь, что вы остановили и отключили systemd-resolved:

sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop
3

Ubuntu 17.04 и другие дистрибутивы охватывают systemd, который включает в себя systemd-resolved, что подвергает пользователей довольно жесткому разрешению DNS.

  • Как уже упоминалось в ответе SjB, поддержка DNSSEC может вызвать проблемы.
  • systemd-resolved пропингует все DNS-распознаватели, поэтому он может использовать самый быстрый. Это может вызвать проблемы с VPN и т.д. В более сложных средах.
  • Сертификаты сервера DNS проверены, у меня были ошибки, если мои часы искажены.

Я не думаю, что это обязательно ПЛОХОЕ изменение, это просто МНОГО изменений. Я постараюсь обновить и расширить этот ответ, когда узнаю больше.

2

Проще говоря, вам просто нужно иметь строку "DNSSEC = no" в разделе [Resolve] файла /etc/systemd/resolved.conf.

https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1682499/

1

просто добавьте имя сервера /etc/systemd/resolved.conf DNS = 194.109.xxx.xxx (на вашем маршрутизаторе, внешний сервер имен)

перезапустить systenctl

не нужно менять rand с 3 на 2 не нужно менять dnssec на off

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .