Неправильный сервер имен, установленный resolvconf и NetworkManager

Неправильный сервер имен, установленный resolvconf и NetworkManager

Мой DNS-сервер — 192.168.1.152.

Этот DNS предоставляется клиентам DHCP. Клиенты Windows в моей локальной сети правильно разрешают имена, используя этот DNS, но моя Ubuntu VM — нет.

Виртуальная машина настроена с использованием сетевого моста и правильно подключается к DNS-серверу, но мои локальные имена хостов не разрешаются ни nslookup, ни браузерами.

Вот nslookupодин из моих локальных доменов:

# nslookup unraid.local
Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find unraid.local: SERVFAIL

Вот что должно разрешить использование моего DNS-сервера:

# nslookup unraid.local 192.168.1.152
Server:     192.168.1.152
Address:    192.168.1.152#53

Name:   unraid.local
Address: 192.168.1.152

/etc/resolv.confимеет неправильный сервер имен:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53

Я выполнил эту команду. В разделе DNS Servers, как ни странно, указан правильный сервер (и мой шлюз по умолчанию).

root@ubuntu:~# systemd-resolve --status
Global
          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 (ens33)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.152
                      192.168.1.1

Я не хочу «жестко задавать» IP-адрес DNS-сервера в файле конфигурации, поскольку в таком случае я не смогу преобразовать его при смене сети.

Как мне заставить resolvconf и NetworkManager работатьавтоматическиустановить IP DHCP-сервера в /etc/resolv.conf?

решение1

Известенсистемдошибка.

Временное решениебез необходимости перенастройки при изменении IP-адресов DNS:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot

решение2

Попробуйте отредактировать /etc/systemd/resolved.conf, добавив нужный вам DNS-сервер:

измените это:

[Resolve]
#DNS=

к этому (но используйте тот, который вам нужен - это пример):

[Resolve]
DNS=192.168.1.152

после этого перезапустите службу:

service systemd-resolved restart

И когда вы проверите статус, вы должны увидеть

$ systemd-resolve --status
Global
         DNS Servers: 192.168.1.152

      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

решение3

Я наконец-то нашел решение этой проблемы для ubuntu 17.10. По умолчанию эта версия Ubuntu использует systemd-resolved, который, я надеюсь, будет стабильным для следующих версий.

Чтобы использовать пользовательский DNS вместо локального кэша, разрешенного systemd, выполните следующие действия:

  1. добавить новые серверы имен. Отредактируйте файл /etc/systemd/resolved.confкак sudoer. Здесь я закомментировал запись DNS и поместил свой dns [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. отменить фактическую символическую ссылку на/etc/resolv.conf

  3. создать новую символическую ссылкуsudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. перезапустить службуsudo service systemd-resolved restart
  5. перезапустите сетевой менеджерsudo systemctl restart networking

И теперь, если вы покопаетесь в имени, предоставленном вашим DNS-сервером, вы должны увидеть, что запись разрешена.dig nexus.default.svc.cluster.mydomain

Последний шаг — обновить порядок разрешения в /etc/nsswitch.conf, поместив dns перед mdns4_minimal

hosts           files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname

решение4

В моей системе я нашел неверную символическую ссылку: /etc/resolv.confэто была символическая ссылка, которая указывает на/run/systemd/resolve/stub-resolv.conf

Этот файл содержит только одну строку:

nameserver 127.0.0.53#53

В результате DNS-поиск локальной сети часто отсутствовал.

Поэтому вместо этого я изменил /etc/reolv.confуказатель на/run/systemd/resolve/resolv.conf

и теперь работает правильно.

Связанный контент