Как обновить/получить новые DNS-серверы на Ubuntu Server 20.04?

Я работаю с "виртуальным частным сервером" в облаке, на котором установлена Ubuntu 20.04.

Я заметил, что - иногда - когда я перезагружаю сервер, я не могу ничего пинговать:

$ ping yahoo.com
ping: yahoo.com: Temporary failure in name resolution
$ resolvectl query yahoo.com
yahoo.com: resolve call failed: No appropriate name servers or networks for name found

Насколько я понимаю, поскольку это Ubuntu 20.04, /etc/resolv.conf больше не используется, а systemd берет на себя управление DNS.

Но, в любом случае, я бы не хотел вручную указывать DNS-серверы (как старый трюк с указанием 8.8.8.8 от Google в /etc/resolv.conf) - очевидно, что в большинстве случаев DNS работает: когда сервер загружается, он каким-то образом "получает" DNS-сервер. Поэтому я хотел бы повторить этот процесс, только я понятия не имею как.

(По аналогии, если бы я хотел обновить/получить новый IP-адрес для машины, я знаю, что машина должна запросить его у DHCP-сервера - так что, в конце концов, легко найти, что для этого я должен сделать sudo dhclient -r eth0, например)

Заметьте также, что когда разрешение имен DNS не работает, у меня нет DNS-серверов, перечисленных в этом выводе:

$ systemd-resolve --status
Global
       LLMNR setting: no
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 2 (eth0)
      Current Scopes: none
DefaultRoute setting: no
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Я видел, что для очистки кэша DNS они (https://unihost. com/help/how-to-clear-the-dns-cache/) рекомендуют:

sudo /etc/init.d/networking restart

... однако, я бы не хотел выполнять эту команду, поскольку я подключен к серверу по ssh, поэтому я представляю, что перезапуск всей сети также убьет мою ssh терминальную сессию и, возможно, приведет к другим нежелательным последствиям.

Итак, мне интересно: есть ли команда, которую я могу запустить в ssh сессии, которая обновит или получит новые DNS сервера для этой машины - используя аналогичный механизм, который используется при загрузке, когда DNS действительно работает на этой машине?

0
задан 24 August 2021 в 11:00

1 ответ

Я только что нашел https://unix.stackexchange.com/questions/328131/how-to-troubleshoot-dns-with-systemd-resolved с примечанием:

... иногда перезапуск через sudo systemctl restart systemd-resolved - хорошая идея.

Итак, я попробовал эту команду:

sudo systemctl restart systemd-resolved

... и действительно, DNS-серверы появились тогда в выводе systemd-resolve --status (или ] resolvectl status , который, кажется, показывает тот же отчет)

Другие возможности:

В Ubuntu 20.04 systemd-resolved является локальным DNS-сервером, включенным в systemd , который действует как преобразователь заглушек, и он должен автоматически редактировать /etc/resolv.conf с правильной конфигурацией.

...

Этот файл содержит DNS-серверы из аренды DHCP, но имейте в виду, что вы не получите преимуществ от функции кэширования заглушки.

Ах, если DNS-серверы получены из аренды DHCP - тогда есть вероятность sudo dhclient -r eth0 также может работать.

Наконец, я осмелился запустить:

$ sudo /etc/init.d/networking restart
Restarting networking (via systemctl): networking.service.

... и оказалось, что это не нарушило мою сессию ssh , так что это тоже хорошо.

0
ответ дан 4 September 2021 в 09:28

Другие вопросы по тегам:

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