nameserver 127.0.1.1 di resolv.conf tidak akan hilang!

60

Saya telah membaca bahwa saya seharusnya memiliki file nameserver 127.0.1.1saya /etc/resolv.confhanya jika mesin saya memiliki server DNS sendiri. Karena tidak, memiliki itu menyebabkan masalah. Tapi apa pun yang saya lakukan saya tidak bisa menyingkirkannya!

Inilah beberapa hal yang telah saya lakukan sejauh ini:

  1. Menambahkan nameserver 192.168.1.3ke /etc/resolvconf/resolv.conf.d/basefile. (192.168.1.3 adalah DNS jaringan kami).
  2. Menjalankan: sudo resolvconf --enable-updates.
  3. Menjalankan: sudo resolvconf -u.
  4. Menjalankan: sudo service network-manager restart(hanya untuk memastikan).

Namun ketika saya membuka /etc/resolv.conffile itu tertulis nameserver 127.0.1.1:! Adakah yang tahu apa yang salah?

Harap dicatat bahwa itu sebenarnya 127.0.1.1! Dan saya tidak tahu mengapa tidak 127.0.0.1!

Bahkan ketika saya memperbarui /etc/resolv.confsecara manual dan mengubahnya ke hal lain, sudo resolvconf -uakan mengembalikannya kembali ke 127.0.1.1! Dari mana alamat ini berasal?

Mehran
sumber

Jawaban:

100

NetworkManager adalah program yang (melalui utilitas resolvconf) memasukkan alamat 127.0.1.1ke resolv.conf. NM memasukkan alamat itu jika hanya jika dikonfigurasi untuk memulai turunan program dnsmasq untuk berfungsi sebagai server penerusan penerusan lokal. Instance dnsmasq itu mendengarkan pertanyaan di alamat 127.0.1.1.

Jika Anda tidak ingin menggunakan server penerusan penerusan lokal, konfigurasikan NetworkManager untuk tidak memulai turunan dnsmasq dan tidak memasukkan alamat itu. Dalam /etc/NetworkManager/NetworkManager.confkomentar di luar garisdns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

dan restart layanan NetworkManager.

sudo service network-manager restart

Dalam mode ini, NetworkManager memperbarui /etc/resolv.conf(masih melalui resolvconf) untuk memasukkan alamat nameserver yang dimiliki NetworkManager untuk koneksi aktif.

Jika Anda ingin menonaktifkan mekanisme resolvconf untuk memperbarui resolv.conf dan cukup gunakan file resolv.conf statis, lakukan hal berikut.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8
2707974
sumber
Saya memiliki 3 DNS dan kueri tidak pernah mencapai yang ke-3 jika saya menonaktifkan dnsmasq, ada tip? Saya ingin bertanya Google, lalu menanyakan intranet dns. Terima kasih
JorgeeFG
3
restart network-managertidak bekerja pada Xenial karena menggunakan systemd bukan pemula. cobasystemctl restart network-manager
Matthias Weiler
Pertanyaan saya adalah program dnsmasq akan menanyakan server DNS mana? itu akan meminta server DNS DHCP untuk permintaan alamat IP host?
Jam ZHONG
11

Ada kemungkinan resolvconf salah konfigurasi. Ini terutama terjadi jika Anda telah bermain-main dengan file konfigurasinya tanpa benar-benar memahami cara kerja resolvconf dan NetworkManager.

Untuk informasi latar belakang, silakan baca dokumentasi resolvconf dan posting blog Stéphane Graber.

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

Pertama, Anda harus tahu bahwa Ubuntu Desktop dan Ubuntu Server secara default telah resolvconf diinstal dan diaktifkan. Resolvconf menyediakan kerangka kerja untuk memperbarui file /etc/resolv.conf secara dinamis dengan cara yang tertib dan dapat dibalik.

Kedua, Anda harus tahu bahwa Ubuntu Desktop secara default telah menginstal dan mengaktifkan NetworkManager. Secara default NetworkManager memulai turunan dnsmasq untuk berfungsi sebagai server nama penerusan lokal. Contoh dnsmasq yang dikendalikan oleh NetworkManager ini mendengarkan kueri di 127.0.1.1. Ketika NetworkManager memulai instance dnsmasq, ia memerintahkan resolvconf untuk memasukkan alamat 127.0.1.1ke resolv.conf. Seperti yang disebutkan dalam jawaban lain, jika Anda mengkonfigurasi NetworkManager untuk tidak memulai instance server penerusan lokal maka itu tidak akan memulai server nama penerusan lokal dan tidak akan memberitahu resolvconf untuk memasukkan alamat 127.0.1.1ke resolv.conf.

Konfigurasi default ini berfungsi dengan baik, jadi kecuali situasi Anda khusus, Anda harus mengembalikan konfigurasi default.

Untuk mengembalikan konfigurasi default, lihat itu

  • /etc/resolvconf/resolv.conf.d/head hanya berisi teks header resolvconf yang terdiri dari dua baris yang dimulai dengan sebuah #karakter
  • /etc/resolvconf/resolv.conf.d/base adalah file kosong
  • /etc/resolvconf/resolv.conf.d/tail adalah file kosong
  • /etc/resolv.conf adalah tautan simbolik dengan konten ../run/resolvconf/resolv.conf

Untuk mencapai ini, jalankan perintah berikut.

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# 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' > head
rm -f base tail original
:> base
:> tail

Konfigurasi asli NetworkManager harus dimiliki

[main]
...
dns=dnsmasq
...

di /etc/NetworkManager/NetworkManager.conf. Ini adalah pilihan yang masuk akal untuk menonaktifkan server penerusan penerusan lokal yang dikontrol NetworkManager dengan berkomentar di luar dns=dnsmasqgaris.

[main]
...
#dns=dnsmasq
...

Setelah melakukan semua ini, disarankan untuk me-restart mesin untuk menghapus catatan informasi server nameserver basi.

sudo reboot
jdthood
sumber
1

Dalam kasus saya, tidak ada dns=dnsmasqbaris dalam /etc/NetworkManager/NetworkManager.conffile dan /etc/resolv.confmasih ditimpa oleh Network Managernameserver 127.0.1.1

Cara mengatasinya adalah mengembalikan symlink untuk memperbarui yang benar:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
Valery Markov
sumber