resolv.conf terus diset ulang oleh sesuatu

29

Saya perlu bantuan mencari tahu mengapa saya resolv.confterus berubah ke ini, menyebabkan saya tidak dapat mengakses internet luar dan hanya jaringan lokal:

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

Saya pikir saya memperbaikinya dengan menyingkirkan antarmuka loopback dan menambahkan antarmuka eth0 /etc/network/interfacesdengan instruksi di blog posterous jontsai .

Saya sudah mencoba melakukan hal-hal seperti:

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

Dan kemudian hal-hal akan bekerja sementara, dan akhirnya server nama di resolv.conf akan dikembalikan lagi.

PS Saya juga memposting ini di ubuntuforums .


Sunting: Ada setidaknya satu program lain selain NetworkManager yang sedang menulis resolv.conf, dan saya tahu ini karena ketika saya menyegarkan NetworkManager, resolv.conffile yang dihasilkan memiliki komentar yang mengatakan # Generated by NetworkManager, dan versi yang terus berubah tidak.

Jadi saya mencoba ini:

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


Edit 2:

Menambahkan output file:

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

auto eth0
iface eth0 inet dhcp

Tidak ada file seperti itu /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
jontsai
sumber
Saya menduga ada bug Network Manager, atau lebih tepatnya kesalahan konfigurasi. Apa versi Ubuntu yang Anda jalankan? Apakah Anda sudah resolvconfmenginstal paket? Posting konten /etc/network/interfaces, /etc/NetworkManager/NetworkManager.confdan /etc/NetworkManager/system-connections/*.
Gilles 'SANGAT berhenti menjadi jahat'
Saya menjalankan 10,04, tidak ada resolvconfpaket. Pada titik tertentu, modem DSL saya menjadi buruk (di belakang router) sementara jaringan lokal saya baik-baik saja, jadi saya mungkin telah mencoba menginstal nscdatau - dnsmasqmereka sudah dihapus sekarang, tetapi mungkin meninggalkan beberapa artefak yang mengganggu?
jontsai
Oke, saya baru saja reboot komputer saya untuk pertama kalinya dalam 3 minggu, dan saya pikir masalahnya hilang. o_O
jontsai
Tidak yakin, tapi saya pikir ada beberapa masalah dengan server DHCP pada vmnet1atau vmnet8(NAT dan Host-Only)
jontsai
1
Seluruh diskusi ini berkurang relevansinya sejak Ubuntu 12.04 yang memperkenalkan resolvconf di sistem basis, yang secara mendasar mengubah cara resolv.conf ditangani.
jdthood

Jawaban:

13

Anda dapat membuat penambahan statis ke /etc/resolv.conf. Penambahan itu dapat menimpa hal-hal yang sedang ditambahkan secara otomatis.

Pertama, instal resolvconfpaket.

Kemudian, tekan Alt + F2 dan jalankan gksudo nautilus. Buka /etc/resolvconf/resolv.conf.d/headjika Anda ingin menambahkan ke awal file; buka /etc/resolvconf/resolv.conf.d/tailjika Anda ingin menambahkan sampai akhir. Buat perubahan, simpan / tutup file, lalu jalankan sudo resolvconf -uuntuk menerapkan perubahan.

(Maaf saya tidak ingat apakah pengaturan pada awal atau akhir file memiliki prioritas tertinggi.)

Azendale
sumber
Perubahan manajer jaringan saya akan dikembalikan pada koneksi ke VPN apa pun. Ini memungkinkan saya untuk menyimpan 8.8.8.8 dalam daftar resolver terlepas dari jaringan mana saya terhubung.
Steven P
8

Saya memiliki masalah yang sama persis - resolv.conf akan ditulis ulang setiap kali server reboot.

Itu disebabkan oleh DHCP. Untuk mengatur resolv.conf seperti yang saya inginkan, saya mengedit /etc/dhcp/dhclient.confdan menambahkan yang berikut:

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

Anda sebenarnya dapat mengontrol sedikit tentang file resolv.conf Anda dengan membuat perubahan pada ini.

Semoga ini bisa membantu.

Peter Sankauskas
sumber
2
Ini akan menjadi solusi terbersih tetapi untuk beberapa alasan itu berhenti bekerja pada sistem saya beberapa tahun yang lalu. Saya telah terjebak dengan menonaktifkan skrip resolvconf atau chattr + i /etc/resolv.conf sejak saat itu.
Tronic
7

(Jawaban ini berisi cara untuk menyelidiki apa yang terjadi. Saya mungkin dapat memberikan solusi aktual jika Anda menggunakan metode ini untuk mengumpulkan dan memberikan informasi lebih lanjut.)

Pemicu yang mungkin untuk pembaruan yang tampaknya spontan /etc/resolv.confadalah ketika sewa DHCP Anda diperbarui. Periksa berapa lama Anda mendapatkan sewa DHCP (ini seharusnya muncul di log sistem, saya pikir dalam /var/log/syslog).

Anda dapat menggunakan auditd Instal auditd untuk mengetahui apa yang memodifikasi file. Mulai daemon ( sudo service auditd start) dan katakan padanya untuk melihat modifikasi pada file itu:

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

Log audit ada di /var/log/audit/audit.log. Anda akan melihat waktu file itu dimodifikasi dan nama program yang memodifikasinya.

Jika Anda memiliki resolvconfpaket yang diinstal, Network Manager mungkin akan menginjak kakinya. Coba turunkan semua antarmuka jaringan, lalu hentikan Network Manager ( sudo service network-manager stop), lalu mulai kembali.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Saya percaya Anda benar tentang rilis DHCP. Anda dapat mengubah pengaturan DHCP di manajer jaringan sebagai berikut: Jalankan nm-connection-editordi terminal Anda. Pilih antarmuka Anda dan tekan edit. Di bawah pengaturan IPv4 harus ada metode yang disebut hanya alamat DHCP (atau yang serupa). Jika saya tidak salah ini akan memungkinkan Anda untuk mendapatkan alamat IP melalui DHCP tetapi tidak nameserver (Anda dapat menentukannya di bidang di bawah).
Christian Skjødt
Saya mengatur router saya untuk memetakan alamat MAC ke IP statis, sehingga sewa DNS untuk waktu yang lama. The auditctlgaris tidak bekerja untuk saya, dan saya percaya bahwa nama layanan untuk Network Manager adalah network-manager(termasuk tanda hubung). Saya tidak memiliki resolvconfpaket yang diinstal, tetapi saya memiliki barang-barang di dalam /etc/resolvconf/folder, dan ketika saya membandingkannya dengan mesin Ubuntu lain, itu tidak memilikinya, jadi saya menginstal dan menghapus paket, dan secara manual menghapus folder itu. /etc/resolv.confbaru saja ditulis ulang lagi, jadi saya pikir mulai auditctlbekerja akan sangat membantu.
jontsai
@jontsai Kehadiran /etc/resolvconfnormal meskipun Anda tidak memiliki resolvconfpaket, beberapa paket menjatuhkan kait di sana, dan kait ini hanya digunakan jika resolvconfdiinstal. Saya telah memperbaiki auditctlsaluran, jika masalah muncul lagi.
Gilles 'SANGAT berhenti menjadi jahat'
Saya menyukai gagasan audit pengguna untuk mencari tahu apa yang mengedit file, tetapi sepertinya memulai setelah file sudah dimodifikasi.
Peter Sankauskas
4

Buka terminal dan ketik

sudo chattr +i /etc/resolv.conf

+ i menangani bahwa file tidak akan diatur ulang pada boot bahkan oleh root.

Untuk membatalkan hal di atas

sudo chattr -i /etc/resolv.conf

Untuk lebih

man chattr
tanmay.01
sumber
ini tidak berhasil untuk saya. Restart manajer jaringan masih menimpa /etc/resolv.conf dengan server nama DHCP.
Tommy
bekerja untuk saya pada Debian 9 VM yang berjalan di dalam GCP. yay! Terima kasih!
the0ther
3

Saya menonaktifkan update resolv.confdengan menciptakan sebuah file yang bernama disable_make_resolv_confdi/etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

Ini menggantikan fungsi standar dengan nama yang sama yang bertanggung jawab untuk resolv.confpenyegaran.

Andrew Blake
sumber
1

Terlambat dalam hal ini tetapi saya akan memposting kasus saya karena berbeda dari semua yang di atas.

Dalam kasus saya, /etc/resolv.confapakah symlink ke /var/run/NetworkManager/resolv.conf, dan untuk beberapa alasan cat /etc/resolv.confmemberi saya kesalahan tidak ada file atau direktori (mungkin karena itu kosong?)

Jika saya membukanya dengan vi dan menambahkannya nameserver x.x.x.xberfungsi, tetapi dihapus saat reboot.

Saya mencoba mengedit /etc/network/interfacesdan menambahkan dns-nameservers x.x.x.x, mengubah /etc/dhcp/dhclient.confdan menghapus di bawah request domain-name-servers, juga diedit prepend domain-name-servers x.x.x.x.

Biner Resolvconf tidak diinstal, NetworkManager.conftidak memiliki apa pun yang relevan. Tetapi setiap kali saya menyalakan ulang mesin, tidak ada server domain.

Saya tidak yakin apa alasannya tetapi tampaknya ada hubungannya dengan fakta bahwa ini adalah mesin VBox, dimulai oleh GNS3 dan karena itu di dalam pengaturan VBox, saya harus meninggalkannya tanpa antarmuka yang dibuat. Rupanya GNS3 membuat "antarmuka UDP" dengan cepat ketika saya memulai mesin, asalkan saya memulainya dari GNS3.

Jadi, untuk menyelamatkan saya dari pencarian tanpa henti, saya hanya menambahkan echo nameserver x.x.x.x> /etc/resolv.confuntuk /etc/profile, masalah diselesaikan (tidak dipecahkan, tetapi bekerja di sekitar hehe). Tapi mungkin menarik untuk mengetahui apa yang terjadi dengan skenario itu jika ada yang menabraknya.

Adriano_epifas
sumber
1

Jika Anda memiliki file /etc/NetworkManager/NetworkManager.conf

cat /etc/NetworkManager/NetworkManager.conf

Anda dapat mengkonfigurasi NetworkManager untuk berhenti mereset resolv.conf dengan

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

Sekarang ubah secara manual /etc/resolv.confdan uji keabadiannya dengan

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

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

adabru
sumber
Terima kasih, menambahkan dns = tidak ada yang memperbaiki masalah dengan cara yang benar.
Ban
0

Buat saja entri dalam file ifcfg-ethX Anda seperti itu

DNS1 = 192.168.XX

DNS2 = 192.168.XX

DOMAIN = yourdomain.com

kemudian manajer jaringan akan memposting pend catatan-catatan itu ke file resolv.conf setelah Anda me-restart layanan atau me-restart kotak Anda.

pengguna2564853
sumber
0

Hanya dalam kasus seseorang jatuh dalam kasus yang sama:

Saya Lupa Saya mengatur dhcp pada antarmuka di dalam file /etc/network/interfaces

Networkmanager akan memodifikasi /etc/resolv.confdari jawaban dhcp yang didapatnya.

hth

Boop
sumber
0

Ketika ada # Generated by NetworkManagerdi/etc/resolv.conf

Edit konfigurasi Network Manager:

sudo vim /etc/NetworkManager/NetworkManager.conf

di [main]bagian tambahkan rc-manager=unmanaged:

[main]                                                                                                                                   
rc-manager=unmanaged

Mengapa?

rc-manager- Atur mode manajemen resolv.conf. Nilai default tergantung pada opsi membangun NetworkManager, dan versi NetworkManager ini dibuat dengan default "symlink".

(...)

unmanaged: jangan sentuh /etc/resolv.conf.

Referensi konfigurasi untuk info lebih lanjut: https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html

Kemudian edit Anda /etc/resolv.confdan mulai ulang Network Manager untuk melihat, jika /etc/resolv.conftetap tidak tersentuh:

sudo systemctl restart NetworkManager

atau

sudo service network-manager restart

dari:

cat /etc/resolv.conf

Jika prosedur gagal dan /etc/resolv.confditimpa selama Network Manager restart coba tambahkan dns=noneke [main]bagian dalam konfigurasi sebagai https://askubuntu.com/a/1150326/364772 kata

voy
sumber