Haruskah saya mengedit file resolv.conf saya untuk memperbaiki masalah DNS yang salah?

35

Saya memiliki masalah bahwa mesin Ubuntu saya menggunakan server DNS yang salah. Untuk beberapa alasan, mesin menanyakan localhostinformasi DNS.

Saya telah menambahkan server DNS di pengaturan jaringan GUI, tetapi /etc/resolv.confmasih berisi 127.0.0.1sebagai alamat server DNS. Sekarang, saya pikir saya hanya bisa mengedit file sendiri, tetapi secara eksplisit mengatakan saya tidak boleh mengedit file dengan tangan.

Sekarang, karena pengaturan jaringan GUI tidak menghasilkan file dengan pengaturan yang benar, bagaimana cara menghasilkan resolv.conffile baru sendiri?

Ahatius
sumber
1
Jika Anda menggunakan Ubuntu Server 12.04 LTS, lakukan saja bantuan besar Anda dan edit /etc/resolvconf/resolv.conf.d/head langsung seperti yang Anda inginkan, legacy resolv.conf Anda akan terlihat. Saya tidak memiliki apa-apa selain masalah penyelesaian sampai saya memaksanya dengan kasar.
askubuntu.com/questions/157154/... mungkin pertanyaan terkait.
Ehtesh Choudhury

Jawaban:

40

Apa tidak ada jawaban diposting sejauh alamat adalah penampilan yang penanya gagal untuk memahami bahwa memiliki nameserver 127.0.0.1di /etc/resolv.confbenar, dengan asumsi bahwa nameserver lokal berjalan. Dan di Ubuntu 12.04 Desktop ada, secara default, server nama lokal yang berjalan, yaitu, dnsmasqproses yang dikendalikan oleh NetworkManager yang mendengarkan 127.0.0.1. Di Ubuntu 12.10 alamat mendengarkan telah diubah menjadi 127.0.1.1.

Jadi solusinya adalah tidak membuat perubahan resolv.conf. Itu benar, dengan asumsi bahwa si penanya ingin menggunakan server nama lokal.

Jika layanan nama tidak berfungsi maka server nama lokal tidak diberikan alamat penerusan yang benar, atau ada beberapa masalah jaringan lainnya.

Penanya mencoba menggunakan "pengaturan jaringan GUI" untuk "menghasilkan file dengan pengaturan yang tepat" dan ini gagal berfungsi. Saya tidak tahu persis apa artinya ini, tetapi di sini adalah cara yang tepat untuk memasukkan alamat server nama sehingga mereka berakhir resolv.confpada waktu yang tepat. Saya berasumsi bahwa si penanya menggunakan NetworkManagerdan tidak ifupmengkonfigurasi antarmuka.

Paling sering antarmuka dikonfigurasi menggunakan protokol DHCP. Dalam hal ini tidak ada yang perlu dikonfigurasi pada sistem lokal. Server DHCP tahu alamat server nama apa yang harus digunakan kliennya dan mengirimkan informasi ini ke klien DHCP, yang mengirimkannya ke NetworkManager, yang mengirimkannya ke resolvconf, yang memasukkan informasi tersebut resolv.conf. Jadi dalam hal ini adalah server DHCP yang mungkin perlu dikonfigurasi.

Jika antarmuka jaringan pada mesin lokal dikonfigurasi secara statis maka alamat server nama yang benar harus dimasukkan ke dalam NetworkManager di, misalnya, indikator jaringan | Edit Koneksi ... | Nirkabel | myconnection | Edit ... | Pengaturan IPv4 | Server DNS tambahan.

Ada kemungkinan server nama lokal tidak berfungsi dengan benar. Dalam hal ini si penanya harus mengedit/etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

dan berkomentar di luar garis

dns=dnsmasq

di bagian "[utama]". Untuk mengomentari baris, letakkan #di awal baris, lalu simpan file. Kemudian restart manajer jaringan.

sudo restart network-manager

Setelah ini, alamat server nama non-lokal akan dimasukkan resolv.confsebagai ganti 127. * alamat.

Jika si penanya menggunakan ifupdaripada NetworkManager untuk mengkonfigurasi antarmuka jaringan maka jawaban jmartin2279 benar: Anda harus menambahkan alamat nameserver ke / etc / network / interface dengan cara yang dijelaskan oleh jmartin2279.

Bertentangan dengan apa yang beberapa jawaban yang lain menyarankan, pada umumnya Anda harus tidak menambah nameserver, domainatau searchpilihan untuk file dalam /etc/resolvconf/resolv.conf.d/. Lihat komentar saya pada jawaban itu.

jdthood
sumber
1
"Server DHCP tahu alamat server nama yang harus digunakan kliennya" - Kecuali ketika Anda tidak memiliki kendali atas server DHCP (pikirkan hotspot WiFi publik) dan ingin menimpa server nama yang sedang digunakan ... Mengatur konfigurasi yang sama pada per-koneksi dasar - lagi dan lagi untuk setiap hotspot WiFi yang Anda hubungkan - bukanlah solusi.
Teoh Han Hui
Sepertinya saya perlu mengeksekusi dhclientuntuk perubahan (tha nameserverlines) akhirnya sampai etc/resolv.conf. Saya menjalankan live yang dikustomisasi Xubuntu 14.04 (mungkin itu alasannya).
Sopalajo de Arrierez
Apa kerugian dari menonaktifkan DNSMasq, jdthood? Tentu saja, resolusi nama dan internet tampaknya berfungsi dengan baik setelah melakukannya.
Sopalajo de Arrierez
Lihat bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1003842 , misalnya, komentar saya # 60.
jdthood
Resolv.conf saya terus berubah 127.0.0.1walaupun manajer jaringan saya memiliki server nama lain + dnsmasq sedang dikomentari + di-boot ulang + dnsmasq terbunuh (saat masih dimulai) + jaringan restart: /
beberapa pengguna
17

Jika Anda menggunakan ifup untuk mengkonfigurasi antarmuka secara statis maka Anda dapat menambahkannya ke file / etc / network / interfaces.

Buka terminal dan ketik:

sudo gedit /etc/network/interface*

Anda harus melihat sesuatu seperti:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Edit ke:

auto eth0
iface eth1 inet static
address 192.168.1.10 
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8

menggunakan informasi jaringan Anda sendiri. ini akan memungkinkan Anda untuk mengatur dns. Anda dapat menggunakan beberapa server dns di sini:

dns-nameservers 8.8.8.8 8.8.4.4

Setelah melakukan ini, jalankan

ifdown eth0
ifup eth0
jmartin2279
sumber
Jika ini kasus Anda, ini solusinya: "Jika Anda menggunakan ifup untuk mengkonfigurasi antarmuka secara statis ...."
angelcervera
Apakah Anda bahkan menguji ini? ifdown: interface eth0 not configured
Cerin
3
jika Anda terhubung melalui ssh Anda tidak dapat menggunakan ifdown / ifup. alih-alih gunakansudo /etc/init.d/networking restart
TD_Nijboer
11

Di Ubuntu 12,04 penanganan resolv.conf berubah.

Jika Anda ingin menambahkan alamat server nama Anda sendiri, edit file /etc/resolvconf/resolv.conf.d/ head

sudo nano /etc/resolvconf/resolv.conf.d/head

dan tambahkan server nama Anda di sana (mis: Google open dns)

nameserver 8.8.8.8

simpan file dan kemudian jalankan

sudo resolvconf -u

Tidak ada reboot atau yang lainnya. Mungkin Anda perlu memulai ulang manajer jaringan

sudo service network-manager restart

Selesai

Anda dapat mengujinya dengan perintah

nslookup www.google.com

Hasilnya harus mirip dengan

Server: 8.8.8.8
Address: 8.8.8.8#53
NickTux
sumber
4
Menambahkan baris "nameserver" ke /etc/resolvconf/resolv.conf.d/head mungkin berfungsi sebagai peretasan cepat tetapi ini bukan solusi yang tepat untuk masalah apa pun. Melakukan hal itu membuat resolver menggunakan alamat nameserver dalam semua keadaan, sedangkan nameserver yang digunakan bergantung pada situasinya. Misalnya, jika Anda terhubung ke LAN (mungkin melalui VPN) maka Anda biasanya ingin menggunakan server nama LAN agar dapat menyelesaikan nama pribadi di LAN. Dan dalam kasus ini, sistem tampaknya menjalankan nameserver caching lokal, tetapi menambahkan "nameserver 8.8.8.8" hanya memintasinya.
jdthood
@ jdthood - Anda menunjukkan masalah. Mau memberikan solusi?
TJ Biddle
@ TT Saya sudah memposting jawaban untuk pertanyaan utama ("Bagaimana cara saya mengedit file resolv.conf?") Jika itu yang Anda maksud.
jdthood
1
Tolong jangan rekomendasikan ini. Di bagian paling atas file, "JANGAN SEDANGKAN FILE INI DENGAN TANGAN - PERUBAHAN ANDA AKAN TERLALU LAMA".
Cerin
Saya ingin menunjukkan bahwa mengedit /etc/resolv.conf secara manual akan menimpa perubahan saat reboot, namun, mengedit /etc/resolvconf/resolv.conf.d/head secara manual TIDAK menimpa perubahan saat booting tetapi sepertinya tidak pada saat reboot. instalasi resolvconf yang kemungkinan mengapa peringatan itu ada.
Ken,
1

Untuk menambah lebih banyak entri /etc/resolv.conf, buat /etc/resolvconf/resolv.conf.d/tailfile dan tambahkan di sana.

Tetapi jika /etc/resolv.confberisi 127.0.0.1, maka menambahkan entri ke /etc/resolvconf/resolv.conf.d/tailtidak akan mengubah apa pun. Anda harus mengatur alamat server DNS Anda secara statis di NetworkManager yang akan mengirimnya ke dnsmasq yang mendengarkan 127.0.0.1.

Konfigurasi DNS untuk antarmuka statis harus sesuai dengan entri " dns-nameservers", " dns-search" dan " dns-domain" yang ditambahkan ke bait iface sesuai/etc/network/interfaces

Baca ini untuk informasi lebih lanjut.

`Selain itu:

Anda dapat menginstal alat gui bernama gnome-network-adminyang akan mengatur DNS Anda. Cobalah :

sudo apt-get install gnome-network-admin
Kevin Bowen
sumber
3
(1) Tidak, jangan tambahkan opsi "nameserver" ke /etc/resolvconf/resolv.conf.d/tail. Itu tidak efektif (karena opsi "nameserver" lainnya diutamakan) dan suboptimal (karena itu konfigurasi statis sedangkan konfigurasi harus mencerminkan keadaan jaringan). (2) Tidak, jangan gunakan gnome-network-admin. Ini tidak berfungsi dengan baik dengan resolvconf. Lihat bug # 60518 ( bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/60518 ).
jdthood