Resolv.conf dosyasına, yeniden başlatıldığında kaybolmayacak satırları nasıl eklerim?


173

Sonunda 7.10'dan 12.04'e geçtim. Tamamlanacak son bir bölüm var ama güvendim. Her sunucuda Kukla kullanıyorum ve geçmişte resolv.conf dosyasına kuklacı için bir ad sunucusu adresi ve arama alanı adı ekledim.

search puppetmaster.com
nameserver 192.168.1.XXX

12.04'te resolv.conf yeniden başlatıldığında üzerine yazılır. Bunlar için statik bir IP kullanamıyorum, bu yüzden / etc / network / interfaces komutunu kullanmama yardım etmek bir sıfır noktası.

# 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

Bunu baş, kuyruk veya tabanda halletmenin bir yolu var mı? Varsa sunucumda ince ayar yapmak için kullanabileceğim herhangi bir örnek var mı?

Herhangi bir yardım çok takdir edilmektedir.


2
resolvconf kötü bir yazılımdır, sadece silin ve /etc/resolv.conf dosyasını eski yöntemle yönetin.
bronz adam,

Yanıtlar:


134

DNS sunucunuzun 'kukla'yı' doğru adrese çözebilmesi ve DHCP sunucunuzun DNS ad sunucusu adresini ve arama listesini ya da başka bir durumda (statik IP adresleriniz varsa) vermesini sağlamak muhtemelen daha iyidir. / etc / network / interfaces konumunda.

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameservers 192.168.3.45 192.168.8.10

Ancak resolvconf yapılandırma dosyaları aracılığıyla yapmak istiyorsanız, düzenlemek isteyeceksiniz /etc/resolvconf/resolv.conf.d/base. Bu dosyada, bilgilerinizi istediğiniz gibi yazın resolv.conf.

nameserver 192.168.1.XXX

O zaman resolvconf'a yeniden üretmesini söyle resolv.conf.

sudo resolvconf -u

13
Her ne kadar bu cevabın oyları vardır ve birinci kısım az çok doğru olsa da, cevabın ikinci kısmı yanlıştır. (1) Do not /etc/resolvconf/resolv.conf.d/head bir "arama" satırını koydu. Buraya bir "arama" satırı koyarsanız, resolvconf resolv.conf dosyasının dinamik kısmında bir "arama" satırı içeriyorsa bu satır dikkate alınmaz. Glibc çözümleyicisi, son "arama" veya "etki alanı" satırı dışındakileri yoksayar Resolv.conf (5) 'a bakınız. (2) resolvconf yapılandırması değiştirilirse, resolvconf işini yeniden başlatmamalısınız, ancak "resolvconf -u" adlı bir güncelleme çalıştırmalısınız.
jdthood

1
Çizgiyi kaldırdım. Diğer seçenek ise kafa yerine kuyruk kullanmak olacaktır.
tgm4883

6
@tishma: Merhaba. İlk olarak, herhangi bir yanlış anlaşılmayı önlemek için: hiçbir şey temel, baş veya kuyruk dosyalarına yazmaz. Hiçbir şey /etc/resolvconf/resolv.conf.d/ içindeki herhangi bir dosyaya çalışma zamanında yazamaz. Bu dosyalar, içeriklerini --- /run/resolvconf/resolv.conf --- yazdığı /etc/resolv.conf işaretinin bulunduğu dosyaya birleştiren resolvconf tarafından okunur. İkincisi, / etc / network / interfaces'teki dns- * seçeneklerinden sonra ne yapılması gerektiği ile ilgili değişiklikler yapıldı. Do not "yeniden /etc/init.d/networking" işletilmektedir ve bu şimdi kullanımdan kaldırıldı. Bunun yerine söz konusu arayüzü ifdown ve tekrar ifup.
jdthood

4
14.04'te bu cevap benim için hiçbir şey yapmadı.
Jay Sullivan

2
Her şey başarısız olursa .. $ sudo solveconf -u benim için bir şeyleri değiştirmedi gibi görünüyor, makineyi yeniden başlattınız, presto.
MSpreij

35

Cevabın kontrol ettiğini düşünüyorum /etc/dhcp/dhclient.confistemeyin yani dns-nameserverssizin gelen dhcp istemcisi.

Ardından /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip

Ardından, resolv.confistediğiniz şekilde otomatik olarak yapılandırılırsınız.

Eklemek dns-searchve sonra bir çalıştırmak /etc/init.d/networking restart (bu betiği kullanımdan kaldırılmış olsa bile).


5
dhclient herhangi bir resolvconf ayarına göre kurallar, bu yüzden en iyi cevap bu olmalı
Alex R

6
/etc/init.d/networking restartmakinemde çalışmadı, ama sudo ifdown -asonra sudo ifup -ayaptım. (Ayrıca, bunun dnsserveripgibi bir şeyle değiştirmek zorunda olduğumun farkına varmak biraz zaman aldı 8.8.8.8; biraz aptal hissediyorum.)
Jason Gross

deneyinsystemctl restart networking.service
Pavel Sayekat

20

Bunun nedeni Ubuntu'yu ilk kurduğunuzda DHCP yapılandırmasından kaynaklanıyor olabilir. Bu otomatik yapılandırma sorununu çözmek için bu 3 adımlı işlemi deneyin.

İlk

Arabirim yapılandırmanızı düzenleyin: /etc/network/interfaces

Bu satırı aşağıya ekle iface lo inet loopback:

dns-nameservers yourdns youraltdns

Google DNS’in bir örneği olarak, bunu kullanmak isteyebilirsiniz:

dns-nameservers 8.8.8.8 8.8.4.4

İkinci

DHCP yapılandırma dosyanızı aşağıdaki adreste düzenleyin:

/etc/dhcp/dhclient.conf

Sözdizimini kullanarak yorum olarak işaretleyin. # her satırda veya her istek ad sunucusunu kaldırın. 16.04'te, burada herhangi bir değişiklik yapmanız gerekmeyebilir.

Üçüncü

Bu komutu kullanarak ağınızı yeniden başlatın:

/etc/init.d/networking restart

16.04'te:

sudo ifdown -a
sudo ifup -a

3
/etc/init.d/networking restartmakinemde çalışmadı, ama sudo ifdown -asonra sudo ifup -ayaptım.
Jason Gross,

Bu basit ve biraz bozucu olsa bile çalışıyor! Ubuntu gibi sorunların tek bir şeyi yapmanın 1000 yolu var!
Willa O Ng'wana

Ve sonra /etc/resolv.conf'un ilk 2 satırdaki 2 yeni DNS girişini içerdiğini kontrol edebilirsiniz .
ROMANIA_turkine

8

Lütfen resolvconfman sayfasına bakın. Örneğin oluşturarak bazı DNS ayarlarının dahil edilmesini zorlayabilirsiniz /etc/resolvconf/resolv.conf.d/base:

  /etc/resolvconf/resolv.conf.d/base
          File containing basic resolver information.  The lines  in  this
          file  are  included in the resolver configuration file even when
          no interfaces are configured.

Başka özel dosyalar (kafa ve kuyruk) var, bunlar istediğinizi elde etmenize yardımcı olabilir.


4
/Etc/resolvconf/resolv.conf.d/base dizinine satır ekleyebilirsiniz, ancak her ad sunucusuna bir arabirim aracılığıyla erişilebildiği ve yalnızca bu arabirim açıldığında erişilebilir olduğu için, ad sunucusu verilerini bu arabirimle ilişkilendirmek en iyisidir. Eğer arayüz ifup ile yapılandırılmışsa, bunun anlamı şudur: "dns-search" ve "dns-nameservers" satırlarına bilgileri / etc / network / interfaces stanzas içine koyun. Arayüz DHCP ile yapılandırılmışsa, bunun anlamı şudur: DHCP sunucusunu, istemcilere arama adları ve ad sunucusu adresleri sağlayacak şekilde yapılandırın. Vb "Temel" dosyayı yalnızca geçici bir hack veya son çare olarak kullanın.
jdthood

Evet. /Etc/resolvconf/resolv.conf.d/base
Bastion

8

Diğer pek çok resolvconfcevapta belirtildiği gibi, bunun sisteminize kurulmak zorunda kalması.

Bu nedenle, resolv.confyeniden başlatma sırasında kaybolmayacak bir şeyi saklamanın en iyi yolu, içinde bulunan resolvconf yapılandırma dosyalarına dahil etmektir:

/etc/resolvconf/resolv.conf.d/

Orada headdosya için gidin . Ne koyduysan, üstüne yazılacak/etc/resolv.conf

Yani her şey böyle bir şeye gidecek:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u

Bu gerçek doğru cevap! En sonunda!
user77232

6

Benim için yukarıdaki cevaplar aşağıdaki nedenlerden dolayı yetersizdi:

  • Kullanmıyorum resolvconf, sadece düz /etc/resolv.conf.
  • Kullanılması chattr +ikilitlemek resolv.confçok hacky görünüyor. Gerektiğinde değişiklik yapmakta özgür olmak için Kukla'a ihtiyacım var.
  • AFAIK, düzenlemenin üzerine yazılmasını /etc/network/interfacesengellemez resolv.conf; sadece yazılması gereken isim sunucularını belirtir. Benim için ad sunucularını belirlemek önemli değildi. Ben ayarlamak çalışıyorum options timeout:1ve options attempts:1benim de resolv.confdosyaya.

En iyi çözüm buldum varsayılan davranışını geçersiz kılardhclient onun belgelenmiş kancalar kullanarak.

/etc/dhcp/dhclient-enter-hooks.d/nodnsupdateAşağıdaki içeriğe sahip yeni bir dosya oluşturun :

#!/bin/sh
make_resolv_conf() {
    :
}

Ardından dosyayı çalıştırılabilir yapın:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Şimdi dhclient çalıştığında - yeniden başlatıldığında veya manuel olarak çalıştırdığınızda sudo ifdown -a ; sudo ifup -a- bu betiği yükler nodnsupdate. Bu komut dosyası make_resolv_conf(), normalde üzerine yazacak resolv.confve hiçbir şey yapamayan denilen dahili bir işlevi geçersiz kılar .

Bu benim için Ubuntu 12.04'te çalıştı.


1
Debian 8'de iyi çalışıyor. Zarif çözüm!
Artur Bodera

1
sadece tamlık için: manpage dhclient-script yukarıda verilen yanıttan bahseden DHCP istemcisi ağ yapılandırma komut dosyası hakkındaki bilgileri tutar.
hecke

Bu, 16.04'te işe yaramadı, ben de /etc/network/interfaces.d'ye bir şeyler ekledim, hiçbir etkisi olmadan, burada önerilen make_resolv_conf'a boş bir geçersiz kılma eklendi, etki yok .... ama / etc / dhcp / dhclient.conf - Bunu düzeltmek için gerçekten statik bir yapılandırma dosyasını değiştirmem gerekiyor mu?
silverjam,

3

Bu sadece makinemde garip bir tuhaflık olabilir, ancak başka birinin de aynı köşe davası olabilir.

ISS ad sunucularımın /etc/resolv.conf içinde yer almasını sağlamak için pek çok yol denedim:

  • Onları dahil ettim /etc/network/interfacesve ağları yeniden başlattım. Gelmediler /etc/resolv.conf.

  • Onları /etc/resolv.confaçıkça ortaya koydum , ama elbette üzerine yazıldı. Onlar geldiler /run/resolvconf/interface/eth0.inet, ama asla başaramadılar /etc/resolv.conf.

  • Dinamik güncelleştirmeler için resolvconf yapılandırmasını denedim. Değişiklik yok.

Sonunda, yerel makine (127.0.0.1) gösteriliyorsa bir yerde okudum. /etc/resolv.conf başka bir isim sunucusunda gösteriliyorsa dahil edilmediğini bir .

Çaresizlik içinde düzenlediğim /run/resolvconf/interface/lo.named, içindeki tek satırı ( nameserver 127.0.0.1) sildim ve yeniden başlattım:ifdown eth0 && ifup eth0 .

/etc/resolv.conf daha sonra ilk kez ISS sunucularım dahil! service network-manager restartKararlı olup olmadığını görmek için koştum /etc/resolv.conf. Sadece emin olmak için yeniden başlatıldı ve hala orada ancak /run/resolvconf/interface/lo.named sıfırlandı:nameserver 127.0.0.1 .

Merakla yeniden başlatılması ağ hala çalışıyor: /etc/resolv.confhala benim ISS sunucularım içeriyor. Bunu açıklayamıyorum (biri olabilir mi?) Ancak bu, aynı noktada sıkışıp kalmış birine yardımcı olabilir.


Bu muhtemelen kaynaklanmaktadır dnsmasq. Config'i kullanarak basitçe kaldırabilir apt-get remove dnsmasqveya güncelleyebilirsiniz /etc/dnsmasq.conf.
Tombart

2

ad sunucunuzu /etc/resolvconf/resolv.conf.d/head dosyasına ekleyin. Dosya aldığın mesajı içeriyor:

8.8.8.8 ekledikten sonra bu dosya böyle görünmelidir.

root@hvnatvcc: ~ # cat /etc/resolvconf/resolv.conf.d/head 
# 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.8.8

3
/Etc/resolvconf/resolv.conf.d/head 'e satır eklemek, /etc/resolvconf/resolv.conf.d/base' e satır eklemekten bile daha kötü bir çözümdür. İfup kullanılarak yapılandırılmış arayüzler için doğru çözüm, / etc / network / interfaces içindeki stanzalara "dns-search" ve "dns-nameservers" satırları eklemektir. Diğer cevaplar hakkındaki yorumlarıma da bakınız.
jdthood

3
Aslında benim için çalışan tek şey ... ve "doğru" çözümlerin hiçbirinin neden işe yaramadığını anlamak zor görünüyor.
silverjam,

1

son satıra ekleyin örneğin:

nameserver 8.8.8.8

Bir terminal aç ve yaz

sudo chattr +i /etc/resolv.conf

+ i, dosyanın önyüklemesinde yeniden başlatılmamasına özen gösterir.

Yukarıdakileri geri almak için

sudo chattr -i /etc/resolv.conf

Daha fazlası için

man chattr

1

Diğer çözümler Fedora 20 sistemimde işe yaramadı. Benim özel problemim /etc/resolv.conf içindeki "search" satırının üzerine yazılmasıydı. İşte bunu düzeltti. (Bu, NetworkManager'ın hattı ürettiğini search rn.yourcompany.com ve olmasını istediğiniz varsayılır search rn.yourcompany.com yourcompany.com intnet.yourcompany.com:

1. Hangi arayüzün ilgi çekici olduğunu bulmak için "ifconfig" komutunu kullanın:

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2. Kök olun ve sistem yapılandırma ağ cihazları dizinine değiştirin:

$ sudo su -[sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices`
  1. DomainArama yapmak için ek alan adlarıyla bir satır eklemek için mevcut mevcut düzenleyicinizi kullanın :

DOMAIN="yourcompany.com intnet.yourcompany.com"

Kaydet, oturumu kapat ve tekrar giriş yap. NetworkManager'ın şu satırda olması gerekir \etc\resolve.conf:

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com

3
Geçit törenine yağmur yağdırmak değil, ama bu Ask Ubuntu'ya sor ve bu yüzden Fedora konu dışı.
Flimm

1

Giriş ekle /etc/resolvconf/resolv.conf.d/head

echo 'search puppetmaster.com' | sudo tee -a /etc/resolvconf/resolv.conf.d/head
echo 'nameserver 192.168.1.XXX' | sudo tee -a /etc/resolvconf/resolv.conf.d/head

ve aşağıdaki komutu çalıştırın

sudo resolvconf -u

1

Ubuntu Server 18 için Netplan ağ yapılandırması için yeni bir yardımcı programdır.

# cd /etc/netplan

Ardından ad sunucularını düzenleyin yaml dosyasındaki girişleri girin (doğru girinti kullanın). Örneğin, Google’ın DNS sunucularını kullanıyorsanız:

nameservers:
    addresses: [8.8.8.8,8.8.4.4]

Hizmeti yeniden başlatmak için

# netplan apply

Bkz https://netplan.io/

https://www.techrepublic.com/article/how-to-set-dns-nameservers-in-ubuntu-server-18-04/


0

DHCP kullanıyorsanız, /etc/dhcp/dhclient.confek DNS sunucuları eklemek için düzenleme yapın:

prepend domain-name-servers 12.34.56.78, 12.34.56.79;

DHCP istemcisi, üzerine yazar dns-nameservers.etc/network/interfaces ve ben düşünmek /etc/resolvconf/resolv.conf.d/basede.

Bu benim için 14.04.3 Ubuntu sunucusunda çalıştı.

Ayrıntılar için Debian NetworkConfiguration Wiki'ye bakın.


0

Yalnızca resol.conf dosyanızı yedekleyin ve resolvconf pacage dosyasını silin ve /etc/resolv.conf dosyasını istediğiniz şekilde düzenleyin.

apt-get remove -y resolvconf
echo 'nameserver 8.8.8.8' > /etc/resolv.conf

Resolvconf gibi kötü yazılımları kullanmamayı seçme hakkına sahibiz.

Bu arada, /etc/resolv.conf içindeki arama alanı kullanışsızdır.


0

Kullanma resolvconfve devre dışı bırakma systemd-resolved.service(bu benim için çalışır ubuntu 19.04):

  1. Yüklemek resolvconf

    sudo apt install resolvconf
    
  2. Ad sunucusu ekleme

    /etc/resolvconf/resolv.conf.d/baseMetin editörünle aç , kullanıyorum vim.

    sudo vim /etc/resolvconf/resolv.conf.d/base
    

    sonra açılan dosyanın içine ad sunucularını ekleyin:

    nameserver 1.1.1.1
    nameserver 1.0.0.1
    
  3. Güncelleniyor resolv.conf

    sudo resolvconf -u
    
  4. Devre dışı systemd-resolved.service ve yeniden başlat. nameserver 127.0.0.53yazılmış değil /etc/resolv.conf.

    sudo systemctl disable systemd-resolved.service
    sudo reboot
    

Bitti!

Kaynak


Bunu hangi Ubuntu sürümü için yaptığınızı belirleyebilir misiniz? Asıl soru uzun süredir kullanımdan kaldırıldığından beri ubuntu 12.04 ile ilgilidir.
Marc Vanhoomissen

0

Bunu en basit çözümü buldum. Sizde resolv.confve resolvconfdosyalarınız varsa birbirlerine basacaklar. Kaldırmanız gerekirresolv.confHer yeniden başlatışınızda, alıp üzerine dosyayı .

nameserver 1.1.1.1 1.0.0.1Resolvconf dosyasının altına koyun ve sonra çalıştırın

sudo rm /etc/resolv.conf

Dosyadan kurtulmak için. Sonra yeniden başlat ve her şey işe yarayacak.


0

12.04'te Mi çözümü:

Dns-nameserver'ı ad çözümleme sunucularını almayan arabirimlere eklerseniz farkettim.

resolvconf man sayfası

El ile düzenlediğimizde resolv.conf'un değişmemesini sağlamak için terminalde bunu yapın:

sudo resolvconf –disable-updates

sonra:

sudo resolvconf -a eth0 # or your network interface

daha sonra /run/resolvconf/resolv.confen fazla iki DNS sunucusu ekleyerek elle düzenleyin .

Ardından hizmeti yeniden başlatın:

sudo /etc/init.d/networking restart

4
Bu çok fazla değil sorunu çözmek için doğru yolu.
jdthood

1
@jdthood bunu gezen biri olarak şöyle bir açıklama yapabilirsin, NEDEN bu doğru yol değil? Bana mantıklı geliyor, ama bu konuda hiçbir şey bilmiyorum.
ErikPerik

-1

Sadece bir

dns-search google.com && dns-nameservers (sample: 8.8.8.8)

/etc/network/interfacesyapılandırmanıza komut verin . sonra ağınızı yeniden başlatın.

İşe yaramalı.


-2

Bu yapılandırma bildirildi /etc/default/bind9

RESOLVCONF=no|yes

no = 'daki koşulu uygulamayıninit.d bind9

evet veya başka bir değer = geçersiz kılresolv.conf

Bu sorun, yüklediğinizde bind9tüm onayları kontrol etmeyi umursamadığınızda ortaya çıkar.

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.