Apa yang dilakukan “sudo echo nameserver 8.8.8.8> /etc/resolv.conf”?

13

Bisakah seseorang tolong beri tahu saya apa yang sudo echo nameserver 8.8.8.8 > /etc/resolv.confterjadi?

Dulu saya secara acak menjatuhkan koneksi internet selama 15 detik hingga 3 menit tetapi setelah menggunakan perintah ini, koneksi internet bekerja seperti pesona. Saya hanya ingin tahu apa yang dilakukan baris perintah ajaib ini.

Jeanno
sumber
3
Saya terkejut ini benar-benar berfungsi - sudo seharusnya hanya berlaku untuk gema di sini, bukan ke redirection, dan pengguna non-root seharusnya tidak memiliki akses ke /etc/resolv.conf
Max
@ Max Anda benar sekali. Saya melewatkan bagian itu - memperbarui jawaban saya.
gertvdijk

Jawaban:

27

Itu menggantikan nameserver (DNS) yang digunakan pada mesin Anda oleh layanan DNS Publik Google . Jika menjalankan perintah itu membantu Anda keluar, Anda mengalami masalah DNS di pengaturan default yang disediakan oleh jaringan Anda mungkin (DHCP). Meskipun akan lebih baik untuk menyelesaikan akar penyebab masalah, ini adalah jawaban umum untuk pertanyaan Anda.


Penjelasan perintah

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo meningkatkan hak istimewa untuk menjadi root dalam kasus ini.
  • echohanya menampilkan argumen berikut ke output standar (dalam hal ini ini menghasilkan nameserver 8.8.8.8)
  • > mengalihkan keluaran standar ke file (menimpanya) dalam shell Unix biasa.
  • /etc/resolv.conf adalah file tempat output ditulis.
  • Memiliki garis nameserver 8.8.8.8masuk /etc/resolv.confmembuat sistem menggunakan server nama yang memiliki alamat IP 8.8.8.8untuk menyelesaikan nama domain ke alamat IP. (versi sangat singkat dari apa yang sebenarnya terjadi)
  • 8.8.8.8adalah salah satu alamat yang diterbitkan oleh Google tentang tempat layanan DNS publik mereka mendengarkan.

sudo kesalahan

Walaupun penjelasan ini kedengarannya masuk akal, ini tidak akan berhasil, karena Anda akan mendapatkan kesalahan :

bash: /etc/resolv.conf: Permission denied

Mengapa? Pengalihan output ditangani oleh shell Anda (di sini: Bash) dan tidak diperhitungkan untuk perintah yang digunakan sudo. Mirip dengan bagaimana mengalikan dalam matematika lebih diutamakan daripada menambahkan. Jadi, hanya saja ada echoyang memiliki hak tinggi, tetapi cangkang Anda belum! Untuk mengatasi ini, seseorang harus menjalankan perintah ini seperti

sudo sh -c "echo nameserver 8.8.8.8 > /etc/resolv.conf"

atau, dengan menggunakan pipa dan teeuntuk output ke file:

echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf  #prints to screen as well

Ubuntu dan Network Manager

Di Ubuntu ini hanya perubahan sementara, karena Network Manager "mengelola" /etc/resolv.conffile tersebut. Modifikasi lokal akan ditimpa. Itu sebabnya Anda harus mengonfigurasi ini di Network Manager agar persisten.


Konfigurasi menggunakan Network Manager

Saya akan merekomendasikan mengkonfigurasi PC Anda dengan benar menggunakan Network Manager. Saya berasumsi Anda menggunakan DHCP di jaringan Anda di sini (paling umum). Kemudian lakukan ini untuk melakukan hal yang sama dengan perintah yang Anda gunakan:

  1. Buka Edit koneksi :

    masukkan deskripsi gambar di sini

  2. Edit profil koneksi yang Anda gunakan.

    masukkan deskripsi gambar di sini

  3. Pada tab Pengaturan IPv4 :

    • Metode: Hanya alamat otomatis (DHCP)

      Pengaturan ini membuatnya melakukan permintaan DHCP reguler untuk konfigurasi alamat IP host Anda, tetapi akan mengabaikan opsi non-wajib lainnya seperti yang disarankan server DNS.

    • Server DNS: 8.8.8.8
    • Hit Save

    masukkan deskripsi gambar di sini

Selesai


Catatan penting

Di jaringan lokal atau perusahaan, server DNS lokal mungkin digunakan untuk host lokal. Anda akan kehilangan fungsionalitas ini dengan secara langsung meminta server Google untuk menyelesaikan nama untuk Anda. Jadi, jika misalnya server DNS lokal akan tahu apa "printer" itu, maka Anda akan kehilangan menggunakan printer Anda dengan nama itu.

Jadi, tolong perbaiki server DNS lokal Anda sebagai gantinya. Jika itu hanya penerusan sederhana ke server DNS yang rusak dari ISP Anda dan Anda tidak dapat mengubahnya (misalnya ISP yang dikelola semua-dalam-satu-router), maka 8.8.8.8solusi ini mungkin satu-satunya pilihan Anda.

gertvdijk
sumber
1
Catatan penting lainnya: Google mungkin mengumpulkan siapa yang mencari apa dalam DNS, jadi pikirkan apakah Anda merasa nyaman dengan itu. Ada banyak server DNS publik lain yang dapat Anda gunakan, dan umumnya dapat diandalkan. Kedengarannya seperti OP menggunakan server DNS yang buruk, yang mungkin atau mungkin bukan yang lokal. (Saya memiliki router komoditas ADSL yang melakukan pekerjaan yang sangat buruk dengan dns).
mc0e