Bir DNS sunucusunu resolv.conf aracılığıyla nasıl eklerim?


207

Ubuntu 12.04 LTS'de (Precise Pangolin) /etc/resolv.confişe yaramaz mı ?

DNS sunucusu bilgilerinin şimdi Ağ Yöneticisi'nde depolandığını görüyorum . nmcliKomut satırı aracı sizin için listeleyebilirsiniz.

Bir tane daha DNS sunucusu eklemek istersem /etc/resolv.conf, resolvconfpaket yardımını kullanarak eklemek ister misiniz ?


2
Ben olmalıdır yukarıda belirtilen komutu düşünüyorum nm-tool, değil nmcli.
Jesse Glick

Yanıtlar:


139

Eğer /etc/resolv.confiçeriyorsa nameserver 127.0.0.1o zaman girdi ekleme /etc/resolvconf/resolv.conf.d/tailgerçekten yararlı bir şey yapmayacağım.

NetworkManager kullanıyorsanız, bunun yerine statik olarak aderver adreslerini ağ göstergesiyle eklemelisiniz : Bağlantıları Düzenle ... | Düzenle ... | IPv4 Ayarları | Ek DNS sunucuları .

Eğer varsa gerçekten daha girdileri eklemek istediğiniz /etc/resolv.confbir oluşturmak /etc/resolvconf/resolv.conf.d/tailve onları orada ekleyin.

Her Ubuntu sürümünde olduğu gibi, burada bulunan Ubuntu Sürüm Notlarını okumanız önerilir:

Masaüstü ve Ortak Altyapı bölümleri bir bağlantı içerir.


1
@stgraber, lütfen aşağıda bulduğum ve gönderdiğim alternatif yaklaşım hakkında yorum yapın. Bir /etc/resolvconf/resolv.conf.d/taildosya eklemek veya Ağ Yöneticisi'ni kullanmakla nasıl karşılaştırılır ? Teşekkürler.
Randall Cook,

3
@stgraber Ubuntu Server için ne önerirsin? Blogunuzdan ve Network-Manger’ın bunu yönetmenin en iyi yolu gibi göründüğünü fark ettim, ancak sistemime bir ağ yöneticisi yüklemesi yapmak, ihtiyacım olmayan bir sürü şeyi kuracak (yani GUI işleri) ).
Avery Chan,

1
/Etc/resolvconf/resolv.conf.d/head sitesine (blog postanıza göre) giriş ekleyenler nelerdir?
sup

3
@AveryChan, @ randallcook tarafından önerilen "üçüncü yaklaşımı" kullanın - içindeki dns-nameserverseth0 bölümünüzü ekleyin /etc/network/interfaces.
mrm

1
/etc/resolvconf/update.d/libcUbuntu 14.04.1 sunucusunda: # Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no # to allow additional nameserver addresses to be listed in # resolv.conf after an initial loopback address 127.* or ::1. ( şovun /etc/default/resolvconf23 ve 24. satırında ayarlayın /etc/resolvconf/update.d/libc.
immeëmosol

134

Burada , aşağıdakine benzer bir satır eklemeyi içeren başka bir yaklaşım buldum /etc/dhcp/dhclient.conf:

prepend domain-name-servers x.x.x.x, y.y.y.y;

Aynı şekilde, burada satırlara ekleme içeren üçüncü bir yaklaşım buldum /etc/network/interfaces:

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

Güncelleme: İşte üçüncü yaklaşımın resmi belgeleri .


18
Bunun için oy kullandım çünkü third approachbunu yapmanın en kolay yolu bu.
Billy Moon,

1
@billy Ben üçüncü yöntem hiç çalışamadım .. Ben sadece burada listelenen ilk dclient.conf düzenleme, benim için çalıştı.
Jeff Atwood

9
Not: dhclient.conf dosyasının düzenlenmesi, yalnızca dhclient kullanıldığında etkili olur (ve hem ifup hem de NetworkManager tarafından kullanılır!) / Etc / network / interfaces komutunun sadece ifup kullanıldığında etkisi olur. NetworkManager bağlantı düzenleyicisini kullanarak NetworkManager bağlantılarını yapılandırma, yalnızca NetworkManager kullanılıyorsa etkili olur.
jdthood

1
Yanılmıyorsam, üçüncü yaklaşım DHCP tarafından döndürülenlerden SONRA başka bir isim sunucusu ekler. Önce gelmesini istiyorsanız, diğer seçeneklerden biri daha uygundur. Ben /etc/resolvconf/resolv.conf.d/head(orada yanıltıcı "DÜZENLEME ETMEYİN" yorum üstesinden sonra :))
starfry

1
@ Mr.Hyde, bunlar komut satırı komutları değil, / etc / network / interfaces komutuna eklenecek satırlardır.
Randall Cook,

90

Resolvconf paketinden bahsediyor gibisiniz.

Resolvconf paketini kurun .

Çalıştırmak

cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig  #backup copy, always do this
sudo nano head

Dosyanın üstü korkutucu bir uyarıdır. /Etc/resolv.conf dosyası bu dosyanın içeriğinden otomatik olarak oluşturulur; Uyarı orada olduğundan, /etc/resolv.conf dosyası oluşturulduğunda /etc/resolv.conf dosyasına girilir. Dosyanın sonuna

nameserver <ip_of_nameserver>

Ctrl xDosyayı kaydetmek için Evet tuşuna basın ve cevaplayın. Bitirmek için, /etc/resolv.conf dosyasını yeniden düzenleyin, böylece değişiklikler şu anda uygulanır:

sudo resolvconf -u

Ardından eklediğiniz çizginin orada olduğunu görmek için /etc/resolv.conf içeriğini kontrol edin. Ayrıca, bir dahaki sefere makineniz yeniden başlatıldığında veya şebeke servisiniz yeniden başlatıldığında, hangisi önce gelirse, yine orada olacak.


Dosya uyarısı hakkındaki bilgiler tam ihtiyacım olan şey. Dosyayı düzenlememem gerektiği izlenimindeydim! Teşekkürler!
Xunnamius

Bu benim için en iyi cevap!
Siwei Shen 申思维

31

Aşağıda, Ubuntu Server sürümünü çalıştırdığım ve NetworkManager yerine ifup kullandığımdan beri bulduğum en iyi yolu göstereceğim.

Aslında benim için bunu kolaylaştırdılar :) / etc / network / interfaces dosyasına hepsini koyarak. Resolv.conf dosyasına yazmış olacağınız konfigürasyonlar, aşağıdaki örnekte olduğu gibi ağ adaptörü konfigürasyonlarınızla aynı dosyada olabilir:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

Umarım bu yardımcı olur ve benim için kolaylaştırır, şimdi statik IP adresleri oluşturabilir ve ad sunucularını ve dns alan adını tek bir dosyada ekleyebiliriz :)


1
Teşekkür ederim. Bu benim de en sevdiğim yöntem oldu. Konu dışı bir not: 'ağ' ve 'yayın' adreslerini belirtmeniz gerekmez, çünkü bunlar 'adres' ve 'ağ maskesi' nden otomatik olarak hesaplanır. Tek ihtiyacınız olan 'adres', 'ağ maskesi' ve 'ağ geçidi'.
Martijn Heemels

Bu en temiz cevap. Dns- * anahtar kelimelerini doğru yazdığınızdan emin olun. Yanlış yazılmış "dns-nameservers" benim asıl sorunumdu.
John McGehee,

18

Mine, Ubuntu Server 12.04 kullanıyor. Aşağıdaki değişiklikleri yaptım ve sunucuyu yeniden başlattım (genellikle bu yalnızca ağ arabirimini, yani ifdown eth0veya aşağı getirerek yapılabilir ifup eth0).

Dosyaya /etc/resolvconf/resolv.conf.d/baseaşağıdaki girişleri ekledim:

nameserver 8.8.8.8
nameserver 8.8.4.4

Umarım yukarıdaki yardımcı olur!


12

NetworkManager'ı Frank'in cevabında belirtildiği gibi kullanabilirsiniz, ancak elle düzenlemeyi tercih /etc/resolv.confediyorsanız, bunu silerek (aslında bir bağlantı) ve istediğiniz içerikle yeni bir düz dosya oluşturarak yapabilirsiniz. Yardımcı resolvconfprogram yalnızca hiç dosyaya yazar /run/resolvconf/resolv.conf.


9

Not: Bu cevap, sadece istenen bir isim sunucusunu önceden beklemeye odaklanarak, Sorunun oldukça farklı, birleştirme öncesi bir versiyonuydu.

Bu 12.04 öncesi çalışır:

Düzenle /etc/dhcp3/dhclient.confve ekle:
prepend domain-name-servers 127.0.0.1;

(Aslında, bu satır zaten var; tek yapmanız gereken yorumunuzu kaldırmak.)


DHCP tarafından atanmış adresiniz yoksa bu işe yarar mı?
Azendale

Dhclient yapılandırması hakkında daha fazla bilgi edinmek isterseniz man dhclient.conf, dhclient man sayfasına erişmek için a'yı yapabilirsiniz . (Bu Azendale'in sorusuna bir cevap değildir.)
Christian Skjødt

Bu cevap tamamen yanlıştır. Her şeyden önce, soru gönderen, 127.0.0.1 adresini değil, harici bir adverenin adresini eklemek ister. Harici bir arabirim için arabirim yapılandırıcısı, bir dahili ad sunucusuna adres eklemek için uygun bir yer değildir. İkinci olarak, dosya / etc / dhcp3 konumunda değil / etc / dhcp konumunda. Üçüncüsü, Ubuntu 12.04'ten bu yana, böyle şeyler resolvconf kullanılarak yapılandırılıyor.
jdthood

1
Her şeyden önce - orijinal soru moderatör birleşme tarafından önemli ölçüde değiştirildi, bu yüzden benim cevabım garip görünüyor. Ben bu cevap ne zaman dhcp3 dosya yeri oldu , 2011 ve ideal olmasa bile, işe yaradı. Bu çözümü çoklu makinelerde kullandım. Açıkçası, geridöngü adresini hazırlamak istediğiniz adresi değiştirirsiniz. RFC6890'ı okumamış olsalar da çoğu insan geridönüşün ne olduğunu bildiğini varsayıyorum.
belacqua

@jdthood Neden kendi cevabını eklemiyorsun? Şahsen ben bir şeyleri yapma bsd-ish resolvconf yöntemine aşina değildim. /Etc/resolv.conf yaklaşımını tercih ettim ve yeni Rube Goldberg sisteminin avantajının ne olduğundan emin değilim. (Aynı şekilde / etc / motd ile).
belacqua

7

resolvconfişe yaramaz. Bir Linux sunucusuyum ve IP adresim statik, DNS sunucularım statik. resolvconfVeya NetworkManager'a ihtiyacım yok .

Basit tutmak, bir sunucu üzerinde çalışırken benim ilkemdir. Karmaşıklık ne kadar az olursa, işler bozulduğunda yönetmek / düzeltmek o kadar kolay olur.

Bu yüzden yaptım aptitude purge resolvconfve elle /etc/resolv.confbir sembolik bağlantı olmadığından emin oldum ve sadece statik bir dosya oluşturdum. Bir program dosyayı değiştirmeye çalışırsa, önlem olarak yaptım chattr +i(değiştirilemez) /etc/resolv.conf.


4
Resolvconf, temel sistemin bir parçası olduğu için, silerek, yükseltme zamanında ileride sorun isteyeceksiniz.
jdthood

3
Hem yorum hem de cevap ile aynı fikirdeyim: bunun ne kadar soruna neden olduğunu ve bu "sorunu" çözmek için kaç destek saatinin geçtiğini ve kaç BT personelinin cevaplar aramak için zaman harcadığını düşünün. Basit olan en iyisidir - DNS'leri istemediğim bir şeye dönüştürmek için sunucularıma ihtiyacım yok.
Mei,

6

Yukarıdakilerin çoğu bozulmamış bir sisteminiz olduğunu varsaymaktadır, ancak gerçeklik genellikle farklı dhcp istemcileri kurduğunuz, ağ yöneticisini Ubuntu'nun önceki sürümlerinde devre dışı bıraktığınız vs.dir. Aşağıdakileri bilmek faydalı olabilir. Bir süredir dnsmasq kullanıyorum, fakat cihazı kaldırdım. Şu anda sistemim şu sistem içeriğine sahipti /etc/resolv.conf( /run/resolvconf/resolv.confsistemimde sembolik bir bağlantı ):

cat /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
nameserver 127.0.0.1

Ne sıklıkta çalıştığım sudo resolvconf -uya sudo dpkg-reconfigure resolvconfda ad sunucusunu NetworkManager'da ayarladıklarım ile güncellemediği önemli değil. NetworkManager’ın kullandığı resolvconf bilgisi mevcuttu:

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

Ancak, bu dizinde birden fazla dosya varsa, bu dosyanın hiç kullanılamayabileceği anlaşılmaktadır. Suçlu dnsmasq'ın kaldırılmasıyla kaldırılmayan bir dosyaydı:

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

Sadece bu dosyayı kaldırmak (ve sudo resolvconf -udaha sonra çalıştırmak ) benim dns sorunlarımı çözdü:

cat /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
nameserver 8.8.4.4
nameserver 8.8.8.8 

Umarım bu başkalarına hata ayıklama konusunda yardımcı olur (tüm bu farklı ağ araçları arasındaki karmaşık etkileşimler). Eğer kullanıyorsanız resolvconf, ls /run/resolvconf/interfacesorada ne olduğunu görmek için kaçtığınızdan emin olun .


1
Teşekkürler, bu çok yardımcı oldu. İlk önce yüksek oyu verilen cevapları denedim ve hiçbiri hile yapamadı. /run/resolvconf/interface/Dizinde ek dosya yoktu , ancak dosyama NetworkManagerbiraz sevgi gerekiyordu. Cevabınız benim için bu sorunu çözdü.
mason81

4

Ben sadece bir linki sildim /etc/resolv.confve ad sunucularının adreslerini içeren bir dosya hazırladım. Çalışıyor ve Ubuntu geliştiricilerinin yarattığı garip yapıyı kullanmak için hiçbir neden görmüyorum.


1
Evet, sunucuları etkileyen, karmaşıklık ve opaklık ekleyen bu tür bir değişimin hayranı değilim. Bu, sürümden sürüme değişmemesi gereken temel davranıştır.
belacqua

Bu cevap 5 yaşında ve IMHO hala listelenenlerin en iyisi. Basit, hızlı ve etkili. Herhangi bir olumsuz tarafı var mı?
Craig S. Anderson,

3

"AUTO ETH0" bağlantısını veya NM'ye bağlanmak için kullandığınız adı ne olursa olsun düzenleyebilirsiniz. Bunu NM'ye sağ tıklayıp "Bağlantıları Düzenle ..." seçeneğini seçerek yapabilirsiniz. IPv4 sekmesinde "Otomatik (DHCP) adresleri yalnızca" "Yöntem" olarak seçebilirsiniz ve NM, ad adreslerini (adreslerini) DHCP üzerinden iletilse bile manuel olarak ayarlamanıza izin verir.


3

Bit'imi zaten uzun listeye eklerken, işte başka bir yol (12.04'te test edildi):

Düzenleme /run/resolvconf/interface/NetworkManagerihtiyaçlarınıza göre. İşte bir örnek:

search foobar.com example.com
nameserver 192.168.1.1

Sonra, diğer örneklerin çoğu için belirtildiği gibi, a sudo resolvconf -u. Şimdi böyle resolv.confgörünmesini sağlayacaksın :

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

Halen uygulanma şeklini hala beğenmedim (Ubuntu'nun yaptığı her foo için bir servise ihtiyacı var gibi görünüyor) ve kesinlikle bir ova tercih ediyorum resolv.conf. Ancak bu yaklaşım benim için şimdiye kadarki en iyi uzlaşma gibi görünüyor. Eklenen "localhost-NS" çok fazla acı çekmemelidir.


2

Bunu kaynakların sırasını değiştirerek düzelttim. dnsKaynak önce mdnsiçinde taşındı /etc/nsswitch.conf:

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Ayarlarınızı koruyabilir ve yine de yerel önbellek sunucusunu bu şekilde kullanabilirsiniz.


girişleri eklemek yerine, sistemi arızalı hale getirin ve size gerçekte istediğiniz bilgileri verin. +1.
nelaaro

2

Peki ya:

sudo dpkg-yeniden yapılandırmak resolvconf

Bundan önce, DNS adresini değiştirmek ve Ağ

Sadece otomatik (DHPC) adresleri

Ardından yukarıdaki komutu çalıştırın ve yeniden başlatın. Bu benim için çözümü yaptı.


2
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp

2

Bu çok popüler bir sorudur, hepsi IMO oldukça zorlayıcı olan standart olası cevaplar bir koleksiyona sahiptir. Ağ Yöneticisi'nde kurduğum DNS ayarlarına saygı duymak için Ubuntu'yu almakta her zaman sorun yaşadım - özellikle "Yalnızca Otomatik (DHCP) adresleri" olan statik DNS sunucularını ayarlamak - - ve bugün Nihayet GERÇEK YANLIŞ olduğunu öğrendim.

Sorun resolvconf ve NetworkManager arasındaki etkileşimdedir. Resitvconf adlı bu dosyaya sahip /etc/resolvconf/interface-order. Benim sistemlerinde En azından NetworkManagerın değil (o sonunda * yaban kartı ile kaplı haricinde) tüm bu dosyada. Öyleyse, DHclient'in resolvconf hakkındaki en son raporu NetworkManager'ın söyleyebileceği her şeyden öncelikli.

Böylece, en azından benim durumumda gerçek cevap eklemek oldu.

NetworkManager

üstünde veya yakınında /etc/resolvconf/interface-order.

(Evet, pek çok insanın bana "kendi başına kötü bir fikir gibi görünen" kaldırma çözümünü kaldır "dediğini biliyorum. Fakat bundan daha fazlası, en azından ustaca ve kınamak sistemin hayati bir parçasını çözmeyi düşünmektedir [yani, ubuntu] -minimal buna bağlıdır], bu nedenle sisteminizi resolvconf olmadan tutarlı, güncellenmiş bir durumda tutmak zor olacaktır.)

Talep üzerine, bunu nasıl çözdüğüm hakkında daha fazla ayrıntı verebilirim. ( EDIT : görünüşe göre talep edildiğinde bunu yapmadım, üzgünüm. Bu noktada bir sonraki söylediklerimden daha fazla ayrıntı hatırlamıyorum :) Özet olarak, resolvconf çalıştırılabilirini bir kabuk sarmalayıcıyla değiştirdim Argümanlarını, girişini, çıkışını ve stderr dosyasını dosyalara döken; ve resolvconf güncelleme komut dosyalarına set -x eklendi.

( DÜZENLEME : Ben yapabilirsiniz . Ne ilk bölümünde demek ben hangi komutu veya tip komutunu kullanarak bulunamadı fiili resolvconf yürütülebilir taşımak için sudo kullanılan olduğunu söylemek Sonra sonuçta sadece Taşınan yürütür bir kabuk komut dosyası oluşturmak resolvconf, fakat aynı zamanda argümanları bazı dosyalara da ekler ve çeşitli dosyalara stdin, stdout ve stderr göndermek için kabuk yönlendirme kullanır. birçok Linux meraklısı ne demek istediğimi anlayabilir, belki bazı iyi samariler bir yorumda daha fazla ayrıntı sağlayacaktır.)


Lütfen " Bunu nasıl anladığınızla ilgili daha fazla ayrıntı verin "
Pierre.Vriens


1

DNS’yi değiştirmek için aşağıdaki talimatları izleyin: https://developers.google.com/speed/public-dns/docs/using

  1. Ağa Git

  2. DNS'yi yapılandırmak istediğiniz bağlantıyı seçin.

  3. Bir kablosuz bağlantının ayarlarını değiştirmek için, Kablosuz sekmesini ve ardından uygun kablosuz ağı seçin.

  4. Oku (sağ) tıklayın ve beliren pencerede IPv4 Ayarları veya IPv6 Ayarları sekmesini seçin.

  5. Seçilen yöntem Otomatik (DHCP) ise, açılır menüyü açın ve yalnızca bunun yerine Otomatik (DHCP) adreslerini seçin. Yöntem başka bir şeye ayarlanmışsa, değiştirmeyin.

  6. DNS sunucuları alanında, virgülle ayrılmış olarak DNS IP adreslerini girin.


0

Geçici geçici DNS ekleyin. /Etc/resolv.conf dosyasını düzenleyin.

nameserver 4.4.4.4
nameserver 8.8.8.8

1. Çözünürlüğü güncelleyin veya güncelleyin.

root@ubuntu:~# apt-get install resolvconf -y

2. Ad sunucunuzu /etc/resolvconf/resolv.conf.d/tail içine ekleyin.

nameserver 4.4.4.4
nameserver 8.8.8.8

3. Makinenizi yeniden başlatın.

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.