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:
- Ia bekerja.
- Hal ini membutuhkan sedikit perubahan dan
- Itu masih bekerja dalam hubungannya dengan dnsmasq's DNS cache, daripada melewati itu.
283
17
Saya percaya jika anda ingin mengganti DNS nameserver anda hanya perlu menambahkan baris seperti ini di
dasar
file di bawahresolv.conf.d
.Contoh
Kemudian masukan nameserver anda daftar di suka jadi:
Akhirnya update
resolvconf
:Jika anda melihat pada halaman untuk
resolvconf
ini menggambarkan berbagai file di bawah/etc/resolvconf/resolv.conf.d/
.Meskipun ada's peringatan di atas
kepala
file: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 menambahkannameserver
garis-garis yang dijelaskan di atas untukbase
file, untukkepala
file terlalu.Referensi
Saya juga tertarik dalam pertanyaan ini dan saya mencoba solusi yang diusulkan @sim.
Untuk menguji itu, saya menempatkan
di
/etc/resolvconf/resolv.conf.d/base
dandi
/etc/resolvconf/resolv.conf.d/kepala
Kemudian saya restart jaringan dengan
Hasilnya adalah bahwa
/etc/resolv.conf
terlihat sepertidan
nm-alat
menyatakan bahwa dnsserver adalahyang adalah orang-orang yang disediakan oleh router saya. Di sisi lain menggali sebuah alamat menceritakan bahwa
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
kemudian tambahkan
Hasilnya adalah sebagai berikut: resolv.conf berisi hanya 127.0.0.1, yang berarti bahwa dnsmasq cache dipanggil dan nm-alat kata
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
Saya menemukan bahwa anda dapat mengubah nameserver yang
dnsmasq
menggunakan dengan menambahkan baris berikut ke/etc/dnsmasq.conf
:Aku't memiliki
/etc/dnsmasq.conf
file, karena itu's dipasang oleh dnsmasq paket, tapi Ubuntu hanya datang dengan dnsmasq-base. Aku berlarisudo apt-get install dnsmasq
, kemudian disunting/etc/dnsmasq.conf
, kemudiansudo service dnsmasq restart
dansudo service network-manager restart
.Aku berlari
sudo tail -n 200 /var/log/syslog
untuk memeriksa saya syslog dan memverifikasi bahwadnsmasq
itu menggunakan nameserver saya ditentukan:Untuk IP statis situasi, Ubuntu Server Guide mengatakan untuk mengubah file /etc/network/interfaces, yang mungkin terlihat seperti ini:
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.Tambahkan ini dan simpan:
Maka:
Yang harus melakukan trik. Saya melakukan ini pada sistem saya juga.
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 denganchattr +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
Update config
Menonaktifkan resolvconf
2. Dnsmasq Layanan:
File konfigurasi
Update config
3. Network Manager:
File konfigurasi
Menonaktifkan DNS
Mengaktifkan DNS
Gunakan diselesaikan layanan
Gunakan resolvconf
Update config
4. Antarmuka Jaringan:
File konfigurasi
Update Config
5. DHCP Client:
File konfigurasi
Update Config
6. Rdnssd Layanan:
Menonaktifkan rdnssd
7. Diselesaikan Layanan:
Menonaktifkan diselesaikan
8. Netconfig:
File konfigurasi
Menonaktifkan netconfig
Update Config
Pengaturan DNS Server
Contoh dari
/etc/resolv.conf
konfigurasiMasalah 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
dan tambahkan baris berikut:
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).
Default:
DIPERBARUI:
Reboot, jika anda bisa.
Coba tambahkan dns-nameserver XXX.XXX.XXX.X
ke
/etc/networking/interfaces` file.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 dariDHCP
denganLibraries
.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 bernamaresolv.conf
yang sudah berisi pengaturan anda've diterima melaluiDHCP
. 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: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 dengansudo
dan kemudian restart network managerScript 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 berubahkepala
atautubuh
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, katanyadns=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: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 ternyatadns=
in[utama]
sebenarnya adalah sebuah garis untuk plugin, jadi linedns=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:
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
Metode 1
DNS server yang digunakan dapat diubah dengan memperbarui
kepala
file di bawahresolv.conf.d
dan kemudian jalankan
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 query1.1.1.1
untuk anda, resolusi, kekuatan caching yang disediakan oleh dnsmasq hilang. Setiap permintaan akan pergi ke1.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.Kemudian restart service dnsmasq
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 atasresolv.conf
file jadi cara terbaik yang saya bisa mengubah opsi ini menggunakan
perintah. Anda dapat mengedit nameserver pada alat ini dan ketika anda mengubah pilihan dari networkmanager dari utilitas ini mereka akan secara otomatis diterapkan kenmtui
/etc/resolv.conf
setelah reboot. Di sini anda dapat menemukan informasi lebih lanjut.Cara mudah untuk mengubah DNS:
Jika masalah datang, install
nano
: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:
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
,Oleh karena itu tambahkan
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 dengandns=none
, dan bahwa pengaturanrc-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 pikirdhcpd
sudah mengganti/etc/resolv.conf
dengan sia-sia file kosong di boot. Halaman manual daridhcpcd.conf
membantu, itu sudah cukup untuk menambahdi
dhcpcd.conf
(saya adalah di/etc/dhcpd.conf
).