Ubuntu 17.04 systemd-разрешенные DNS-поиски случайно завершаются неудачей

38

Я обновился до 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 и т. Д.

moodboom
источник
2
Совет на будущее: версии Ubuntu - это год .выпуска и месяц выпуска. (Так в вашем случае это будет в 04/ 17)
timotree
Похоже на то, что systemd-resolved разрешил ломиться в дистрибутивы, тоже доставляет неприятности другим людям .
moodboom

Ответы:

46

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и увидев ответ.

Саджад Бахмани
источник
Спасибо за ответ - можете ли вы объяснить, что он делает?
bertieb
Ubuntu 17.04 не может (пока здесь) разрешать DNS-сервер с поддержкой DNSSEC. Я отключаю DNSSEC с этим демоном.
Саджад Бахмани
Спасибо, вы можете отредактировать это объяснение в своем ответе? :)
bertieb
Это решение не сработало для меня - после установки этого параметра, все еще каждый раз, когда я делаю поиск в первый раз, я получаю ошибку SERVFAIL, после нескольких попыток это удается, а затем результат кэшируется.
Гусс
1
@SamuelL. Что касается тройника, это просто модный способ напечатать что-нибудь и одновременно отправить его в файл. Обычно вы можете перенаправить вывод в файл с символом> [больше, чем символ], но тогда вы не увидите вывод. Ти позволяет ему идти в обоих местах. Resolvconf "настраивает разрешение".
moodboom
12

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

По-видимому, в Ubuntu 16.10 есть, по крайней мере, одна ошибка libnss и, по-видимому, до 17.04. С тех пор, как в Ubuntu 16.10 была включена система-решена, есть много людей с проблемами DNS, вот один анализ и вот обходной путь другого человека. Ни один из них не работал для меня, пока я вручную не перезаписал /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
moodboom
источник
Изменение на resolconf не помогло в моей проблеме, как мне вернуться к использованию systemd-resolved? (Спасибо)
Эдвард Моффет
1
Попробуйте:systemctl enable systemd-resolved.service && systemctl start systemd-resolved.service
moodboom
1
Чувак, ты только что сохранил ма систему !! BRAVO
революционный
Хорошо работал в 18.04
Андре М. Фариа
4

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

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

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

moodboom
источник
4

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

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

Джон Болл
источник
Спасибо за ссылку исправления. Значение по умолчанию будет изменено обратно на DNSSEC = нет в следующих выпусках обновлений, что устранит эту конкретную проблему.
moodboom
1

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

systemctl перезапустить systemd-resolved

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

Хенк
источник
К сожалению, это само по себе не решает проблему «каждый другой запрос терпит неудачу» для меня.
moodboom
Согласитесь с @moodboom, это не решает и меня тоже.
Андре М. Фариа