Ubuntu 13.10 (Saucy) sürümüne yükselttikten sonra çalışmayan bir DNS çözümünü nasıl düzeltirim?


64

13.10'a yükselttikten sonra DNS çözümlemem başarısız oluyor. DHCP (LAN) tarafından aldığım DNS sunucularının kullanılmadığı görülüyor.

Ben geçici ekleyerek sorunu çözmek olabilir nameserver 8.8.8.8için /etc/resolv.conf. Ancak, intranet ana bilgisayarları hala çözülemez.

Ağ göstergesindeki Bağlantı Bilgisi menü öğesine tıklandığında , Birincil DNS ve İkincil DNS doğru şekilde ayarlanır. Ama bilgisayarım onları kullanmamaya çalışıyor.

Yani benim sorularım:

  • Bir resolv.confşey olursa ne koymalıyım ?
  • Bilgisayarımın hangi isim sunucularını sorguladığını nasıl öğrenebilirim?
  • Daha sonra nereye bakmalı, öğrenmek için neden DHCP tarafından alınan ad sunucuları kullanılmıyor?

2
12.04'ten 14.04'e yükseltirken de aynı sorunu gördüm.
Tarrasch

6
Birkaç gün önce 16.10'a yükselttiğimden beri günlük DNS hataları alıyorum.
WindRider

@WindRider aynı sorunu var, aşağıdaki dnsmasq ile hile çalışıyor gibi görünüyor.
Suor

Yeni bir Lubuntu 17.04 kurulumunda sorun yaşadım
rubo77

Yanıtlar:


83

Öncelikle Ubuntu 12.04'ten bu yana isim çözümlemenin Ubuntu'da nasıl çalıştığını biraz bilmek gerekir.

Stéphane Graber geçen yıl bu konuda bazı bilgiler blogged burada . Bilinmesi gereken en önemli şey, hem Ubuntu Sunucusu hem de Ubuntu Masaüstü'nün resolv.confdosyayı yönetmek için resolvconf kullanmasıdır . Bu, artık /etc/resolv.confdoğrudan düzenlememeniz gerektiği anlamına gelir ; bunun yerine, ağ arabirimi yapılandırma yardımcı programınızı resolvconf'a doğru bilgileri sağlayacak şekilde yapılandırmanız gerekir. Ubuntu Sunucusu için ağ arayüzü konfigürasyon yardımcı programı ifup'tır ve dosya tarafından konfigüre edilir /etc/network/interfaces. Ubuntu Desktop için ağ arayüzü yapılandırma yardımcı programı NetworkManager'dır . Bu ne kullanıyorsun.

NetworkManager, Ağ göstergesi> Bağlantıları Düzenle ile yapılandırılmıştır . Bununla birlikte, DHCP tarafından yapılandırılan ağ arayüzleri için normal olarak herhangi bir ayarı manuel olarak değiştirmek gerekli değildir. Normal olarak olan şey, (uzak) DHCP sunucusunun, hem yerel arabirim için bir IP adresi hem de kullanılacak bir (uzak) DNS ad sunucusunun adresini NetworkManager'a sağlamasıdır. NetworkManager, yerel olarak 127.0.1.1'de dinleyen bir yönlendirme ad sunucusu örneği başlatır. Bu adres, 127.0.1.1, içine konan resolvconf dosyasına gönderilir nameserver 127.0.1.1./etc/resolv.conf. NetworkManager ayrıca DHCP tarafından sağlanan DNS ad sunucusunun (uzak) IP adresini iletme ad sunucusuna verir. Bu nedenle, yerel sistemde çalışan bir program çözümleyiciden bir ana bilgisayar adını bir IP adresine çevirmesini ister; çözücü yerel yönlendirme ad sunucusunu 127.0.1.1'de sorgular; iletme ad sunucusu, kendisine anlatıldığı uzak ad sunucularını sorgular, bir yanıt alır ve zinciri geri gönderir.

NetworkManager, D-Bus üzerinden iletme ad sunucusu işlemi ile iletişim kurar. Komutu çalıştırarak NetworkManager'ın iletme ad sunucusuna ne söylediğini görebilirsiniz.

nmcli dev list iface eth0 | grep IP4.DNS

Yorumlardan kaynaklanan Güncelleme:
o resolvconf aslında dosyasına yazar Not /run/resolvconf/resolv.confhangi /etc/resolv.confbir sembolik bağlantı olması gerekiyordu. /etc/resolv.confSembolik bir bağlantı değilse , onu yeniden oluşturmanız gerekir. Bunu yapmak için koşabilirsiniz

sudo dpkg-reconfigure resolvconf

veya

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        

Bu bilgi için çok teşekkür ederim. Benim durumumda komut doğru DNS sunucularını gösteriyor. Ancak resolf.conf dosyası güncellenmedi. Değerlerimi oraya koyduğum zaman damgası var. Bu yüzden neden resolvconf'un dosyayı yazmadığını öğrenmem gerekecek.
Witek

15
Resolvconf aslında /run/resolvconf/resolv.conf dosyasını yazar ve /etc/resolv.conf dosyasının /run/resolvconf/resolv.conf ile sembolik bir bağlantı olduğu varsayılır. /Etc/resolv.conf dosyasını sildiyseniz, sembolik bağlantıyı sildiniz. Sembolik bağlantıyı yeniden oluşturmak için koşabilirsin sudo dpkg-reconfigure resolvconfya da yapabilirsinmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
jdthood

7
Bu 'düzeltme' dışında her şeye sahiptir. Bu sorunu nasıl çözebilirim?
Amal Murali

5
Düzeltme sudo dpkg-reconfigure resolvconf, cevabın son bölümünde önerildiği gibi çalıştırılabilir .
jdthood

Teşekkür ederim!!! Sistemime ne oldu emin değilim ama sudo dpkg-reconfigure resolveconfharika görünüyordu!
meanbunny

49

Aşağıdaki linkte önerilen değişikliği yaptım (dnsmasq'ı devre dışı bırakarak). Şimdi her şey harika çalışıyor! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html

/etc/NetworkManager/NetworkManager.confDosyayı aç

sudo gedit /etc/NetworkManager/NetworkManager.conf

Satırı şu şekilde yorumla:

#dnsmasq deactivated
#dns=dnsmasq

4
Dnsmasq dışarı değerlendirdikten sonra, ağ yöneticisi yeniden gerekir: sudo restart network-manager.
Don Kirkby

2
Benim durumumda (Xubuntu) komut:sudo /etc/init.d/network-manager restart
aviram83

Eğer bu durum sizin başınıza geldiyse, yüklü dnsmasq olmasa ve yorum yapabileceğiniz bir şey olmasa bile, dns=defaultbu [main]bölüme ekleyin . NetworkManager, aksi takdirde kullanacağı kendi kötü dnsmasq eklentisine sahiptir.
dstibbe

1
Bu yeniden başlatma işlemini yapmam gerekiyor network-manager-sudo service network-manager restart
Sungam

Kutumdan birinin 17.10'a yükselttikten sonra dns'si olmadı ve /etc/resolv.conf'un sembolik bir bağlantı olmadığı ortaya çıktı. Onu düzeltti. Başka bir kutu yükseltme bitmedi ve dir .dpkg-yeni bir dosya dir buldum, ana fark dnsmasq onları diff. Üzerine kopyalandı ve herhangi bir arka plan yeniden başlatmadan çalıştı
fchen

20

2 EDIT: Önceki yazı moderasyon tarafından doğru bir şekilde silindi, çözüm olarak bulduğum şeyi gönderiyorum. Bunun için özür dilerim.

EDIT: Ben sadece cevabı buldum ve bu çok sayfanın içinde - benim miopy için üzgünüm. Aşağıdaki bulgularımı gönderdim, bu sayfada Richard Lindstedt'in doğru cevabını genişlettim. Biraz bağlam için erken gürlememi bıraktım. Lütfen Richard'ın cevabını yükseltin, haketti.

Aslında çok kolay.

sadece senin arayüzleri conf dosyasını açın -> sudo vi / etc / network / interfaces

Bu kesinlikle OP'ye yardımcı olmadı ve şimdi bana yardımcı olmuyor. Statik adres istemiyoruz, DHCP sunucusunun bize gönderdiklerini kullanmak istiyoruz. NetworkManager onları tanıyor gibi görünüyor, ancak Ubuntu onları açıkça görmezden geliyor:

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

Fakat...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

Ve / etc / network / interfaces:

auto lo
iface lo inet loopback

Bu biraz garip, burada tüm arayüzlerin ilan edilmesini beklerdim (ya da bir şey eksik mi?).

Yani, kısacası:

  • Başlamak için herhangi bir dosyayla uğraşmadım
  • Çoktan kaçtım dpkg-reconfigure resolvconf
  • Doğru sembolik bağlantı yerinde
  • NetworkManager doğru DNS sunucularını DHCP'den alıyor
  • Ubuntu böyle adresleri kullanmaz
  • Çözüm geçici olarak / etc / network / arabirimleri üzerinde 8.8.8.8 koymaktır.
  • DHCP tarafından sağlanan DNS sunucularını her durumda kullanmak istiyorum.

Başka bir konu açmamak, çünkü şu an 14.10 yaşımda olduğumda tam bir sorun değil (fakat bu, 12.10'dan 13.04'e yükselttiğimden beri beni rahatsız ediyor).

ÇÖZÜM

Bu son ifade beni doğru yolda buldu ve sadece o zaman Richard'ın cevabını fark ettim.

Sorun, çelişkili dnsmasqve resolvconfpaketlerle ilişkili görünüyor . 12.10 yılına kadar dnsmasqkullanıldı. İtibaren 13.04 itibaren Ubuntu sen paketi yüklemiş bir dnsmasq / resolvconf melez, geçiş gibiydi dnsmasq-baseve resolvconfancak, dnsmasqkendisi.

Yükseltme komut dosyalarında bir hata olup olmadığını 13.04 veya başka bir şey için söyleyemem, çünkü yükseltme (yeni yüklemelerde olduğu gibi) resolvconf yüklendiğinde, dnsmasq-base yükseltilir ve dnsmasq (doğru) kaldırılır.

Catch, yükseltme betiği dns=dnsmasqsatırdaki yorumu yorumlayamıyor /etc/NetworkManager/NetworkManager.conf. Bu nedenle, dnsmasq arka plan programı artık sistemde bulunmasa da, /etc/resolv.conf hala olmasını bekliyor.


BU ÇOK Müthiş!
metadings,

1
OMG bu, son 3 yıldır yaşadığım DNS problemlerimi çözdü! Eğer varsa dnsmasqve dnsmasq-baseyüklü, NM koyacağız 127.0.0.1içinde /etc/resolv.confyerine 127.0.1.1. Basitçe kaldırdım dnsmasq(ve NM'yi etkinleştirdim) ve her şey iyi sonuç veriyor.
user1129682 19:15

4
Gelecek Google çalışanları bunun sudo service network-manager restartyürürlüğe girmesi gerektiğine dikkat etmelidir .
çizelgesi

Servis ağ yöneticisi iyi bir noktaya yeniden başlatma!
Henrique

7

Aslında çok kolay.

sadece senin arayüzleri conf dosyasını açın -> sudo vi / etc / network / interfaces

ve arabiriminizin altında (muhtemelen eth0) tüm olağan ayarları göreceksiniz.

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

Ağ geçidinden sonra sadece 'dns-nameservers 8.8.8.8 8.8.8.9' veya kullanacağınız isim sunucusu ekleyin.

Öyleyse yapılandırmanız şöyle olmalı:

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

o zaman sadece bir 'sudo servis ağı yeniden başlat' yapın ve gitmeniz iyi olur!

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.