/ etc / network / interface değiştirdikten sonra resolv.conf'u yenilemek için nasıl resolvconf alırım?

77

/etc/network/interfaces 'yi aşağıdakine benzer bir şeyle güncelledikten sonra, /etc/resolv.conf ' yi güncellemek için nasıl alabilirim? % Co_de%, resolver -u den çalıştım ama çalışmadılar. Ayrıca service networking restart için sembolik bağlantıyı da çözdüm ve resolv.conf tekrar denedim. Sonunda hayal kırıklığı içinde yeniden başlattım, bu da resolver -u 'yi yeniden oluşturarak sorunu çözdü.

Ubuntu 12.04, 64 bit sunucu, yüklü en son yamalar.

Örnek /etc/resolv.conf :

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
    
sordu nslntmnx 03.12.2012 13:59

9 cevap

94

service networking restart , her zaman tüm arayüzleri aşağı çekmek için güvenilir bir yol değildir.

resolvconf -u komutu, resolvconf'un kendi veritabanından yalnızca resolv.conf öğesini günceller. Veritabanını güncellemeniz gerekiyor.

Veritabanını güncellemek için, -a veya -d seçeneği ile resolvconf'u çağırmalısınız. Bu, ifup veya ifdown'ı çalıştırdığınızda perde arkasında olur. Yani, normal olarak, /etc/network/interfaces değiĢik değiĢikliklerde olduğu gibi, dns- * seçeneklerinde de activateiĢiklikleri etkinleştirmek için, söz konusu arabirimi iflas ettirmeniz ve tekrar iflletmeniz gerekir. Ya da yeniden başlatabilirsiniz.

Eğer bir arayüzde herhangi bir değişiklik yapmadan değişiklik yapmak istiyorsanız (belki de makineyi uzaktan yönetiyorsanız ve bu arabirim üzerinden bağlanılıyorsa), doğrudan resolvconf komutunu doğrudan komut satırından çalıştırarak aynı sonucu elde edebilirsiniz. . Bu, resolvconf'un semantiği hakkında biraz daha fazla bilgi gerektirir. İlgili / e / n / i stanza'nın olduğunu varsayın

iface IIII FFFF static
    address ...
    ...
    dns-nameservers X.X.X.X Y.Y.Y.Y
    dns-search SSSS

FFFF'nin bir adres ailesi olduğu ("inet" veya "inet6").

Bu dns-* seçeneklerini etkinleştirmek için, aşağıdaki gibi resolvconf komutunu çalıştırırsınız (evet, resolvconf'a pipetlenen dizede yeni satırlarla).

echo "nameserver X.X.X.X
nameserver Y.Y.Y.Y
search SSSS" | sudo resolvconf -a IIII.FFFF

Soruda verilen stanza için bu aşağıdaki olurdu.

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com" | sudo resolvconf -a eth0.inet

Daha fazla bilgi için resolvconf (8) kılavuz sayfasına ve README dosyası README dosyasına (/usr/share/doc/resolvconf/README.gz) bakın.

    
verilen cevap jdthood 03.12.2012 20:23
20

Manpage varsayılan olarak yüklenmemiş olsa da, güncelleme komut dosyaları seçeneği ile belgelenmiştir, sadece şunu çalıştırın:

sudo resolvconf -u
    
verilen cevap user267617 10.04.2014 23:32
3

Sunucularınızı uzaktan yönetenleriniz için şunları yapabilirsiniz:

  1. dns-nameservers satırını /etc/network/interfaces olarak güncelleştirin
  2. # ifdown eth01; ifup eth01

Bunun bir satırda olması gerektiğine dikkat edin; (linux komut satırı ayırıcısı). Mevcut bağlantınızı bile kaybetmemelisiniz. Özel durum, arayüz dosyasında bir yazım hatası yapıyor. Bu olursa ifup başarısız olur ve fiziksel erişiminiz veya başka bir ethxx bağlantınız olmalıdır.

    
verilen cevap sparky 24.01.2015 00:14
2

service resolvconf restart , /etc/resolv.conf dosyasını çok fazla yayılmadan yeniden oluşturacaktır.

    
verilen cevap Kamran 10.02.2016 15:03
0

Bu cevap yukarıdaki ile aynıdır, ancak soruya cevap vermek için soru örneklemini kullanır. Ayrıca bu, her iki komutun da neden gerekli olduğunu açıklar.

/etc/network/interfaces değerini düzenle:

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

Yapılandırma dosyasını yeniden başlatmaz veya yeniden yüklemezseniz bu değişiklikler gerçekleşmez:

Arayüz dosyalarını canlı olarak güncellemek için aşağıdaki komutu çalıştırmak gerekir:

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com" | sudo resolvconf -a eth0.inet

Bu, yeniden başlatma veya yeniden yükleme olmadan arayüzde bir güncellemeye izin verir.

Ancak, /etc/network/interfaces 'sindeki değişiklikler yapılmadığında, yeniden başlatma sonrasında yukarıdaki komut değişiklikleri kaybolacaktır.

Bu listede BDenilerin son cevabı aslında /etc/network/interfaces dosyasını ayrıştırarak ve bu satırları% co_de komutuna pipetleyerek son komut yerine çalışır. Aslında cevapların yarısı ve gerçekten iyi bir örnek. inline sed ayrıştırma. Bunun nasıl yapıldığını görmek istiyorsanız, sadece komutun ilk bölümünü çalıştırın ve sudo resolvconf -a eth0 dosyasını ayrıştırıp /etc/network/interfaces komutunu çalıştırmak için gereken tüm gerekli bilgileri tükürdüğünden emin olun:

sed 's/#.*$//' /etc/network/interfaces | grep dns- | sed 's/dns-//g'

Bunun, komut olarak aynı şeyi üreteceğine dikkat edin:

echo "nameserver 192.168.3.45
nameserver 192.168.8.10
search example.com"

sudo resolvconf -a eth0 dosyasının bu bilgilerle yapılandırılmış olması şartıyla:

iface eth0 inet static
    address 192.168.3.3
    netmask 255.255.255.0
    gateway 192.168.3.1
    dns-search example.com
    dns-nameserver 192.168.3.45 
    dns-nameserver 192.168.8.10
    
verilen cevap user3199107 22.06.2015 23:37
0

Basit cevap:

Sadece resolvconf yükleyin. % Co_de%

Bundan sonra, apt install resolvconf , ifup eth0 dizinindeki etc/resolv.conf satırına göre dns-nameservers cinsinden dns'i günceller.

    
verilen cevap trogne 03.05.2017 01:14
0

Bu benim için çalıştı:

sed -re '/nameservers|dns-search/ !d' -e 's/dns-nameservers/nameserver/' -e 's/dns-search/search/' /etc/network/interfaces  | resolvconf -a eth0.inet && resolvconf -u

Uygun şekilde ayarlayın.

    
verilen cevap jbgeek 08.09.2017 01:21
0

18.04'te, aşağıdakiler güvenilir şekilde çalışır (root olarak çalışır):

systemctl stop networking
ip address flush dev <device> # just to be safe
systemctl start networking

Önemli: resolvconf paketinin kurulu olduğundan emin olun.
Varsayılan olarak görünmüyor ve bu olmadan /etc/network/interfaces 'den bazı (!) Değişiklikler sessizce yok sayılıyor (ör.% Co_de%).

    
verilen cevap Raphael 09.05.2018 13:49
-3

Ayrıca şu komutu deneyebilirsiniz:

cat /etc/network/interfaces |sed 's/#.*$//'|grep dns-|sed 's/dns-//g'|sudo resolvconf -a eth0.inet
    
verilen cevap BDenis 09.10.2014 15:07

Etiketlerdeki diğer soruları oku