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:
Saya percaya jika anda ingin mengganti DNS nameserver anda hanya perlu menambahkan baris seperti ini di dasar
file di bawah resolv.conf.d
.
$ 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.
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
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
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
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
Pilih ipv4 di tab
Pilih alamat hanya dalam metode
Masukkan nama DNS di bawah ini, dan simpan
Anda're dilakukan
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.
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.)
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.
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
File konfigurasi
cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4
Update config
sudo systemctl restart dnsmasq.service
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
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
File konfigurasi
$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;
Update Config
reboot
Menonaktifkan rdnssd
systemctl disable --now rdnssd.service
Menonaktifkan diselesaikan
systemctl disable --now systemd-resolved.service
File konfigurasi
/etc/sysconfig/network/config
Menonaktifkan netconfig
cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""
Update Config
reboot
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
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 <dns_ip_address1>,<dns_ip_address2>;
mengganti <dns_ip_address*>
item dengan konten yang tepat.
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.
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.
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.
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).
Ada dua metode
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
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.
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
/etc/resolv.conf
setelah reboot. Di sini anda dapat menemukan informasi lebih lanjut.Cara mudah untuk mengubah DNS:
$ sudo nano /etc/network/interfaces
Jika masalah datang, install nano
:
$ sudo apt-get install nano -y
kemudian ..
dns-nameserver
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.
di root:
dns=dnsmasq
di /etc/NetworkManager/NetworkManager.conf
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
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.
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).
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
).