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

Sebagian besar info yang saya lihat online kata untuk edit /etc/resolv.conf, tetapi setiap perubahan yang saya buat di sana hanya bisa diganti.

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

Tampaknya bahwa 127.0.1.1 adalah contoh dari dnsmasq. The dnsmasq docs mengatakan untuk mengedit /etc/resolv.conf. Aku mencoba memasukkan nameserver kustom di /etc/resolv.conf.d/base, tetapi perubahan tidak't muncul di /etc/resolv.conf setelah menjalankan sudo resolvconf -u.

FYI, saya don't ingin mengubah DNS pada per-sambungan dasar, saya ingin mengatur pengaturan DNS default untuk digunakan untuk semua sambungan bila tidak ditentukan lain.

UPDATE:

Saya menjawab pertanyaan ini pada diri sendiri: https://unix.stackexchange.com/a/163506/67024

Saya pikir itu's solusi terbaik karena:

  1. Ia bekerja.
  2. Hal ini membutuhkan sedikit perubahan dan
  3. Itu masih bekerja dalam hubungannya dengan dnsmasq's DNS cache, daripada melewati itu.
Mengomentari pertanyaan (3)

Saya percaya jika anda ingin mengganti DNS nameserver anda hanya perlu menambahkan baris seperti ini di dasar file di bawah resolv.conf.d.

Contoh

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

Kemudian masukan nameserver anda daftar di suka jadi:

nameserver 8.8.8.8
nameserver 8.8.4.4

Akhirnya update resolvconf:

$ sudo resolvconf -u

Jika anda melihat pada halaman untuk resolvconf ini menggambarkan 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

Meskipun ada's peringatan di atas kepala file:

$ 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 adalah ada sehingga ketika file-file ini dibangun, peringatan akan pada akhirnya bekerja jalan ke dihasilkan resolv.conf file yang file-file ini akan digunakan untuk membuat. Jadi anda bisa dengan mudah menambahkan nameserver garis-garis yang dijelaskan di atas untuk base file, untuk kepala file terlalu.

Referensi

Komentar (7)

Saya juga tertarik dalam pertanyaan ini dan saya mencoba solusi yang diusulkan @sim.

Untuk menguji itu, saya menempatkan

nameserver 8.8.8.8

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

nameserver 8.8.4.4

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

Kemudian saya restart jaringan dengan

sudo service network-manager restart

Hasilnya adalah bahwa /etc/resolv.conf terlihat seperti

# 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-alat menyatakan bahwa dnsserver adalah

DNS:             208.67.222.222
DNS:             208.67.220.220

yang adalah orang-orang yang disediakan oleh router saya. Di sisi lain menggali sebuah alamat menceritakan bahwa

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

Jika aku benar, aku simpulkan dari semua ini bahwa

  1. hanya "head" bagian ini dibaca oleh resolvonf: "tempat" bagian entah bagaimana dikendalikan oleh dnsmasq
  2. yang dnsserver adalah benar-benar dipaksa untuk 8.8.4.4 terlepas dari server yang disediakan oleh dhcp, TAPI 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.

Semua dalam semua, itu bekerja tapi aku don't pikir itu adalah hasil yang diinginkan meminta. Lebih dekat dengan solusi yang saya pikir adalah sebagai berikut. Edit

sudo vim /etc/dhcp/dhclient.conf

kemudian tambahkan

supersede domain-name-servers 8.8.8.8;

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

DNS:             8.8.8.8

yang berarti bahwa jika nama yang dicari tidak ada dalam cache, maka itu diminta untuk di 8.8.8.8 dan tidak ada di server yang disediakan oleh dhcp.

Lain (mungkin lebih) pilihan adalah dengan menggunakan "tambahkan" bukan "menggantikan": dalam cara ini, jika nama tidak diselesaikan dengan 8.8.8.8, maka permintaan jatuh kembali pada server lainnya. Bahkan, nm-alat kata

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220
Komentar (4)
Larutan

Saya menemukan bahwa anda dapat mengubah nameserver yang dnsmasq menggunakan dengan menambahkan baris berikut ke /etc/dnsmasq.conf:

server=8.8.8.8
server=8.8.4.4

Aku't memiliki /etc/dnsmasq.conf file, karena itu's dipasang oleh dnsmasq paket, tapi Ubuntu hanya datang dengan dnsmasq-base. Aku berlari sudo apt-get install dnsmasq, kemudian disunting /etc/dnsmasq.conf, kemudian sudo service dnsmasq restart dan sudo service network-manager restart.

Aku berlari sudo tail -n 200 /var/log/syslog untuk memeriksa saya syslog dan memverifikasi bahwa dnsmasq itu menggunakan nameserver saya ditentukan:

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
Komentar (4)

Untuk IP statis situasi, Ubuntu Server Guide mengatakan untuk mengubah file /etc/network/interfaces, yang mungkin terlihat seperti ini:

iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10

Anda mengubah IPs 192.168.3.45 192.168.8.10 untuk orang-orang yang anda inginkan, seperti 8.8.8.8

https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Halaman 38

Komentar (3)
  1. Pencarian ' Koneksi Jaringan'
  2. Buka

                    

  1. Kemudian pilih WiFi atau Ethernet, atau apa pun yang anda gunakan, dan klik edit. Anda'akan mendapatkan ini:

              

  1. Pilih ipv4 di tab

  2. Pilih alamat hanya dalam metode

  3. Masukkan nama DNS di bawah ini, dan simpan

  4. Anda're dilakukan

Komentar (4)

Cepat dan kotor solusi yang tidak't disebutkan belum menetapkan berubah bendera pada resolv.conf file setelah mengedit.

$ sudo nano /etc/resolv.conf

Tambahkan ini dan simpan:

nameserver 8.8.8.8

Maka:

$ sudo chattr +i /etc/resolv.conf

Yang harus melakukan trik. Saya melakukan ini pada sistem saya juga.

Komentar (4)

DNS Config di Bawah Linux

DNS penggunaan di linux dilakukan melalui satu set rutinitas di C perpustakaan yang menyediakan akses ke Internet Domain Name System (DNS). Resolver file konfigurasi (resolv.conf) berisi informasi yang dapat dibaca oleh resolver rutinitas yang pertama kali mereka dipanggil oleh sebuah proses. Dalam jangka pendek setiap proses meminta DNS akan baca /etc/resolv.conf dari perpustakaan. NSS berlapis-lapis di atas ini, dan dikonfigurasi oleh /etc/nsswitch.conf.

Linux DNS config terletak di file /etc/resolv.conf TAPI ada sejumlah program/jasa yang ingin untuk secara otomatis mengelola dan menangani DNS file konfigurasi di/etc/resolv.conf. Dalam beberapa situasi, anda mungkin ingin mengelola file ini sendiri. Masing-masing program/layanan mengelola DNS sendiri file-file konfigurasi seperti/etc/dnsmasq.conf (untuk dnsmasq service) dan menambahkan DNS config pada sambungan perubahan dan/atau pada acara-acara lainnya... solusi cepat untuk mengunci DNS config dengan chattr +i /etc/resolv.conf tapi ini tidak dianjurkan pada kasus tertentu, sebuah solusi yang lebih baik adalah untuk setup dengan benar semua program/jasa menggunakan DNS seperti (dnsmasq/network-manager/resolvconf/dll.)

Mendapatkan Kembali Kontrol Dari DNS

Berikut ini adalah daftar lengkap dari setup untuk mendapatkan kembali kontrol dari resolv.conf dan menghindari hal ditimpa (cara menonaktifkan/setup DNS dari lokasi lain lain dari resolv.conf) perhatikan bahwa resolvconf adalah program mandiri dari resolv.conf, juga tergantung pada sistem anda/config anda mungkin tidak memiliki salah satu atau banyak program yang tercantum di sini.

1. Resolvconf:

File konfigurasi

cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4

Update config

sudo resolvconf -u

Menonaktifkan resolvconf

systemctl disable --now resolvconf.service 

2. Dnsmasq Layanan:

File konfigurasi

cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4

Update config

sudo systemctl restart dnsmasq.service

3. Network Manager:

File konfigurasi

/etc/NetworkManager/*

Menonaktifkan DNS

$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none

Mengaktifkan DNS

$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default

[global-dns]
searches=example.com

[global-dns-domain-*]

Gunakan diselesaikan layanan

$ cat /usr/lib/NetworkManager/conf.d/resolved.conf 
[main]
dns=systemd-resolved

Gunakan resolvconf

$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf 
[main]
rc-manager=resolvconf

Update config

systemctl restart NetworkManager.service

4. Antarmuka Jaringan:

File konfigurasi

$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Update Config

reboot

5. DHCP Client:

File konfigurasi

$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers ,;

Update Config

reboot

6. Rdnssd Layanan:

Menonaktifkan rdnssd

systemctl disable --now rdnssd.service

7. Diselesaikan Layanan:

Menonaktifkan diselesaikan

systemctl disable --now systemd-resolved.service

8. Netconfig:

File konfigurasi

/etc/sysconfig/network/config

Menonaktifkan netconfig

cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""

Update Config

reboot

Pengaturan DNS Server

Contoh dari /etc/resolv.conf konfigurasi

#Cloudflare
nameserver 1.0.0.1

#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4

#Cloudflare 
#nameserver 1.1.1.1

#Classic Config
#nameserver 192.168.1.1
#search lan
Komentar (0)

Masalah saya sedikit berbeda, saya ingin menimpa saya router DNS server. Saya menemukan link ini dari Ubuntu: https://wiki.ubuntu.com/OverrideDNSServers

Ia mengatakan: Jika anda ingin menimpa pengaturan DNS yang disediakan untuk anda oleh DHCP server, buka

/etc/dhcp3/dhclient.conf

dan tambahkan baris berikut:

supersede domain-name-servers ,;

mengganti <dns_ip_address*> item dengan konten yang tepat.

Komentar (3)

Mungkin aku'm kehilangan sesuatu, tapi menurut config petunjuk di https://help.ubuntu.com/14.04/serverguide/network-configuration.html semua yang anda lakukan adalah update berikut. Saya tidak menjalankan proxy - hanya sebuah mesin di belakang firewall dan DNS lokal (misalnya menunjukkan Googles, tapi set ke apa pun yang anda butuhkan).

nano /etc/network/interfaces

Default:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
auto eth0
iface eth0 inet dhcp

DIPERBARUI:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
#iface eth0 inet dhcp
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x

#nameservers
# you may not need dns-search
# I use it because I'm running this on a Windows network 
# so its useful to have
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Reboot, jika anda bisa.

Komentar (0)

Coba tambahkan dns-nameserver XXX.XXX.XXX.Xke/etc/networking/interfaces` file.

Komentar (2)

Beberapa jawaban berikut bekerja dengan baik. Namun aku wasn't bahagia dengan kenyataan saya harus manual melalui file konfigurasi hanya untuk mengatur "tepat" DNS yang aku sudah saya menerima lebih dari DHCP dengan Libraries.

Saya melakukan sedikit menggali dan melihat bahwa /etc/resolv.conf file sebenarnya adalah sebuah link dan's menunjuk ke /run/systemd/mengatasi/rintisan-resolv.conf. Setelah beberapa percobaan tampak bahwa /run/systemd/mengatasi/ direktori yang berisi file lain yang bernama resolv.conf yang sudah berisi pengaturan anda've diterima melalui DHCP. Jadi, daripada harus secara manual menimpa/membuat file konfigurasi di /etc/, anda hanya dapat kembali link /etc/resolv.conf untuk menunjuk ke /run/systemd/mengatasi/resolv.conf file dan semua harus baik-baik saja:

# sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Sekarang anda harus dapat untuk mengedit pengaturan bahkan dari Network Manager di Gnome. :)

Tidak yakin apakah ini akan bekerja pada lebih tua ubuntu's tetapi tidak pada Ubuntu 17.10.

Komentar (1)

EDIT MUNGKIN 6,2016

I've menulis sebuah script untuk update semua pengaturan untuk sistem koneksi di /etc/Network-Manager/sistem-koneksi/ direktori. GUI yang anda gunakan untuk mengedit koneksi individu, suntingan tertentu file dalam direktori tersebut. Script update semua file - itu hanya mencari orang-orang yang don't memiliki dns set dengan grep dan set dengan awk.

Sejak mengakses file-file tersebut membutuhkan sudo mengakses, menjalankan script ini dengan sudo dan kemudian restart network manager

#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in 
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script

set -x

for file in /etc/NetworkManager/system-connections/* ; do
        grep 'dns=208.67.220.220;' "$file"  || ( awk '{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220.
220;\nignore-auto-dns=true"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done

Script dalam aksi:

ORIGINAL POSTING Beberapa pengguna di sini menunjukkan bahwa DNS entah bagaimana dikendalikan oleh dnsmasq. Itu memang benar. I've menghadapi sedikit masalah kecil, di mana tidak peduli bagaimana saya berubah kepala atau tubuh di /etc/resolvconf/resolv.conf.d , komputer saya tidak't benar-benar mengakses magang dengan nama domain - hanya bekerja dengan alamat IP.

Apa yang saya lakukan adalah mengedit /etc/NetworkManager/NetworkManager.conf file. Awalnya, katanya dns=dnsmasq tapi aku berubah untuk: dns=208.67.222.222. Meskipun cara ini, nm-alat doesn't menyebutkan 208.67.222.222, saya masih bisa menggunakan nama domain, tidak hanya alamat IP.

Berikut ini's bagaimana saya NetworkManager.conf file terlihat seperti sekarang:

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

[ifupdown]
managed=false

CATATAN: Untuk detail lebih lanjut tentang masalah dan solusi ini, lihat posting saya di askubuntu.com.

UPDATE #1

Setelah kembali pulang dari universitas hari ini, saya menemukan bahwa saya tidak't connect ke WiFi rumah. I've-baca sedikit di man NetworkManager.conf dan ternyata dns= in [utama] sebenarnya adalah sebuah garis untuk plugin, jadi line dns=dnsmasq adalah benar-benar menambahkan dnsmasq plugin untuk NetworkManager, rupanya.

Jadi solusi saya masih bekerja, hanya saja tidak seperti yang saya harapkan. Berikut ini's kutipan dari halaman man:

dns=plugin1,plugin2, ... Daftar DNS plugin nama yang dipisahkan oleh ','. DNS plugin yang digunakan untuk menyediakan caching nameserver fungsi (yang mempercepat DNS query) dan untuk mendorong DNS data untuk aplikasi yang menggunakannya.

Sehingga dengan menetapkan dns=208.67.222.222 saya mungkin telah, pada dasarnya, mencegah NetworkManager dari menggunakan plugin itu, yang akan digunakan server DNS lokal (yang rupanya doesn't bekerja).

Komentar (0)

Ada dua metode

Metode 1

DNS server yang digunakan dapat diubah dengan memperbarui kepala file di bawah resolv.conf.d

$ echo 'nameserver 1.1.1.1' | sudo tee /etc/resolvconf/resolv.conf.d/base

dan kemudian jalankan

$ sudo resolvconf -u

Di atas akan menghasilkan generik resolv.conf file /etc direktori. Semua anda menyelesaikan permintaan akan dikirim ke kata di atas nameserver. Solved.

Namun ada implikasi ini. Ketika menggunakan resolvconf untuk langsung query 1.1.1.1 untuk anda, resolusi, kekuatan caching yang disediakan oleh dnsmasq hilang. Setiap permintaan akan pergi ke 1.1.1.1

Metode 2

Jika anda don't ingin di atas terjadi dan menggunakan dnsmasq untuk resolusi DNS merujuk ini jawaban. Jawabannya adalah tidak dijelaskan di sini.

Tambahkan konten berikut di /etc/dnsmasq.conf file.

server=1.1.1.1

Kemudian restart service dnsmasq

$ sudo systemctl restart dnsmasq.service

Hal-hal akan bekerja dengan baik. Solved.

Komentar (0)

Yang's karena tertentu diinstal aplikasi ini mengelola file ini. Anda dapat meng-uninstall aplikasi atau mengatur opsi yang diinginkan langsung melalui aplikasi tersebut.

Pada kasus saya (Linux centos7 minimal server) memiliki situasi yang sama saya mendapatkan # yang Dihasilkan oleh NetworkManager di atas resolv.conf file jadi cara terbaik yang saya bisa mengubah opsi ini menggunakan

nmtui

perintah. Anda dapat mengedit nameserver pada alat ini dan ketika anda mengubah pilihan dari networkmanager dari utilitas ini mereka akan secara otomatis diterapkan ke /etc/resolv.conf setelah reboot. Di sini anda dapat menemukan informasi lebih lanjut.

Komentar (0)

Cara mudah untuk mengubah DNS:

$ sudo nano /etc/network/interfaces

Jika masalah datang, install nano:

$ sudo apt-get install nano -y

kemudian ..

  1. menemukan ini: dns-nameserver
  2. jika anda don't menemukan itu ketik saja di sana
  3. Saya melakukan saya seperti ini: dns-nameserver 199.85.126.10 199.85.127.10

Saya berharap ini adalah jalan yang terbaik, aku melakukan hal seperti ini pada VPS dengan cara.

Komentar (0)

di root:

  1. komentar dns=dnsmasq di /etc/NetworkManager/NetworkManager.conf
  2. tambahkan menggantikan domain-name-server 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2; pada akhir dari /etc/dhcp/dhclient.conf
  3. sudo service network-manager restart

Berikut ini akan membuat perubahan yang ditunjukkan di atas:

$ sudo sed -i 's/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/' \
   /etc/NetworkManager/NetworkManager.conf

$ echo 'supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;' | \
   sudo tee --append /etc/dhcp/dhclient.conf

$ sudo service network-manager restart

Tunggu 7/10 detik untuk menyelesaikan proses restart, cek konfigurasi dengan "nslookup nist.gov". Bekerja dengan baik pada Ubuntu 14.04 LTS.

Komentar (0)

NB : Seperti kebanyakan jawaban, yang satu ini mengasumsikan menggunakan NetworkManager. Namun tidak seperti kebanyakan jawaban yang lain, itu doesn't mengasumsikan penggunaan resolvconf, dhclient atau apa pun — berhati-hatilah bahwa mereka dapat mengambil alih, meskipun (lihat update).

Mengingat jumlah views dari pertanyaan ini itu's cukup luar biasa bahwa ini 8 karakter solusi belum't telah diposting lagi : menurut orang NetworkManager.conf,

dns: [...] tidak ada: NetworkManager tidak akan mengubah resolv.conf. Ini berarti rc-manajer unmanaged

Oleh karena itu tambahkan

dns=none

di [utama] bagian dari /etc/NetworkManager/NetworkManager.conf kemudian restart NetworkManager dan tidak't memodifikasi /etc/resolv.conf lagi.

Perhatikan bahwa pengaturan rc-manager=unmanaged harus setara dengan dns=none, dan bahwa pengaturan rc-manager=symlink bersama dengan memiliki /etc/resolv.conf sebagai sebuah link simbolik mungkin ide yang lebih baik (baca disebutkan di atas halaman manual).

Update :

Setelah NetworkManager berhenti timpa /etc/resolv.conf, saya pikir dhcpd sudah mengganti /etc/resolv.conf dengan sia-sia file kosong di boot. Halaman manual dari dhcpcd.conf membantu, itu sudah cukup untuk menambah

nohook resolv.conf

di dhcpcd.conf (saya adalah di /etc/dhcpd.conf).

Komentar (0)