Pertanyaan Bagaimana cara memasukkan baris dalam resolv.conf yang tidak akan hilang saat reboot?


Saya akhirnya bermigrasi ke 12.04 dari 7.10. Saya memiliki satu bagian terakhir untuk diselesaikan tetapi saya bingung. Saya menggunakan Wayang di setiap server, dan di masa lalu saya telah menyertakan alamat server nama dan nama domain pencarian untuk puppetmaster di resolv.conf.

search puppetmaster.com
nameserver 192.168.1.XXX

Dalam 12.04 resolv.conf akan ditimpa ketika reboot. Saya tidak dapat menggunakan IP statis untuk ini, jadi menggunakan / etc / network / interface untuk membantu saya adalah titik nill.

# 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.0.1

Apakah ada cara untuk mendapatkan resolvconf untuk menangani ini baik di kepala, ekor, atau pangkalan? Jika ada, apakah ada contoh yang bisa saya gunakan untuk men-tweak pada server saya.

Bantuan apa pun sangat dihargai.


148
2018-06-28 13:54


asal




Jawaban:


Ini mungkin lebih baik untuk memiliki server DNS Anda dapat menyelesaikan 'boneka' ke alamat yang benar, dan baik untuk memiliki server DHCP Anda menyerahkan alamat server nama DNS dan daftar pencarian atau yang lain (jika Anda memiliki alamat IP statis) untuk memiliki sesuatu seperti berikut ini di / etc / network / interfaces.

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

Tetapi jika Anda ingin melakukannya melalui file konfigurasi resolvconf yang ingin Anda edit /etc/resolvconf/resolv.conf.d/base. Di file itu, masukkan info Anda seperti yang Anda lakukan resolv.conf.

nameserver 192.168.1.XXX

Kemudian beri tahu resolvconf untuk dibuat ulang resolv.conf.

sudo resolvconf -u

120
2018-06-28 15:35



Meskipun jawaban ini memiliki suara, dan bagian pertama kurang lebih benar, bagian kedua dari jawabannya tidak benar. (1) Lakukan tidak beri tanda "pencarian" di /etc/resolvconf/resolv.conf.d/head. Jika Anda meletakkan "pencarian" baris di sana, baris ini akan diabaikan jika resolvconf menyertakan baris "pencarian" di bagian dinamis dari file resolv.conf. Resolver glibc mengabaikan semua kecuali baris "pencarian" atau "domain" terakhir. Lihat resolv.conf (5). (2) Jika konfigurasi resolvconf diubah Anda tidak harus me-restart pekerjaan resolvconf tetapi hanya menjalankan pembaruan, "resolvconf -u". - jdthood
Saya telah menghapus garis. Pilihan lainnya adalah menggunakan ekor sebagai pengganti kepala. - tgm4883
dasar, kepala atau ekor (mulai 12.04) semua ditulis ulang seperti resolv.conf, jadi saya dapat mengonfirmasi bahwa komentar @jdthood benar. Jadi, jawaban lengkap akan mengatakan - jangan mengedit file resolv.conf apa pun, dan jalankan: sudo /etc/init.d/networking restart Sesungguhnya, yang akan menulis perubahan antarmuka ke resolv.conf. - tishma
@tishma: Hai. Pertama, untuk mencegah kesalahpahaman: tidak ada yang menulis ke file base, head atau tail. Tidak ada yang menulis ke file di /etc/resolvconf/resolv.conf.d/ pada waktu proses. File-file ini dibaca oleh resolvconf yang merakit konten mereka ke dalam file yang ditulisnya --- /run/resolvconf/resolv.conf --- ke titik symlink /etc/resolv.conf. Kedua, mengenai apa yang harus dilakukan setelah opsi dns- * di / etc / network / interfaces diubah. Melakukan tidak jalankan "/etc/init.d/networking restart"; yang sekarang tidak lagi digunakan. Alih-alih jika menundukkan antarmuka yang dimaksud dan ifup lagi. - jdthood
Di 14.04 jawaban ini tidak melakukan apa pun untuk saya. - Jay Sullivan


Saya kira jawabannya adalah memeriksa Anda /etc/dhcp/dhclient.conf, saya tidak meminta dns-nameservers dari kamu dhcp klien.

Kemudian perbarui /etc/network/interfaces

auto eth0
iface eth0 inet dhcp
dns-search google.com
dns-nameservers dnsserverip

Maka Anda resolv.conf akan otomatis dikonfigurasi sesuai keinginan Anda.

Tambahkan ke dns-search lalu jalankan a /etc/init.d/networking restart  (meskipun skrip ini tidak digunakan lagi).


32
2017-11-26 01:58



aturan dhclient atas pengaturan resolvconf jadi ini harus menjadi jawaban terbaik. - Alex R
/etc/init.d/networking restart tidak berfungsi di komputer saya, tapi sudo ifdown -a lalu sudo ifup -a melakukan. (Juga, saya perlu sedikit menyadari bahwa saya harus mengganti dnsserverip dengan sesuatu seperti itu 8.8.8.8; Saya merasa agak konyol.) - Jason Gross
mencoba systemctl restart networking.service - Pavel Sayekat


Ini mungkin disebabkan oleh konfigurasi DHCP saat Anda pertama kali menginstal Ubuntu. Coba proses 3 langkah ini untuk menangani masalah konfigurasi otomatis ini.

Pertama

Edit konfigurasi antarmuka Anda, yang terletak di: /etc/network/interfaces

Tambahkan baris ini di bawah ini iface lo inet loopback:

dns-nameservers yourdns youraltdns

Sebagai contoh untuk Google DNS, Anda mungkin ingin menggunakan ini:

dns-nameservers 8.8.8.8 8.8.4.4

Kedua

Edit file konfigurasi DHCP Anda, yang terletak di:

/etc/dhcp/dhclient.conf

Tandai sintaks sebagai komentar menggunakan # di setiap baris atau cukup hapus setiap nama-server permintaan. Pada 16.04, Anda mungkin tidak perlu melakukan perubahan apa pun di sini.

Ketiga

Restart jaringan Anda dengan menggunakan perintah ini:

/etc/init.d/networking restart

Dalam 16.04:

sudo ifdown -a
sudo ifup -a

18
2018-06-20 01:50



/etc/init.d/networking restart tidak berfungsi di komputer saya, tapi sudo ifdown -a lalu sudo ifup -a melakukan. - Jason Gross
Ini sederhana dan berhasil meskipun agak sedikit sombong! Masalah dengan hal-hal seperti ubuntu adalah memiliki 1000 cara untuk melakukan satu hal! - Willa O Ng'wana
Dan kemudian Anda bisa memeriksanya /etc/resolv.conf berisi 2 entri DNS baru pada baris berguna pertama. - ROMANIA_engineer


Silakan lihat resolvconfhalaman manual. Anda dapat memaksa penyertaan pengaturan DNS tertentu dengan membuat misalnya /etc/resolvconf/resolv.conf.d/base:

  /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.

Ada file khusus lainnya (kepala dan ekor), ini dapat membantu Anda mencapai apa yang Anda inginkan.


7
2017-09-04 14:26



Anda dapat menambahkan baris ke /etc/resolvconf/resolv.conf.d/base, tetapi karena setiap nameserver dapat diakses melalui antarmuka dan hanya dapat diakses ketika antarmuka tersebut selesai, sebaiknya mengaitkan informasi nameserver dengan antarmuka tersebut. Jika antarmuka dikonfigurasi dengan ifup, ini berarti: letakkan info pada garis "dns-search" dan "dns-nameservers" di / etc / network / interface stanzas. Jika antarmuka dikonfigurasi melalui DHCP maka ini berarti: mengkonfigurasi server DHCP untuk memberikan nama pencarian dan alamat server nama ke klien. Dll. Gunakan file "basis" hanya sebagai peretasan sementara atau sebagai upaya terakhir. - jdthood


Bagi saya, jawaban di atas tidak memadai karena alasan berikut:

  • Saya tidak menggunakan resolvconf, hanya polos /etc/resolv.conf.
  • Menggunakan chattr +i untuk mengunci resolv.conf tampak terlalu sombong. Saya membutuhkan Puppet untuk bebas melakukan perubahan bila diperlukan.
  • AFAIK, mengedit /etc/network/interfaces tidak mencegah resolv.conf dari ditimpa; itu hanya menentukan server nama yang harus ditulis. Bagi saya, menentukan server nama bukan itu intinya. Saya mencoba mengatur options timeout:1 dan options attempts:1 di saya resolv.conf mengajukan.

Itu solusi terbaik Saya menemukan menimpa perilaku default dhclient menggunakan kait yang didokumentasikan.

Buat file baru di /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate dengan isi sebagai berikut:

#!/bin/sh
make_resolv_conf() {
    :
}

Kemudian buat file dieksekusi:

chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate

Sekarang ketika dhclient berjalan - baik saat reboot atau saat Anda menjalankannya secara manual sudo ifdown -a ; sudo ifup -a - memuat skrip ini nodnsupdate. Skrip ini mengesampingkan fungsi internal yang disebut make_resolv_conf() yang biasanya akan ditimpa resolv.conf dan malah tidak melakukan apa-apa.

Ini bekerja untuk saya di Ubuntu 12.04.


4
2018-03-05 22:12



Bekerja dengan baik di Debian 8. Solusi elegan! - Artur Bodera
hanya untuk kelengkapan: manpage skrip dhclient menyimpan informasi tentang skrip konfigurasi jaringan klien DHCP yang disebutkan jawabannya di atas. - hecke
Ini tidak berfungsi pada 16.04, saya menambahkan beberapa hal ke /etc/network/interfaces.d juga, tanpa efek, menambahkan override kosong dari make_resolv_conf yang direkomendasikan di sini, tidak ada efek .... tetapi tidak mengubah / etc / dhcp / dhclient.conf - apakah saya benar-benar perlu memodifikasi file konfigurasi statis untuk memperbaiki ini? - silverjam


Seperti banyak jawaban lainnya menyatakan ini ada hubungannya dengan resolvconf sedang dipasang di sistem Anda.

Jadi cara terbaik untuk menyimpan sesuatu resolv.conf yang tidak akan hilang saat reboot adalah memasukkannya ke dalam file konfigurasi resolvconf yang ada di:

/etc/resolvconf/resolv.conf.d/

Di sana pergi untuk head mengajukan. Apa pun yang Anda letakkan di sana akan tertulis di bagian atas /etc/resolv.conf

Jadi semuanya akan menjadi seperti ini:

# echo nameserver 8.8.8.8 >> /etc/resolvconf/resolv.conf.d/head
# resolvconf --enable-updates
# resolvconf -u

3
2017-10-17 13:59





tambahkan nameserver Anda ke file /etc/resolvconf/resolv.conf.d/head. File tersebut berisi pesan yang telah Anda terima:

file itu akan terlihat seperti ini setelah menambahkan 8.8.8.8

root@hvnatvcc: ~ # 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
nameserver 8.8.8.8

2
2017-10-23 10:43



Menambahkan baris ke /etc/resolvconf/resolv.conf.d/head adalah solusi yang buruk, bahkan lebih buruk daripada menambahkan baris ke /etc/resolvconf/resolv.conf.d/base. Solusi yang tepat untuk antarmuka yang dikonfigurasi menggunakan ifup adalah dengan menambahkan baris "dns-search" dan "dns-nameservers" ke stanzas di / etc / network / interfaces. Lihat juga komentar saya tentang jawaban yang lain. - jdthood
Ini adalah satu-satunya hal yang benar-benar bekerja untuk saya ... dan tampaknya sulit untuk mencari tahu mengapa tidak ada solusi yang "benar" berfungsi. - silverjam


Ini mungkin hanya permainan aneh di mesin saya, tetapi orang lain mungkin memiliki kasus sudut yang sama.

Saya mencoba berbagai cara untuk mendapatkan nameserver ISP saya yang termasuk dalam /etc/resolv.conf tanpa keberhasilan:

  • Saya termasuk mereka /etc/network/interfaces dan memulai kembali jaringan. Mereka tidak muncul di /etc/resolv.conf.

  • Saya memasukkan mereka /etc/resolv.conf secara eksplisit, tetapi tentu saja mereka ditimpa. Mereka muncul di /run/resolvconf/interface/eth0.inet, tetapi tidak pernah berhasil /etc/resolv.conf.

  • Saya mencoba mengkonfigurasi resolvconf untuk pembaruan dinamis. Tidak ada perubahan.

Akhirnya saya membaca bahwa jika mesin lokal (127.0.0.1) muncul /etc/resolv.conf server nama lainnya tidak termasuk.

Dalam keputusasaan saya mengedit /run/resolvconf/interface/lo.named, hapus satu-satunya baris di dalamnya (nameserver 127.0.0.1) dan dimulai kembali: ifdown eth0 && ifup eth0.

/etc/resolv.conf lalu termasuk nama server ISP saya untuk pertama kalinya! Saya berlari service network-manager restart untuk melihat apakah itu stabil dan /etc/resolv.conf masih termasuk server nama ISP saya. Reboot hanya untuk memastikan dan masih ada di sana tapi  /run/resolvconf/interface/lo.named disetel ulang ke: nameserver 127.0.0.1.

Anehnya memulai kembali jaringan masih berfungsi: /etc/resolv.conf masih berisi server nama ISP saya. Saya tidak bisa menjelaskan ini (dapatkah seseorang?) Tetapi ini mungkin membantu seseorang yang terjebak di tempat yang sama.


2
2018-06-26 05:18



Ini mungkin disebabkan oleh dnsmasq. Anda dapat menghapusnya menggunakan apt-get remove dnsmasq atau perbarui konfigurasi /etc/dnsmasq.conf. - Tombart


Solusi lain tidak bekerja untuk saya di sistem Fedora 20 saya. Masalah khusus saya adalah bahwa baris "pencarian" di /etc/resolv.conf sedang ditimpa. Inilah yang diperbaiki. (Ini mengasumsikan bahwa NetworkManager menghasilkan garis search rn.yourcompany.com  dan Anda ingin memilikinya search rn.yourcompany.com yourcompany.com intnet.yourcompany.com:

1.Gunakan perintah "ifconfig" untuk mencari tahu apa antarmuka yang menarik:

$ ifconfig
  :
  :

em2:  <this was the one which was connected>

2.Berikan root dan ubah ke direktori perangkat sistem konfigurasi jaringan:

$ sudo su -[sudo] 
password for youruser:
# cd /etc/sysconfig/networking/devices`
  1. Gunakan editor favorit Anda yang tersedia untuk menambahkan Domain sejajar dengan domain tambahan untuk mencari:

DOMAIN="yourcompany.com intnet.yourcompany.com"

Simpan, keluar, dan masuk kembali. NetworkManager sekarang harus memiliki jalur masuk \etc\resolve.conf:

search rn.yourcompany.com yourcompany.com intnet.yourcompany.com

1
2017-08-29 14:54



Jangan sampai hujan di pawai Anda, tetapi ini Tanya Ubuntu, jadi Fedora tidak di luar topik. - Flimm


tambahkan pada baris terakhir mis:

nameserver 8.8.8.8

Buka terminal dan ketik

sudo chattr +i /etc/resolv.conf

+ i berhati-hati bahwa file tidak akan diatur ulang pada boot.

Untuk membatalkan hal di atas

sudo chattr -i /etc/resolv.conf

Untuk lebih

man chattr

0
2018-02-23 17:42