Resolvconf ve NetworkManager tarafından belirlenen yanlış ad sunucusu


34

Benim DNS sunucusu olduğu 192.168.1.152.

Bu DNS istemcilere DHCP tarafından sağlanmaktadır. LAN'ımdaki Windows istemcileri bu DNS'yi kullanarak adları doğru şekilde çözüyor, ancak Ubuntu VM'im çalışmıyor.

VM, köprü ağı ile kurulur ve DNS sunucusuna düzgün şekilde sağlanır, ancak yerel ana bilgisayarlarım nslookup veya tarayıcılar tarafından çözümlenmiyor.

İşte nslookupyerel etki alanlarımdan biri:

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

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

DNS sunucumu kullanarak çözmesi gerekenler:

# 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 yanlış bir ad sunucusu var:

# 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

Bu komutu ben koştum. DNS Sunucuları altında, kafa karıştırıcı bir şekilde doğru sunucuyu (ve varsayılan ağ geçidimi) belirtir.

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

DNS sunucusunun IP'sini bir yapılandırma dosyasında "kodlamak" istemiyorum çünkü ağları değiştirdiğimde çözemiyorum.

DHCP sunucusunun IP'sini otomatik olarak ayarlamak için resolvconf ve NetworkManager'ı nasıl alabilirim /etc/resolv.conf?

Yanıtlar:


37

/etc/systemd/resolved.confİstediğiniz DNS sunucusunu ekleyerek düzenlemeyi deneyin :

bunu değiştir:

[Resolve]
#DNS=

buna (ama istediğini kullan - bu bir örnek):

[Resolve]
DNS=192.168.1.152

ondan sonra, servisi yeniden başlatın:

service systemd-resolved restart

Ve durumunu kontrol ederken görmelisin

$ 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

Burada /etc/systemd/resolved.conf pastebin.com/AeUFQkyB değiştirildikten sonra systemd-statik - istatus Tarayıcılar hala isimleri de çözemiyor.
FireSpore

12
systemd çok bozuk. DHCP, ana makineye DNS'nin ne olması gerektiğini (ve diğer ağ ayarlarının bir demetini) bunun çalışması için ana bilgisayardaki hiçbir dosyayı değiştirmeniz gerekmediğini bildirir.
teknopaul

4
En uygun görünmüyorsa, DNS sunucusunu / ağını her değiştirdiğinizde bunu yapmanız gerekecek
Victor,

1
DNS IP'sinin her değiştiğinde (örneğin farklı ağlarda) yeniden yapılandırmanız gerekir.
Victor,

34

Bilinen systemd hata .

DNS IP'sinin değişmesi durumunda yeniden yapılandırmaya gerek olmayan geçici geçici çözüm :

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

2
Bu çözüm düzgün, biraz ev sahibi ve nslookup komutlar gidermek isimleri çalıştı, ama wget ve tarayıcılar değildir
FireSpore

1
Bu doğru ... Geçerli hata link olmasıdır /etc/resolv.confgelir dan /run/systemd/resolve/stub-resolv.confhangi olması gerektiği bollox olan /run/systemd/resolve/resolv.conf notu /etc/resolv.confgerçekten her iki durumda da yok
Mr Heelis

@FireSpore: pingSonra çalışıyor mu? hostve nslookupana bilgisayar adlarını pingveya ' dan farklı şekilde çözümleyin wget. Sen içine bakmak gerekebilir /etc/nsswitch.confbir solutioin için.
HongboZhu

9

Sonunda Ubuntu 17.10 için bu problem için bir çözüm buldum. Varsayılan olarak, Ubuntu’nun bu sürümünü kullanır systemd-resolved, umarım sonraki sürümler için kararlı olur.

Yerel sistem çözümlenmiş önbelleği yerine özel dns kullanmak için aşağıdakileri yapın:

  1. yeni ad sunucusu ekleyin. Dosyayı /etc/systemd/resolved.confsudoer olarak düzenleyin . Burada DNS girişini yorumladım ve dns'imi yerleştirdim [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. gerçek bağlantıyı iptal etmek /etc/resolv.conf

  3. yeni bir sembolik bağlantı oluştur sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. hizmeti yeniden başlat sudo service systemd-resolved restart
  5. ağ yöneticisini yeniden başlat sudo systemctl restart networking

Ve şimdi, add dns'iniz tarafından verilen bir isme bakarsanız, kaydın çözülmüş olduğunu görmelisiniz. dig nexus.default.svc.cluster.mydomain

Son adım, /etc/nsswitch.confdns'i mdns4_minimal'den önce yerleştirerek çözünürlük sırasını güncellemektir.

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

1
DNS IP'sinin her değiştiğinde (örneğin farklı ağlarda) yeniden yapılandırmanız gerekir.
Victor,

Victor, en iyi çözümün var mı? statik net config kullanıyorsanız bu aynıdır
Fabio Fumarola

Bu cevap hem statik hem de dinamik konfigürasyonlar için işe yarar
Victor

teşekkür ederim, belirttiğim çözüm statikti. Katılıyorum
Fabio Fumarola

Bu sadece benim için yeni bir 18.04 kurulumunda çalıştı
JamesCW

1

Netplan sorunu etrafında çalışan ve DHCP tarafından sağlanan DNS sunucularını ve alan arama düzenini geçersiz kılma yeteneğini desteklemeyen bir senaryo hazırladım. Netplan yaml dosyasını oluşturur ve beklendiği şekilde çalışacak şekilde sistemd çözümlü yapılandırır.

################## 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

Benim için işe yarayan çözüm blogumda yayınlandı

Bu 2 dosyayı düzenlemek için nano editörünü kullanın

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

Kullanmak istediğiniz DNS sunucularını ekleyin

nameserver 9.9.9.9
nameserver 127.0.0.1

Ardından hizmeti yeniden başlatın

service systemd-resolved restart

Son kontrol:

cat /etc/resolv.conf

Nslookup'ı yapın

nslookup google.com 

Ben sadece bunu kullandım ve evdeki dizüstü bilgisayarımdaki sorunu düzelttim, ancak gelecekte ağımın dışında kaldığımda bir süre, sorunlara neden olacağını görebiliyorum, çünkü birincil ve ikincil dns sunucusu hala evim olacak lan adresleri ile sunucular.


2
DNS IP'sinin her değiştiğinde (örneğin farklı ağlarda) yeniden yapılandırmanız gerekir.
Victor,

zarif değil, ama iş gcloud bazen yatma zamanımı sabote ediyor.
Rodrigo Ferrari

Yeniden başlatma /etc/resolv.confsırasında dosyanın üzerine yazılacağından düzenleme çalışmaz systemd-resolved. Sadece düzenle /etc/systemd/resolved.conf. Cevabımı burada görün: askubuntu.com/questions/977243/ubuntu-17-10-disable-netplan/…
EnzoR

1

Senin /etc/resolv.confproblemin değil. systemd-resolvedsadece yapılandırılmamış varsayılanlar, bu yüzden tüm aramaları başarısız olur. Yapılandırılmamış vs makul bir varsayılan hakkında rant için çekinmeyin.

Ad sunucularını el ile ekleyin systemd-resolved. (Aşağıdaki Olorin yorumuna başına düzenleme eklemek için mkdir, doğru yolu /etcdeğil /libsistem güncellemeleri hayatta kalmak için,)

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

Eklemek:

[Resolved]
Cache=yes
DNS=192.168.1.152

Sonra...

sudo systemctl daemon-reload

systemd-resolvedakıllıdır, ancak paket yöneticileri tarafından olduğu gibi yapılandırılmamıştır, sadece LOOKS aptallarıdır, çünkü paket üreticileri Makul bir Varsayılan'a inanmazlar. Buraya 13 internet root sunucusu yani "djb way" veya 10 opennic server koyabiliriz: https://pastebin.com/JBfYVVtG veya namebench tarafından ölçülen en hızlı üç opennic server. Ayrıca ISS ad sunucuları, elbette. Artı Google, elbette. systemd-resolvedsorun değil Ben problemim


Muhtemelen bir dosyayı düzenlemek istemiyor olsanız da, /usr/libbunlar muhtemelen paket yükseltme işleminin üzerine yazılacaktır. Bir yerde buna karşılık gelen bir dosya /etc/systemdgitmek için bir yol olduğunu düşünüyorum (zaten /etc/systemd/resolved.confyöneticileri tarafından düzenlenmeye hazır olması gerekir).
Ocak'ta Olorin

1
man resolved.conf.d, d ile, evet /etc/systemd/resolved.d burası. Sık sık mkdir /etc/LEXpathresini.d yapmamız gerektiğini fark ediyorum. bob @ laptop l /etc/systemd/resolved.conf.d ls: '/etc/systemd/resolved.conf.d' dosyasına
erişilemiyor

0

Benim sistemimde kötü bir sembolik bağlantı buldum: /etc/resolv.confbir sembolik bağlantı oldu/run/systemd/resolve/stub-resolv.conf

Bu dosya sadece bir satır içeriyor:

nameserver 127.0.0.53#53

Sonuç olarak, yerel ağın DNS araması genellikle eksikti.

Yani, bunun yerine /etc/reolv.confişaret ettim/run/systemd/resolve/resolv.conf

ve şimdi düzgün çalışıyor.


0

Garip ama Ubuntu 18.04'te benim için çalışan tek çözüm burada bulduğum tek çözümdü :

İlk önce, /etc/resolv.confistenen ad sunucusunu ayarlayarak değiştirin :

# nano /etc/resolv.conf

Örneğin,

nameserver 8.8.8.8

Ve sonra

# chattr +i /etc/resolv.conf

Bu, /etc/resolv.confdosyayı korur, böylece kök kullanıcı dahil hiç kimse dosyayı değiştiremez.


-3

Bende de aynı problem var. Her yeniden başlatmada hiçbir şey çözülmez. Her şeyi kaldırdım ve şimdiden yaklaşık 50 kez yeniden yükledim. Sadece sadece kırık.

bu yüzden düzeltme .... "sadece her açılışında bir kaç ayar uygulamanız yeterlidir; bu, ana bilgisayar adlarının% 90'ının çözülmesine izin verir, ancak wget ve apt-get güncellemeleri ve yükseltmeleri sebepsiz yere rasgele başarısız olur"

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

Ubuntu 17.10 Desktop kullanırken, şunu söyleyen dosyayı düzenlemeniz gerekir. BU DOSYA BLAH BLAH BLAH'INI DÜZENLEME DEĞİLDİR adlı

peki bu işe yarıyor SADECE böyle ~!

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

Dolayısıyla, 127.0.0.53 IP’yi ad sunucusu olarak kaldırın ve başka bir tane girin, örneğin google. Görünüşe göre asıl DNS IP adresim ana bilgisayar adlarını da çözmüyor (evdeki diğer 10 makinede ve cihazda çalışsa bile), ancak google’ın iyi çalışıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.