Bagaimana cara mengatasi opsi resolv.conf seperti rotate, timeout di CentOS?

9

CentOS akan menghapus semua perubahan manual yang dilakukan /etc/resolv.confsecara berkala. Default di Linux buruk dalam hal gagal dalam waktu yang wajar (permintaan server nama dalam urutan yang sama setiap kali, batas waktu 5 detik, 2 coba lagi).

Karenanya, DNS pertama di Anda resolv.confpada dasarnya adalah jalur kritis. Jika gagal, Anda bisa melihat 10 detik sebelum gagal.

Standarnya adalah tweakable (lihat halaman manual resolv.conf ), tetapi bagaimana bisa ada perubahan yang dibuat permanen di CentOS dan bertahan melalui reboot dll?

Adam C
sumber

Jawaban:

12

Jawabannya dapat ditemukan di /sbin/dhclient-script:

if [ -n "${RES_OPTIONS}" ]; then
    echo "options ${RES_OPTIONS}" >> ${rscf}
fi

Tetapi, tidak terlalu jelas di mana Anda dapat mengatur RES_OPTIONSuntuk membuat skrip mengambilnya - beberapa hal seperti domain pencarian dapat diatur dalam ifcfg-ethXfile, tetapi opsi resolver diatur di tempat lain. File yang Anda inginkan sebenarnya /etc/sysconfig/network. Untuk mengatur opsi yang relevan, tambahkan sesuatu seperti baris ini ke file itu:

RES_OPTIONS="rotate timeout:1 retries:1"

Itu akan menetapkan batas waktu menjadi 1 detik, gunakan satu coba lagi dan beri tahu klien untuk memutar resolvernya per permintaan alih-alih secara berurutan melalui daftar setiap kali.

Jika Anda ingin agar perubahan segera berlaku, maka service network restartkeluarkan perintah dan periksa yang baru /etc/resolv.confdengan segala kemuliaan. Inilah yang tampak seperti milik saya saat menguji ini:

# cat /etc/resolv.conf 
; generated by /sbin/dhclient-script
search example.com
options rotate timeout:1 retries:1
nameserver 10.1.1.2
nameserver 10.1.1.1
Adam C
sumber
1

Jawaban yang diterima adalah ketika menggunakan skrip jaringan lawas. Jika Anda menggunakan NetworkManager, Anda mungkin tidak memilikinya /etc/sysconfig/network, dan jika Anda melakukannya, masih tidak akan digunakan untuk koneksi yang dikelola oleh NetworkManager .

Jika Anda menggunakan NetworkManager :

Untuk menambahkan opsi, ex menambahkan rotateke bond0:

nmcli con mod bond0 +ipv4.dns-options rotate

Untuk menghapus opsi itu:

nmcli con mod bond0 -ipv4.dns-options rotate

Itu +baik untuk mengubah opsi juga; NetworkManager cukup pintar untuk mendeteksi opsi yang ada dan memperbaruinya. Misalnya, mengubah nilai batas waktu:

root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:5"
root@debian:~# nmcli con mod bond0 +ipv4.dns-options timeout:3
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:3"

Ini berarti nilai diabaikan untuk dihapus dan bahkan tidak diperlukan. Untuk menghapus batas waktu:

nmcli con mod bond0 -ipv4.dns-options timeout

Ini akan bekerja dengan nilai batas waktu juga tetapi nilai itu akan diabaikan , jadi menghapus timeout:5juga akan menghapus nilai batas waktu lainnya.

NB: Sambil melihat ke dalam ini saya menemukan bug terkait yang diperbaiki di network-manager v1.14.6 , v1.15.2-dev dan v1.16 . Jika Anda mengalami masalah, periksa versi manajer jaringan Anda terlebih dahulu.

Thomas Guyot-Sionnest
sumber
1
Saat menambahkan jawaban baru ke jawaban yang diterima lama, sebaiknya perhatikan berapa lama pertanyaan dan jawaban itu. Apa yang dianggap sebagai warisan sekarang belum tentu 4+ tahun yang lalu ketika pertanyaan diajukan. Daripada menandai sebagai warisan, jika Anda mencatat ketika default berubah (apa versi CentOS - 8 mungkin?) Dan kemudian menambahkan informasi Anda, itu akan menjadi jawaban yang jauh lebih bermanfaat. Atau, tanyakan kembali dan jawab versi Anda sendiri (untuk versi CentOS yang lebih baru atau ketika menggunakan Network Manager misalnya) dan tautkan kembali ke versi yang lebih lama ini untuk referensi.
Adam C
Cara lama mungkin masih valid ... NetworkManager sudah ada sejak lama namun Anda masih dapat mengonfigurasi cara lama di Debian dan CentOS.
Thomas Guyot-Sionnest
0

Jika Anda perlu melakukan ini dengan file datar daripada nmcliperintah (seperti dengan alat manajemen konfigurasi) Red Hat memberikan solusi lain.

Buat skrip /etc/NetworkManager/dispatcher.d/15-resolv, yang menyalin kebiasaan /etc/resolv.confke tempatnya.

#!/bin/bash
#
# Description : script to override default resolv.conf file
# with customized file.
cp -f /etc/resolv.conf.custom /etc/resolv.conf

Setelah memulai ulang NetworkManager, skrip ini akan dieksekusi, mengganti file dengan Anda sendiri.

https://access.redhat.com/solutions/61921

Aaron Copley
sumber
0

Anda bisa memberi tahu NetworkManager untuk tidak mengelola /etc/resolv.conffile secara bersamaan.

  1. Buat /etc/NetworkManager/conf.d/90-dns-none.conffile dengan konten berikut:

    [main]
    dns=none
    
  2. Muat ulang layanan NetworkManager:

    systemctl reload NetworkManager
    

Dokumentasi ini berasal dari solusi kedua yang melibatkan penggantian /etc/resolv.confdengan symlink ke file Anda.

Bacakan ini: 22. Mengkonfigurasi file /etc/resolv.conf secara manual

Aaron Copley
sumber
-1

tambahkan saja

resolv_conf_options=rotate\ timeout:1\ retries:1

di Anda resolvconf.conf

Evgeny F
sumber
Anda yakin itu opsi di CentOS (punya tautan ke dokumen / sesuatu untuk ditampilkan)? Saya melihatnya sebagai opsi FreeBSD dan Ubuntu tetapi tidak menemukannya di CentOS
Adam C
Ini adalah bagian dari paket openresolv
Evgeny F
1
yang tampaknya bukan paket standar, jadi bukan benar-benar pilihan untuk CentOS, terutama di lingkungan yang terkendali, bukan pilihan yang buruk di tempat lain
Adam C
-3

Saya menghadapi masalah yang sama terakhir kali dengan VPS linux baru saya. Bagaimana saya menyelesaikannya adalah dengan menggunakan perintah chattr + i untuk membuat file tidak berubah. Cukup buka folder / etc dan jalankan ini setelah Anda membuat perubahan yang diperlukan pada file resolv.conf:

chattr + i resolv.conf

Jika Anda ingin mengembalikan pengaturan, lakukan ini:

chattr -i resolv.conf

Panduan lengkap untuk referensi Anda: http://boxtutor.com/fix-etcresolv-conf-is-not-saving-after-server-reboot/

Chuichi
sumber
Itu akan menjadi masalah potensial di sini karena kemudian tidak akan dapat mengambil perubahan ke server nama dari DHCP - itu tidak akan sering berubah tetapi saya masih ingin itu berfungsi
Adam C