Неправильний сервер імен, встановлений Resolvconf та NetworkManager


34

Мій 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-серверах, що заплутано, він вказує правильний сервер (і мій шлюз за замовчуванням).

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 у конфігураційному файлі, тому що я не зможу вирішити, коли я міняю мережі.

Як я можу отримати Reslavvconf та NetworkManager для автоматичного встановлення IP-адреси сервера DHCP /etc/resolv.conf?

Відповіді:


37

Спробуйте відредагувати /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

Ось системне рішення --status після зміни /etc/systemd/ разрешил.conf pastebin.com/AeUFQkyB браузери все ще не в змозі вирішити імена.
FireSpore

12
systemd настільки зламаний. DHCP повідомляє хосту, яким повинен бути DNS, (і купа інших мережевих налаштувань), щоб вам не довелося змінювати жодні файли на хості.
текнопаул

4
Не виглядає оптимально, вам доведеться робити це кожен раз, коли ви змінюєте сервер / мережу DNS
Віктор,

1
Вам потрібно буде переналаштовувати щоразу, коли зміни IP-адреси DNS (наприклад, у різних мережах).
Віктор

34

Відома системна помилка .

Тимчасове рішення без необхідності перенастроювання, якщо зміни IP-адреси DNS:

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

2
Це рішення працювало кілька, імена хоста і команди його проксі - сервера правильно вирішувати, але Wget і браузери не
FireSpore

1
це правильно ... поточна помилка полягає в тому, що посилання, на яке /etc/resolv.confпоходить /run/systemd/resolve/stub-resolv.confболлокс, слід /run/systemd/resolve/resolv.conf зазначити, що /etc/resolv.confнасправді не існує в жодному випадку
пан Хеліс,

@FireSpore: чи pingпрацює тоді? hostі nslookupвирішувати імена хостів інакше від pingабо wget. Можливо, вам доведеться шукати /etc/nsswitch.confрозчинник.
HongboZhu

9

Нарешті я отримав рішення цієї проблеми для ubuntu 17.10. За замовчуванням ця версія Ubuntu використовує systemd-resolved, що, сподіваюся, буде стабільним для наступних версій.

Для того, щоб використовувати власні dns замість кешованого керованого кешем системи, виконайте наступне:

  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

А тепер, якщо ви перекопаєтесь до імені, наданого вашим add dns, ви повинні побачити запис вирішеним dig nexus.default.svc.cluster.mydomain

Останнім кроком є ​​оновлення порядку роздільної здатності в /etc/nsswitch.conf, розміщуючи dns перед mdns4_minimal

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

1
Вам потрібно буде переналаштовувати щоразу, коли зміни IP-адреси DNS (наприклад, у різних мережах).
Віктор

Вікторе, у тебе найкраще рішення? це те саме, якщо ви використовуєте конфігурацію статичної мережі
Фабіо Фумарола

Ця відповідь працює як для статичної, так і для динамічної конфігурацій: askubuntu.com/a/974482/343617
Віктор

дякую, рішення, яке я зазначив, було статичним. Я згоден
Фабіо Фумарола

Це просто працювало для мене на новій установці 18.04
JamesCW

1

Я зібрав сценарій, який вирішує проблему Netplan, яка наразі не підтримує можливість замінити DHCP, що постачається серверами DNS та порядком пошуку домену. Він створює файл yaml Netplan і налаштовує систему, дозволену роботі.

################## Start Netplan config (renderer: NetworkManager)
#  Some useful commands for customisation
# NetConn=$(nmcli device show|grep GENERAL.CONNECTION|head -n1|awk '{print $2}')
# IP=$(nmcli device show|grep IP4.ADDRESS|head -n1|awk '{print $2}')
# GATEWAY=$(nmcli device show|grep IP4.GATEWAY|head -n1|awk '{print $2}')
# sed -i 's/renderer: networkd/renderer: NetworkManager/' //etc/netplan/01-netcfg.yaml
######################################
systemctl start NetworkManager
NIC=$(nmcli device show|grep GENERAL.DEVICE|head -n1|awk '{print $2}')

#####   create Netplan yaml config file
cat >/etc/netplan/01-netcfg.yaml <<EOF 
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
  network:
   version: 2
   renderer: NetworkManager
   ethernets:
EOF
echo "    ${NIC}:" >> /etc/netplan/01-netcfg.yaml
cat >>/etc/netplan/01-netcfg.yaml <<EOF
      dhcp4: yes
      nameservers:
        search: [abc.domain.edu, def.domain.edu]
        addresses: [10.10.11.22, 10.10.11.23]

EOF

#work around DNS resolv bug
systemctl stop systemd-resolved
sed -i 's/#DNS=/DNS=10.10.11.22 10.10.11.23/' /etc/systemd/resolved.conf
sed -i 's/#Domains=/Domains=abc.domain.edu def.domain.edu' /etc/systemd/resolved.conf
systemctl start systemd-resolved
systemctl restart NetworkManager
netplan apply
reboot
############### End Netplan Config

1

Рішення, яке працювало для мене, розміщено тут, у моєму блозі

Використовуйте наноредактор для редагування цих 2 файлів

nano /etc/resolv.conf
nano /etc/resolvconf/resolv.conf.d/head

Додайте DNS-сервери, які ви хочете використовувати

nameserver 9.9.9.9
nameserver 127.0.0.1

Потім перезапустіть службу

service systemd-resolved restart

Остаточна перевірка:

cat /etc/resolv.conf

Зробіть nslookup

nslookup google.com 

я просто використав це і вирішив проблему на своєму ноутбуку вдома, але через деякий час, коли я не вдома, я можу побачити, що це спричинить проблеми, тому що основний і вторинний сервер dns все ще буде моїм домом сервери зі своїми lan адресами.


2
Вам потрібно буде переналаштовувати щоразу, коли зміни IP-адреси DNS (наприклад, у різних мережах).
Віктор

це не елегантно, але він працює, а іноді саботує мою сну.
Родріго Феррарі

Редагування /etc/resolv.confне працює, оскільки файл буде перезаписаний під час systemd-resolvedперезавантаження. Просто відредагуйте /etc/systemd/resolved.conf. Дивіться мою відповідь тут: askubuntu.com/questions/977243/ubuntu-17-10-disable-netplan/…
EnzoR

1

У вашому /etc/resolv.confне проблема. systemd-resolvedпросто за замовчуванням до конфігурованих, тому воно не дає всіх пошукових запитів. Не соромтеся реготати про Unconfigured vs Reasonable Default.

Вручну додайте сервери імен до systemd-resolved. (редагування за коментарем Олоріна нижче, щоб додати mkdir, виправити шлях /etcне /libдля того, щоб пережити оновлення системи)

sudo mkdir -p /etc/systemd/resolved.conf.d
sudo nano /etc/systemd/resolved.conf.d/00-my-dns-server-is.conf

Додати:

[Resolved]
Cache=yes
DNS=192.168.1.152

Потім...

sudo systemctl daemon-reload

systemd-resolvedрозумний, але, не налаштований, як це є, з боку сервісних пакетів, це ДУЖЕ дурно, тому що технічне обслуговування пакетів не вірить у "Розумний дефолт". Ми можемо помістити 13 Інтернет-кореневих серверів, так званих "djb way", або 10 відкритих серверів: https://pastebin.com/JBfYVVtG або три найшвидші сервери opennic, що вимірюються namebench. Плюс провайдерів імен ISP, звичайно. Плюс Google, звичайно. systemd-resolvedне проблема. Я - проблема.


Хоча ви, мабуть, не хочете редагувати файл /usr/lib- вони, ймовірно, будуть перезаписані під час оновлення пакету. Я думаю, що відповідний файл десь знаходиться /etc/systemd(це вже має бути /etc/systemd/resolved.confготовим для редагування адміністраторами).
Олорін

1
man разрешений.conf.d, з d, так /etc/systemd/ разрешил.d місце. Я помічаю, що нам часто доводиться mkdir /etc/ evidencepathškar.d. bob @ laptop l /etc/
systemd/ riješen.conf.d

0

У моїй системі я виявив погане символьне посилання: /etc/resolv.confбуло симпосилання, яке вказує на/run/systemd/resolve/stub-resolv.conf

Цей файл містить лише один рядок:

nameserver 127.0.0.53#53

Як результат, пошук DNS локальної мережі часто відсутній.

Отже, замість цього я змінився, /etc/reolv.confщоб вказати/run/systemd/resolve/resolv.conf

і зараз працює правильно.


0

Дивно, але єдине рішення, яке працювало для мене на Ubuntu 18.04, було таке, яке я знайшов тут :

Спочатку змініть /etc/resolv.conf, встановивши потрібний сервер імен :

# nano /etc/resolv.conf

Встановіть, наприклад,

nameserver 8.8.8.8

А потім зробіть

# chattr +i /etc/resolv.conf

Це захищає /etc/resolv.confфайл, так що ніхто не може змінювати його, включаючи користувача root.


-3

У мене така ж проблема. Кожне перезавантаження нічого не вирішить. Я все видалив і перевстановив уже близько 50 разів. Це просто просто зламано.

тому виправлення .... "просто застосуйте кілька параметрів кожного разу при завантаженні ПК, що дозволяє вирішувати 90% імен хостів, але Wget і apt-get оновлення та оновлення виходять з ладу випадково без будь-якої причини".

cat /etc/systemd/ разрешил.conf

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Під час використання робочого столу Ubuntu 17.10 ви повинні відредагувати один файл, на якому сказано НЕ редагувати цей файл BLAH BLAH BLAH

ну це ТІЛЬКИ, як це працює ~!

root@nas:~# cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 8.8.8.8

Тому видаліть 127.0.0.53 IP як сервер імен та введіть ще один, наприклад, google. Здається, моя фактична IP-адреса DNS також не вирішує імена хостів (навіть якщо вона працює на 10 інших машинах та пристроях у будинку), але Google працює чудово.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.