Bagaimana cara memperbaiki penyelesaian DNS yang tidak berfungsi setelah memutakhirkan ke Ubuntu 13.10 (Saucy)

64

Setelah memutakhirkan ke 13.10 Penyelesaian DNS saya gagal. Sepertinya server DNS yang saya dapatkan dengan DHCP (LAN) tidak digunakan.

Aku bisa sementara memecahkan masalah dengan menambahkan nameserver 8.8.8.8ke /etc/resolv.conf. Namun kemudian host intranet masih belum dapat diatasi.

Ketika mengklik item menu Informasi Koneksi pada indikator jaringan, DNS Utama dan DNS Sekunder diatur dengan benar. Tapi komputer saya sepertinya tidak menggunakannya.

Jadi pertanyaan saya:

  • Apa yang harus saya masukkan resolv.conf, jika ada?
  • Bagaimana cara mengetahuinya, server nama mana yang diminta oleh komputer saya?
  • Di mana mencari selanjutnya, untuk mencari tahu, mengapa server nama yang diterima oleh DHCP tidak digunakan?
Witek
sumber
2
Saya mendapat masalah yang sama ketika meningkatkan dari 12,04 ke 14,04.
Tarrasch
6
Saya mengalami kegagalan DNS setiap hari sejak memutakhirkan ke 16.10 beberapa hari yang lalu.
WindRider
@ WindRider memiliki masalah yang sama, trik dengan dnsmasq di bawah ini tampaknya berfungsi.
Suor
Saya mempunyai masalah pada instalasi baru Lubuntu 17.04 dan menyelesaikannya dengan menambahkan url yang diperlukan secara manual ke file hosts: askubuntu.com/a/936972/34298
rubo77

Jawaban:

83

Pertama, Anda perlu tahu sedikit tentang cara kerja penyelesaian nama di Ubuntu sejak Ubuntu 12.04.

Stéphane Graber membuat blog beberapa informasi tentang hal itu tahun lalu di sini . Yang paling penting untuk diketahui adalah bahwa Ubuntu Server dan Ubuntu Desktop menggunakan resolvconf untuk mengelola resolv.conffile. Itu berarti Anda tidak boleh lagi mengedit /etc/resolv.confsecara langsung; alih-alih, Anda harus mengonfigurasi utilitas konfigurasi antarmuka jaringan untuk memberikan informasi yang tepat ke resolvconf. Untuk Ubuntu Server, utilitas konfigurasi antarmuka jaringan adalah ifup dan dikonfigurasi oleh file /etc/network/interfaces. Untuk Ubuntu Desktop, utilitas konfigurasi antarmuka jaringan adalah NetworkManager . Inilah yang Anda gunakan.

NetworkManager dikonfigurasi melalui indikator Jaringan> Edit Koneksi . Namun, untuk antarmuka jaringan yang dikonfigurasi oleh DHCP, biasanya tidak perlu mengubah pengaturan apa pun secara manual. Biasanya yang terjadi adalah server DHCP (jarak jauh) menyediakan NetworkManager alamat IP untuk antarmuka lokal dan alamat server nama DNS (jarak jauh) yang akan digunakan. NetworkManager memulai instance server penerusan yang mendengarkan secara lokal di 127.0.1.1. Alamat ini, 127.0.1.1, dikirim ke resolvconf yang menempatkan nameserver 127.0.1.1di/etc/resolv.conf. NetworkManager juga memberikan alamat IP (jarak jauh) dari server nama DNS yang disediakan DHCP ke server penerusan. Jadi, sebuah program yang berjalan pada sistem lokal meminta resolver untuk menerjemahkan nama host ke alamat IP; resolver menanyakan nameserver penerusan lokal di 127.0.1.1; server penerusan menanyakan server nama jarak jauh yang telah diberitahukan, menerima jawaban dan mengirimkannya kembali ke rantai.

NetworkManager berkomunikasi dengan proses penerusan server nama melalui D-Bus. Anda bisa melihat apa yang NetworkManager katakan kepada penerusan nameserver dengan menjalankan perintah

nmcli dev list iface eth0 | grep IP4.DNS

Pembaruan yang timbul dari komentar:
Perhatikan bahwa resolvconf benar-benar menulis file /run/resolvconf/resolv.confyang /etc/resolv.confseharusnya menjadi tautan simbolis. Jika /etc/resolv.confbukan tautan simbolis maka Anda harus membuatnya kembali. Untuk melakukannya Anda bisa berlari

sudo dpkg-reconfigure resolvconf

atau

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf        
jdthood
sumber
Terima kasih banyak atas info ini. Dalam kasus saya, perintah ini menunjukkan server DNS yang benar. Tetapi file resolf.conf tidak diperbarui. Ini memiliki stempel waktu sejak saya meletakkan nilai-nilai saya di sana. Jadi saya harus mencari tahu mengapa resolvconf tidak menulis file.
Witek
15
Resolvconf sebenarnya menulis file / run/resolvconf/resolv.conf dan /etc/resolv.conf seharusnya menjadi tautan simbolis ke /run/resolvconf/resolv.conf. Jika Anda menghapus /etc/resolv.conf maka Anda menghapus tautan simbolik. Untuk membuat ulang tautan simbolis yang dapat Anda jalankan sudo dpkg-reconfigure resolvconfatau lakukanmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
jdthood
7
Ini memiliki segalanya kecuali 'perbaikan'. Bagaimana saya bisa mengatasi masalah ini?
Amal Murali
5
Perbaikan mungkin dijalankan sudo dpkg-reconfigure resolvconfseperti yang disarankan di bagian terakhir dari jawaban.
jdthood
Terima kasih!!! Saya tidak yakin apa yang terjadi pada sistem saya tetapi menjalankannya sudo dpkg-reconfigure resolveconfsepertinya bekerja dengan baik!
meanbunny
49

Saya membuat perubahan yang disarankan pada tautan di bawah ini (menonaktifkan dnsmasq). Sekarang semuanya bekerja dengan baik! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html

Buka /etc/NetworkManager/NetworkManager.conffile.

sudo gedit /etc/NetworkManager/NetworkManager.conf

Mengomentari baris sebagai:

#dnsmasq deactivated
#dns=dnsmasq
Richard Lindstedt
sumber
4
Setelah komentar dari dnsmasq, Anda harus me-restart manajer jaringan: sudo restart network-manager.
Don Kirkby
2
Dalam kasus saya (Xubuntu), perintahnya adalah: sudo /etc/init.d/network-manager restart
aviram83
Jika hal ini terjadi pada Anda, meskipun tidak ada dnsmasq yang diinstal, dan tidak ada komentar, tambahkan dns=defaultke [main]bagian. NetworkManager memiliki plugin dnsmasq jahat sendiri yang akan digunakan sebaliknya.
dstibbe
1
Saya perlu melakukan restart ini network-manager-sudo service network-manager restart
Sungam
Salah satu kotak saya tidak memiliki dns setelah memutakhirkan ke 17.10 dan ternyata /etc/resolv.conf ternyata bukan tautan simbolis. Memperbaikinya. Kotak lain tidak menyelesaikan peningkatan dan saya menemukan file .dpkg-new di dir, beda mereka perbedaan utamanya adalah dnsmasq. Menyalinnya dan bekerja tanpa memulai ulang daemon apa pun
fchen
20

EDIT 2: Posting sebelumnya dihapus oleh moderasi, saya memposting apa yang saya temukan sebagai solusi. Maaf untuk itu.

EDIT: Saya baru saja menemukan jawabannya dan ada di halaman ini - maaf untuk miopy saya. Saya memposting temuan saya di bawah ini, memperluas jawaban yang benar oleh Richard Lindstedt yang ditemukan di halaman ini. Saya meninggalkan gemuruh awal saya untuk sedikit konteks. Tolong balas memilih jawaban Richard, dia pantas menerimanya.

Sebenarnya sangat mudah.

cukup buka file conf antarmuka Anda -> sudo vi / etc / network / interfaces

Yang pasti tidak membantu OP dan tidak membantu saya sekarang. Kami tidak ingin alamat statis, kami ingin menggunakan yang dikirim server DHCP kepada kami. NetworkManager tampaknya mengenali mereka, tetapi Ubuntu mengabaikannya:

# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]:          10.*.*.*
IP4.DNS[2]:          10.*.*.*
IP4.DNS[3]:          8.8.8.8

Tapi...

# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached

Dan / etc / network / interfaces saya adalah:

auto lo
iface lo inet loopback

yang agak aneh, saya harapkan semua antarmuka dideklarasikan di sini (atau apakah saya melewatkan sesuatu?).

Jadi, singkatnya:

  • Saya tidak main-main dengan file apa pun untuk memulai
  • Saya sudah lari dpkg-reconfigure resolvconf
  • Symlink yang tepat sudah ada
  • NetworkManager mengambil server DNS yang benar dari DHCP
  • Ubuntu TIDAK menggunakan alamat seperti itu
  • Solusinya adalah untuk memperbaiki 8.8.8.8 di / etc / network / interfaces YANG SAYA TIDAK INGIN
  • Saya ingin menggunakan server DNS yang disediakan DHCP dalam setiap dan semua situasi.

Tidak membuka utas lain karena itu masalah yang sebenarnya kecuali saya di 14.10 sekarang (tapi ini telah mengganggu saya sejak upgrade dari 12,10 ke 13,04).

LARUTAN

Ungkapan terakhir membuat saya di jalur yang benar, dan baru setelah itu saya memperhatikan jawaban Richard.

Masalahnya tampaknya terkait dengan paket yang bertentangan dnsmasqdan resolvconf. Hingga pukul 12.10, dnsmasqdigunakan. Dari 13,04 dan seterusnya, Ubuntu tampaknya beralih ke hibrida dnsmasq / resolvconf, di mana Anda telah menginstal paket dnsmasq-basedan resolvconf, tetapi tidak dengan dnsmasqsendirinya.

Saya tidak bisa mengatakan apakah itu bug dalam skrip pemutakhiran untuk 13,04 atau yang lainnya, karena ketika memutakhirkan (seperti dalam pemasangan baru) resolvconf diinstal, dnsmasq-base ditingkatkan dan dnsmasq (dengan benar) dihapus.

Tangkapannya adalah, skrip pemutakhiran gagal mengomentari dns=dnsmasqbaris masuk /etc/NetworkManager/NetworkManager.conf. Jadi, meskipun daemon dnsmasq tidak ada lagi di sistem, /etc/resolv.conf masih mengharapkannya.

Henrique
sumber
INI LUAR BIASA!
metadings
1
OMG ini memecahkan masalah DNS saya yang saya miliki selama 3 tahun terakhir! Jika Anda memiliki dnsmasqdan dnsmasq-basediinstal, NM akan menempatkan 127.0.0.1di /etc/resolv.confbukannya 127.0.1.1. Saya cukup uninstall dnsmasq(dan mengaktifkan NM) dan semuanya berfungsi dengan baik.
user1129682
4
Googler Masa Depan harus memperhatikan bahwa Anda harus sudo service network-manager restartmenerapkannya.
penentu waktu
Poin bagus untuk memulai kembali pengelola jaringan layanan!
Henrique
7

Sebenarnya sangat mudah.

cukup buka file conf antarmuka Anda -> sudo vi / etc / network / interfaces

dan di bawah antarmuka Anda (mungkin eth0) Anda akan melihat semua konfigurasi yang biasa.

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1

Setelah gateway cukup tambahkan 'dns-nameserver 8.8.8.8 8.8.8.9' atau server nama apa pun yang akan Anda gunakan.

Jadi konfigurasi Anda seharusnya:

address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9

maka cukup lakukan 'sudo service networking restart' dan Anda siap melakukannya!

sprut
sumber