GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengatur DNS saya ketika resolv.conf sedang ditimpa?

Saya yakin jika Anda ingin mengganti server nama DNS, Anda cukup menambahkan baris yang mirip dengan ini di base Anda file di bawah resolv.conf.d .

Contoh

$ sudo vim /etc/resolvconf/resolv.conf.d/base

Kemudian masukkan daftar server nama Anda seperti ini:

nameserver 8.8.8.8
nameserver 8.8.4.4

Terakhir perbarui resolvconf :

$ sudo resolvconf -u

Jika Anda melihat halaman manual untuk resolvconf itu menjelaskan berbagai file di bawah /etc/resolvconf/resolv.conf.d/ .

   /etc/resolvconf/resolv.conf.d/base
          File  containing  basic  resolver  information.  The lines in this 
          file are included in the resolver configuration file even when no
          interfaces are configured.

   /etc/resolvconf/resolv.conf.d/head
          File to be prepended to the dynamically generated resolver 
          configuration file.  Normally this is just a comment line.

   /etc/resolvconf/resolv.conf.d/tail
          File to be appended to the dynamically generated resolver 
          configuration file.  To append nothing, make this  an  empty  
          file.   This file is a good place to put a resolver options line 
          if one is needed, e.g.,

              options inet6

Padahal ada peringatan di bagian atas head berkas:

$ cat /etc/resolvconf/resolv.conf.d/head
# 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

peringatan ini ada sehingga ketika file-file ini dibuat, peringatan tersebut pada akhirnya akan masuk ke resolv.conf yang dihasilkan file yang akan digunakan untuk membuat file-file ini. Jadi Anda bisa dengan mudah menambahkan nameserver baris yang dijelaskan di atas untuk base file, ke head file juga.

Referensi

  • Pertahankan server nama dns untuk ubuntu 14.04
  • Bagaimana cara menambahkan server DNS melalui resolv.conf?

Saya juga tertarik dengan pertanyaan ini dan saya mencoba solusi yang diajukan @sim.

Untuk mengujinya, saya taruh

nameserver 8.8.8.8

di /etc/resolvconf/resolv.conf.d/base dan

nameserver 8.8.4.4

di /etc/resolvconf/resolv.conf.d/head

Kemudian saya memulai ulang jaringan dengan

sudo service network-manager restart

Hasilnya adalah /etc/resolv.conf sepertinya

# 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
nameserver 8.8.4.4
nameserver 127.0.1.1

dan nm-tool menyatakan bahwa dnsserver adalah

DNS:             208.67.222.222
DNS:             208.67.220.220

mana yang disediakan oleh router saya. Di sisi lain, menggali alamat menunjukkan hal itu

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Jika saya benar, saya menyimpulkan dari semua ini bahwa

  1. hanya bagian "head" yang dibaca oleh resolvonf:bagian "base" entah bagaimana dikendalikan oleh dnsmasq
  2. dnsserver sebenarnya dipaksa ke8.8.4.4 terlepas dari server yang disediakan oleh dhcp, TETAPI Anda kehilangan caching yang disediakan oleh dnsmasq, karena permintaan selalu dikirim ke 8.8.4.4
  3. dnsmasq masih HANYA menggunakan dnsserver yang disediakan oleh dhcp.

Secara keseluruhan, ini berfungsi tetapi menurut saya itu bukan hasil yang diinginkan. Solusi yang lebih dekat menurut saya adalah sebagai berikut. Sunting

sudo vim /etc/dhcp/dhclient.conf

lalu tambahkan

supersede domain-name-servers 8.8.8.8;

Hasilnya adalah sebagai berikut:resolv.conf hanya berisi 127.0.0.1, yang berarti cache dnsmasq dipanggil dan kata nm-tool

DNS:             8.8.8.8

yang artinya jika nama yang dicari tidak ada di cache, maka diminta di 8.8.8.8 dan bukan di server yang disediakan dhcp.

Opsi lain (mungkin lebih baik) adalah menggunakan "prepend" daripada "menggantikan":dengan cara ini, jika nama tidak diselesaikan oleh 8.8.8.8, maka permintaan akan jatuh kembali ke server lain. Faktanya, kata nm-tool

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220

Saya menemukan bahwa Anda dapat mengubah server nama yang dnsmasq gunakan dengan menambahkan baris berikut ke /etc/dnsmasq.conf :

server=8.8.8.8
server=8.8.4.4

Saya tidak memiliki /etc/dnsmasq.conf file, karena diinstal oleh paket dnsmasq, tetapi Ubuntu hanya dilengkapi dengan dnsmasq-base. Saya menjalankan sudo apt-get install dnsmasq , lalu edit /etc/dnsmasq.conf , lalu sudo service dnsmasq restart dan sudo service network-manager restart .

Saya menjalankan sudo tail -n 200 /var/log/syslog untuk memeriksa syslog saya dan memverifikasi bahwa dnsmasq menggunakan server nama yang saya tentukan:

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53

Linux
  1. Bagaimana cara mengatur batas Ukuran Unggah File di Apache?

  2. Bagaimana cara mengatur curl untuk menggunakan proxy secara permanen?

  3. Bagaimana cara mengedit resolv.conf?

  1. Bagaimana cara mendapatkan file dengan nama yang benar saat dialihkan?

  2. Bagaimana cara mengatur file sebagai TIDAK dapat dieksekusi?

  3. Bagaimana cara mengatur izin file tertentu saat mengarahkan keluaran?

  1. Linux – Bagaimana Mengganti Server Vm Dns?

  2. Bagaimana cara mengatur file swap terenkripsi di Linux?

  3. Bagaimana cara menghapus file .fuse_hidden*?