resolv.conf bir şey tarafından sıfırlanmaya devam ediyor


29

Neden resolv.confsürekli değişime devam ettiğimi bulmak için dışarıdan internete ve sadece yerel ağa erişememe neden olan yardıma ihtiyacım var :

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain

Geridöngü arayüzünden kurtularak ve eth0 arayüzüne jontsai'nin postacı blogunda yer/etc/network/interfaces alan talimatlarla ekleyerek düzelttiğimi sanıyordum .

Yapmak gibi şeyler denedim:

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient

Sonra işler geçici olarak işe yarayacaktı ve sonuçta resolv.conf içindeki ad sunucusu tekrar geri alınacaktı.

PS Bunu ayrıca ubuntuforums'a da gönderdim .


Düzenleme: Yazan NetworkManager dışında en az bir program var resolv.confve bunu biliyorum çünkü NetworkManager'ı yenilediğimde, resolv.confoluşturulan dosya yazan bir yorum # Generated by NetworkManagerve sürekli olarak değişmeyen bir sürümü var.

Bu yüzden bunu deniyorum:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done


Düzenleme 2:

Dosya çıktısı eklemek:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Gibi bir dosya yok /etc/NetworkManager/NetworkManager.conf

$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet 

[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false

[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0

[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false

Ağ Yöneticisi hatasından veya daha büyük olasılıkla yanlış yapılandırmadan şüpheleniyorum. Hangi Ubuntu sürümünü kullanıyorsunuz? Eğer var mı resolvconfpaket yüklü? İçeriğini yazın /etc/network/interfaces, /etc/NetworkManager/NetworkManager.confve /etc/NetworkManager/system-connections/*.
Gilles 'SO- kötülük' dur '26

10.04'ü çalıştırıyorum, resolvconfpaket yok . Bir noktada, yerel ağım iyi durumdayken DSL modemim kötüleşti (yönlendiricinin arkasında), bu yüzden yüklemeyi denemiş olabilirdim - nscdya da dnsmasqşimdi kaldırılmışlar, ancak müdahale edebilecek bazı eserler bırakmış olabilir mi?
jontsai

Tamam, bilgisayarımı 3 hafta içinde ilk kez yeniden başlattım ve sorunun ortadan kalktığını düşünüyorum. o_O
jontsai

Emin değilim, ama DHCP sunucu ile bazı sorun olduğunu düşünüyorum vmnet1ya vmnet8(NAT ve Host-Only)
jontsai

1
Bu tartışmanın tamamı, temel sistemde resolvconf'u tanıtan, temel olarak resolv.conf'un işlenme biçimini değiştiren Ubuntu 12.04'ten beri önemsizdir.
jdthood

Yanıtlar:


13

Statik eklemeler yapabilirsiniz /etc/resolv.conf. Bu eklemeler otomatik olarak eklenenleri geçersiz kılabilir.

İlk önce resolvconfpaketi kurun .

Ardından, Alt + F2 tuşlarına basın ve çalıştırın gksudo nautilus. /etc/resolvconf/resolv.conf.d/headDosyanın başına eklemek istiyorsanız Aç ; /etc/resolvconf/resolv.conf.d/tailsonuna kadar eklemek isterseniz açın . Değişikliklerinizi yapın, dosyaları kaydedin / kapatın ve ardından sudo resolvconf -udeğişiklikleri uygulamak için çalıştırın .

(Üzgünüz, dosyanın başında veya sonunda ayarların en yüksek önceliğe sahip olup olmadığını hatırlamıyorum.)


Ağ yöneticisi değişikliklerim, herhangi bir VPN'ye bağlanıldığında geri alınacak. Bu, hangi ağa bağlı olduğumdan bağımsız olarak çözümleyici listesinde 8.8.8.8 kalmamı sağladı.
Steven P,

8

Ben de aynı sorunu yaşadım - server her yeniden başlatıldığında resolv.conf yeniden yazılırdı.

DHCP tarafından neden oldu. Resolv.conf dosyasını istediğim gibi ayarlamak /etc/dhcp/dhclient.confiçin aşağıdakileri düzenledim ve ekledim:

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";

Aslında bu konuda değişiklikler yaparak resolv.conf dosyanızla ilgili biraz kontrol edebilirsiniz.

Umarım yardımcı olur.


2
Bu en temiz çözüm olurdu, ancak nedense birkaç yıl önce sistemlerim üzerinde çalışmayı bıraktı. O zamandan beri resolvconf betiğini veya chattr + i /etc/resolv.conf komutunu devre dışı bırakma konusunda sıkışıp kaldım.
Tronic

7

(Bu yanıt, neler olduğunu araştırmanın yollarını içerir. Daha fazla bilgi toplamak ve sağlamak için bu yöntemleri kullanırsanız gerçek bir çözüm verebilirim.)

Kendiliğinden yapılan güncellemeler için olası bir tetikleyici /etc/resolv.conf, DHCP kiracınızın yenilendiği zaman olabilir. DHCP kiralamasının ne kadar sürdüğünü kontrol edin (bunun sistem kayıtlarında görünmesi gerektiğini düşünüyorum /var/log/syslog).

Auditd'i Auditd yükleyin , dosyayı neyin değiştirdiğini bulmak için kullanabilirsiniz . Daemon ( sudo service auditd start) 'ı başlatın ve bu dosyadaki değişiklikleri izlemesini söyleyin:

sudo auditctl -w /etc/resolv.conf -p w

Denetim günlükleri içeride /var/log/audit/audit.log. Dosyanın değiştirilme zamanını ve değiştiren programın adını göreceksiniz.

Eğer varsa resolvconfpaket yüklü, Ağ Yöneticisi onun ayak üzerinde atlama olabilir. Tüm ağ arabirimlerini aşağı indirmeyi deneyin, ardından Ağ Yöneticisi'ni ( sudo service network-manager stop) durdurun , sonra yeniden başlatın.


1
DHCP sürümleri konusunda haklı olduğuna inanıyorum. DHCP ayarlarını ağ yöneticisinde aşağıdaki gibi değiştirebilirsiniz: nm-connection-editorTerminalinizde çalıştırın . Arayüzünüzü seçin ve düzenle düğmesine basın. IPv4 ayarlarında sadece DHCP adresleri (veya benzeri bir şey) adı verilen bir yöntem olmalıdır. Yanılmıyorsam, bu DHCP yoluyla IP adresleri almanıza izin verecek, ancak ad sunucuları (bu alanları aşağıdaki alanlarda belirtebilirsiniz) sağlayacaktır.
Christian Skjødt

Yönelticimi MAC adresini statik IP'lerle eşleştirmeye ayarlıyorum, bu yüzden DNS kiralaması çok uzun sürüyor. auditctlHat benim için çalışmıyor, ben Ağ Yöneticisi olduğu için hizmet adı inanıyoruz network-manager(tire içerir). resolvconfYüklü bir paketim yoktu , ancak /etc/resolvconf/klasörün içinde bir şeyler vardı ve başka bir Ubuntu makinesiyle karşılaştırdığımda, elimde değildi, bu yüzden paketi kurup kaldırdım ve bu klasörü el ile kaldırdım. /etc/resolv.confSadece yeniden yazıldı, bu yüzden auditctlişe başlamanın çok yardımcı olacağını düşünüyorum .
jontsai

@jontsai Paketiniz /etc/resolvconfolmasa bile varlığı normaldir resolvconf, bazı paketler kancaları oraya bırakır ve bu kancalar yalnızca resolvconfkuruluysa kullanılır . auditctlSorunun tekrar ortaya çıkması durumunda hattı düzelttim .
Gilles 'SO- kötülük olmayı'

Kullanıcı denetleme fikrini beğendim, dosyayı neyin düzenlediğini öğrenmek için kullandım, ancak dosya zaten değiştirildikten sonra çalışmaya başladı.
Peter Sankauskas

4

Bir terminal aç ve yaz

sudo chattr +i /etc/resolv.conf

+ i, dosyanın bir önyüklemede kök tarafından bile sıfırlanmamasına özen gösterir.

Yukarıdakileri geri almak için

sudo chattr -i /etc/resolv.conf

Daha fazlası için

man chattr

Bu benim için işe yaramadı. Ağ yöneticisinin yeniden başlatılması hala /etc/resolv.conf dosyasının DHCP isim sunucularının üzerine yazıyor.
Tommy,

benim için GCP'nin içinde çalışan bir Debian 9 VM'de çalıştı. yuppi! Teşekkürler!
saat


3

resolv.confAdlı bir dosyayı oluşturarak güncelleme işlemini devre dışı bırakıyorum disable_make_resolv_conf./etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

Standart fonksiyonun yerine, tadilattan sorumlu olan aynı isim verilir resolv.conf.


1

Buna geç kaldım ama davamı yukarıdakilerin hepsinden farklı olduğu için göndereceğim.

Benim durumumda, /etc/resolv.confbir sembolik bağlantı var /var/run/NetworkManager/resolv.confve bir nedenden dolayı cat /etc/resolv.confbana böyle bir dosya veya dizinde hata yok (belki boş olduğu için?)

Vi ile açıp eklediğimde nameserver x.x.x.xçalışır, ancak yeniden başlatıldığında temizlenir.

Ben düzenlemek çalıştı /etc/network/interfacesve eklenti dns-nameservers x.x.x.xdeğişti /etc/dhcp/dhclient.confve kaldırılan under request domain-name-serversde düzenlenebilir prepend domain-name-servers x.x.x.x.

Resolvconf binary kurulu NetworkManager.confdeğil, alakalı bir şey yoktu. Ancak makineyi her başlattığımda, etki alanı sunucusu yoktu.

Sebebinin ne olduğundan emin değilim ama bunun GNS3 tarafından başlatılan bir VBox makinesi olduğu ve VBox ayarında olduğu için hiçbir arabirim oluşturmadan bırakmam gerekecek gibi görünüyor. Görünüşe göre GNS3, makineyi başlattığımda, GNS3'ten başlatmam şartıyla, "UDP arayüzü" oluşturuyor.

Bu yüzden, beni sürekli aramaktan kurtarmak echo nameserver x.x.x.x> /etc/resolv.confiçin /etc/profile, sadece sorun çözüldü (çözülmedi, fakat hehe çevresinde çalıştı) eklendi. Ancak, eğer birileri bununla karşılaştıysa, o senaryoda neler olup bittiğini bilmek ilginç olabilir.


1

Eğer dosya varsa /etc/NetworkManager/NetworkManager.conf

cat /etc/NetworkManager/NetworkManager.conf

NetworkManager'ı resolv.conf ile sıfırlamayı durduracak şekilde yapılandırabilirsiniz.

sudo sh -c 'echo "
[main]
dns=none
" >> /etc/NetworkManager/NetworkManager.conf'
cat /etc/NetworkManager/NetworkManager.conf

Şimdi elinizi değiştirin /etc/resolv.confve kalıcılığını test edin.

sudo systemctl restart NetworkManager
# sudo service network-manager restart
cat /etc/resolv.conf

Kaynak: https://askubuntu.com/a/623956/452398


Teşekkürler, dns = hiçbiri eklemek sorunu uygun şekilde düzeltir.
Lastikler

0

Sadece ifcfg-ethX dosyalarınıza giriş yapın

DNS 1 = 192.168.XX

DNS 2 = 192.168.XX

DOMAIN = yourdomain.com

daha sonra ağ yöneticisi, hizmetleri yeniden başlattıktan veya kutunuzu yeniden başlattıktan sonra bu kayıtları askıya alarak resolv.conf dosyasına gönderir.


0

Sadece birinin aynı durumda olması durumunda:

Unutmuşum Dosyanın içindeki bir arayüze dhcp'yi ayarladım /etc/network/interfaces

Ağ Yöneticisi, /etc/resolv.confaldığı dhcp cevabını değiştirecektir .

hth


0

Olduğunda # Generated by NetworkManageriçinde/etc/resolv.conf

Ağ Yöneticisi yapılandırmasını düzenle:

sudo vim /etc/NetworkManager/NetworkManager.conf

içinde [main]bölümü ekleyin rc-manager=unmanaged:

[main]                                                                                                                                   
rc-manager=unmanaged

Niye ya?

rc-manager- resolv.conf yönetim modunu ayarlayın. Varsayılan değer, NetworkManager oluşturma seçeneklerine bağlıdır ve bu NetworkManager sürümü, varsayılan olarak "sembolik bağlantı" ile oluşturulmuştur.

(...)

unmanaged: dokunma /etc/resolv.conf.

Daha fazla bilgi için yapılandırma referansı: https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html

Sonra düzenleyin /etc/resolv.confve /etc/resolv.confdokunulmadan kalırsa görmek için Ağ Yöneticisini yeniden başlatın :

sudo systemctl restart NetworkManager

veya

sudo service network-manager restart

daha:

cat /etc/resolv.conf

Prosedür başarısız oldu ve varsa /etc/resolv.confAğ Yöneticisi sırasında üzerine edildi eklemeyi deneyin yeniden başlatmak dns=noneiçin [main]olduğu gibi config bölümünde https://askubuntu.com/a/1150326/364772 söyledi

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.