Server nama salah ditetapkan oleh resolvconf dan NetworkManager

34

Server DNS saya adalah 192.168.1.152.

DNS ini disediakan untuk klien oleh DHCP. Klien windows di LAN saya menentukan nama dengan benar menggunakan DNS itu, tetapi VM Ubuntu saya tidak.

VM diatur dengan menjembatani jaringan dan disediakan dengan benar server DNS, tetapi nama host lokal saya tidak diselesaikan oleh nslookup atau browser.

Ini adalah nslookupsalah satu dari domain lokal saya:

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

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

Inilah yang harus diselesaikan dengan menggunakan server DNS saya:

# 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 memiliki server nama yang salah:

# 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

Saya menjalankan perintah itu. Di bawah Server DNS, secara membingungkan, ia menentukan server yang benar (dan gateway default saya).

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

Saya tidak ingin "kode keras" IP server DNS dalam file konfigurasi karena saya tidak akan dapat menyelesaikannya ketika saya mengubah jaringan.

Bagaimana saya bisa mendapatkan resolvconf dan NetworkManager untuk secara otomatis mengatur IP server DHCP /etc/resolv.conf?

FireSpore
sumber

Jawaban:

37

Coba edit /etc/systemd/resolved.conf, tambahkan server DNS yang Anda inginkan:

ubah ini:

[Resolve]
#DNS=

untuk ini (tetapi gunakan yang Anda inginkan - ini adalah contoh):

[Resolve]
DNS=192.168.1.152

setelah itu, restart layanan:

service systemd-resolved restart

Dan ketika Anda memeriksa statusnya, Anda akan melihat

$ 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
Leandro Noskoski
sumber
Ini adalah systemd-resolve --status setelah mengubah /etc/systemd/resolved.conf pastebin.com/AeUFQkyB Browser masih gagal untuk menyelesaikan nama juga.
FireSpore
12
systemd sangat rusak. DHCP memberi tahu host apa DNS seharusnya, (dan banyak pengaturan jaringan lainnya) Anda tidak harus mengubah file apa pun pada host agar ini berfungsi.
teknopaul
4
Tidak terlihat optimal, Anda harus melakukan ini setiap kali Anda mengubah DNS server / jaringan
Victor
1
Anda perlu mengkonfigurasi ulang setiap kali perubahan DNS IP (misalnya pada jaringan yang berbeda).
Victor
34

Bug systemd yang dikenal .

Solusi sementara tanpa perlu mengkonfigurasi ulang jika IP DNS berubah:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot
teknopaul
sumber
2
Solusi ini bekerja agak, perintah host dan nslookup menyelesaikan nama dengan benar, tetapi wget dan browser tidak
FireSpore
1
ini benar ... bug saat ini adalah tautan yang /etc/resolv.confberasal dari /run/systemd/resolve/stub-resolv.confbollox harus /run/systemd/resolve/resolv.conf dicatat bahwa /etc/resolv.conftidak benar-benar ada dalam kedua kasus
Tn. Heelis
@FireSpore: apakah pingberhasil? hostdan nslookupatasi nama host secara berbeda dari pingatau wget. Anda mungkin perlu mencari /etc/nsswitch.confsolutioin.
HongboZhu
9

Saya akhirnya mendapat solusi untuk masalah ini untuk ubuntu 17.10. Secara default, versi ini menggunakan Ubuntu systemd-resolved, yang saya harap akan stabil untuk versi berikutnya.

Untuk menggunakan custom dns alih-alih cache yang diselesaikan dengan systemd lokal, lakukan hal berikut:

  1. tambahkan server nama baru. Edit file /etc/systemd/resolved.confsebagai sudoer. Di sini saya sudah berkomentar entri DNS dan menempatkan dns saya [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. batalkan symlink sebenarnya ke /etc/resolv.conf

  3. buat symlink baru sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. mulai ulang layanan sudo service systemd-resolved restart
  5. mulai ulang manajer jaringan sudo systemctl restart networking

Dan sekarang jika Anda menggali nama yang disediakan oleh add dns Anda, Anda akan melihat catatan terselesaikan dig nexus.default.svc.cluster.mydomain

Langkah terakhir adalah memperbarui urutan resolusi /etc/nsswitch.conf, dengan menempatkan dns sebelum mdns4_minimal

hosts           files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname
Fabio Fumarola
sumber
1
Anda perlu mengkonfigurasi ulang setiap kali perubahan DNS IP (misalnya pada jaringan yang berbeda).
Victor
Victor, apakah Anda punya solusi terbaik? ini sama jika Anda menggunakan konfigurasi jaring statis
Fabio Fumarola
Jawaban ini berfungsi untuk konfigurasi statis dan dinamis: askubuntu.com/a/974482/343617
Victor
terima kasih, solusi yang saya tunjukkan adalah statis. Saya setuju
Fabio Fumarola
Ini hanya bekerja untuk saya pada pemasangan baru 18,04
JamesCW
1

Saya menyusun skrip yang bekerja di sekitar masalah Netplan saat ini tidak mendukung kemampuan untuk menggantikan DHCP yang disediakan server DNS dan urutan pencarian domain. Itu menciptakan file Netplan Netplan dan mengkonfigurasi systemd-diselesaikan untuk bekerja seperti yang diharapkan.

################## 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
Wildstalker
sumber
1

Solusi yang bekerja untuk saya diposting di sini di blog saya

Gunakan nano editor untuk mengedit 2 file ini

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

Tambahkan server DNS yang ingin Anda gunakan

nameserver 9.9.9.9
nameserver 127.0.0.1

Kemudian mulai kembali layanan

service systemd-resolved restart

Pemeriksaan terakhir:

cat /etc/resolv.conf

Apakah nslookup

nslookup google.com 

saya hanya menggunakan ini dan itu memperbaiki masalah pada laptop saya di rumah, tetapi beberapa waktu di masa depan ketika saya keluar dari jaringan rumah saya, saya dapat melihat bahwa itu akan menyebabkan masalah, karena server dns primer dan sekunder masih akan menjadi rumah saya server dengan alamat lan mereka.

ookangzheng
sumber
2
Anda perlu mengkonfigurasi ulang setiap kali perubahan DNS IP (misalnya pada jaringan yang berbeda).
Victor
itu tidak elegan, tapi itu bekerja gcloud kadang-kadang menyabot tidur saya.
Rodrigo Ferrari
Pengeditan /etc/resolv.conftidak berfungsi karena file akan ditimpa saat systemd-resolvedrestart. Cukup edit /etc/systemd/resolved.conf. Lihat jawaban saya di sini: askubuntu.com/questions/977243/ubuntu-17-10-disable-netplan/…
EnzoR
1

Anda /etc/resolv.confbukan masalah. systemd-resolvedhanya default untuk tidak dikonfigurasi, sehingga gagal semua pencarian. Jangan ragu untuk mengomel tentang Tidak Dikonfigurasi vs Default yang Wajar.

Tambahkan server nama secara manual ke systemd-resolved. (mengedit per komentar Olorin di bawah ini untuk menambahkan mkdir, jalur yang benar /etctidak /lib, untuk bertahan dari pembaruan sistem)

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

Menambahkan:

[Resolved]
Cache=yes
DNS=192.168.1.152

Kemudian...

sudo systemctl daemon-reload

systemd-resolvedpintar, tetapi, karena tidak dikonfigurasi, oleh pengelola paket, itu hanya terlihat bodoh karena pengelola paket tidak percaya pada A Reasonable Default. Kita dapat menempatkan 13 server root internet di sana alias "djb way", atau 10 server opennic: https://pastebin.com/JBfYVVtG atau tiga server opennic tercepat, yang diukur dengan namebench. Plus nameserver ISP, tentu saja. Plus Google, tentu saja. systemd-resolvedbukan masalahnya. Saya masalahnya.

BobDodds
sumber
Meskipun Anda mungkin tidak ingin mengedit file /usr/lib- itu kemungkinan akan ditimpa pada peningkatan paket. Saya pikir file yang sesuai di suatu tempat /etc/systemdadalah cara untuk pergi (sudah harus /etc/systemd/resolved.confsiap untuk diedit oleh admin).
Olorin
1
man resolved.conf.d, dengan d, yes /etc/systemd/resolved.d adalah tempatnya. Saya memperhatikan bahwa kita sering harus mkdir /etc/[path[.d. bob @ laptop l /etc/systemd/resolved.conf.d ls: tidak dapat mengakses '/etc/systemd/resolved.conf.d': Tidak ada file atau direktori seperti itu
BobDodds
0

Pada sistem saya, saya menemukan symlink buruk: /etc/resolv.confadalah symlink yang menunjuk ke/run/systemd/resolve/stub-resolv.conf

File ini hanya mengandung satu baris:

nameserver 127.0.0.53#53

Akibatnya, pencarian DNS jaringan lokal sering hilang.

Jadi, alih-alih saya berubah /etc/reolv.confuntuk menunjuk/run/systemd/resolve/resolv.conf

dan sekarang berfungsi dengan benar.

Bánó Gábor
sumber
0

Ini aneh tetapi satu-satunya solusi yang bekerja untuk saya di Ubuntu 18.04 adalah yang saya temukan di sini :

Pertama, ubah /etc/resolv.confdengan mengatur server nama yang diinginkan :

# nano /etc/resolv.conf

Atur, misalnya,

nameserver 8.8.8.8

Dan kemudian lakukan

# chattr +i /etc/resolv.conf

Ini melindungi /etc/resolv.conffile sehingga tidak ada yang bisa memodifikasinya termasuk pengguna root.

Artem S
sumber
-3

Saya memiliki masalah yang sama. Setiap reboot, tidak ada yang akan menyelesaikan. Saya telah mencopot semuanya dan menginstal ulang sekitar 50 kali. Itu hanya rusak.

jadi perbaikannya adalah .... "cukup terapkan beberapa pengaturan setiap kali Anda mem-boot pc Anda, yang memungkinkan 90% nama host untuk menyelesaikan tetapi pembaruan wget dan apt-get dan pemutakhiran akan gagal secara acak tanpa alasan"

cat /etc/systemd/resolved.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

Saat menggunakan Ubuntu 17.10 Desktop, Anda harus mengedit satu file yang mengatakan JANGAN EDIT FILE INI BLAH BLAH BLAH

nah itulah HANYA cara kerjanya ~!

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

Jadi hapus 127.0.0.53 IP sebagai server nama dan masukkan yang lain, google misalnya. Tampaknya alamat IP DNS saya yang sebenarnya juga tidak menyelesaikan nama host (meskipun berfungsi pada 10 mesin dan perangkat lain di rumah), tetapi google berfungsi dengan baik.

ravery
sumber