Saya sering terhubung ke beberapa jaringan secara bersamaan. Masing-masing jaringan ini menyediakan konfigurasi server nama melalui dhcp. Mis. Jaringan 1: (eth0):
domain company1.corp #
nameserver 192.168.0.253
nameserver 192.168.0.254
Jaringan 2 (tun0):
domain company2.corp #
nameserver 10.102.204.51
nameserver 10.102.208.51
# Nama berubah
Ketika terhubung ke kedua jaringan secara bersamaan:
# resolv.conf from NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Menyelesaikan service.company2.corp tidak berfungsi karena server nama depan hanya tahu tentang nama company1.corp.
Karena terinspirasi oleh artikel ini , saya telah menyiapkan openresolv (implementasi resolvconf) yang mengonfigurasi layanan dnsmasq lokal di install linux Arch saya.
Jika saya mengkonfigurasi nameserver secara manual menggunakan resolvconf:
# resolvconf -d NetworkManager
# echo "domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
" | resolvconf -a eth0
# echo "domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
" | resolvconf -a tun0
Kemudian saya dapat menyelesaikan nama dari company1.corp dan company2.corp (server dnsmasq lokal menangani ini.)
Perhatikan bahwa setelah konfigurasi manual, resolveconf -l menunjukkan 2 konfigurasi secara terpisah:
~ # resolvconf -l
# resolv.conf from tun0
domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
# resolv.conf from eth0
domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
Namun, ketika membiarkan manajer jaringan melakukan konfigurasi, 2 konfigurasi tidak terpisah, sebagaimana jika manajer jaringan menulis ke /etc/resolve.conf
~ # resolvconf -l
# resolv.conf from NetworkManager
# Generated by NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Pertanyaan saya adalah bagaimana saya bisa mendapatkan manajer jaringan untuk memanggil resolveconf dengan benar sehingga server nama untuk setiap antarmuka terdaftar secara terpisah. (Sayangnya googling untuk ini tidak berguna karena google berpikir bahwa "resolveconf" == "resol.conf")
sumber
"resolvconf"
dengan kutipan. Selalu beri tanda kutip di sekitar nama yang tepat di Google.Jawaban:
NetworkManager memiliki fungsionalitas untuk mengelola server dnsmasq lokal bawaan. Tidak perlu menggunakan resolvconf / openresolv untuk melakukan ini.
Untuk mengaktifkan ini:
dns=dnsmasq
ke/etc/NetworkManager/NetworkManager.conf
.Setelah Anda melakukan ini, Anda akan melihat bahwa NetworkManager telah memulai proses dnsmasq:
/etc/resolve.conf
harus menunjuk ke instance dnsmasq lokal:dan kita dapat melihat server apa yang digunakan dnsmasq:
sumber
ubound
sehingga DNSSEC juga berfungsi, lihat fedoraproject.org/wiki/Networking/NameResolution/DNSSECSepertinya NetworkManager hanya menimpa
/etc/resolv.conf
dan tidak menggunakan openresolv. Menurut FS # 24635 , NetworkManager memang memiliki dukungan untuk openreslov, tetapi awalnya tidak diaktifkan di build. Versi Arch Linux apa yang Anda jalankan dan apa versi paket manajer jaringan?sumber
Lakukan seperti yang dijawab Gary van der Merwe, tetapi lakukan
/etc/NetworkManager/NetworkManager.conf
Saya harus menambahkan
ke file. Tidak hanya
dns=dnsmasq
Ini karena semua pengaturan dalam file itu harus di bawah bagian, dan distro saya, manjaro (archlinux), versi paket NetworkManager tidak mengisi file konfigurasi. (Saya berasumsi bahwa distro Gary melakukannya karena garis yang disarankannya bekerja untuknya yang lain)
Catatan lain, konfigurasi dnsmasq apa pun harus masuk dalam file config dalam hal ini
/etc/NetworkManager/dnsmasq.d/
direktori. Mungkin direktori berbeda di mesin Anda. Saya belajar direktori yang digunakan dengan melihat baris yang digunakan NetworkManager untuk memulai daemon dnsmasq. Anda dapat melihat baris ini dengan menjalankan
ps aux|grep dnsmasq
. Anda harus menunggu untuk menjalankan ini sampai setelah memodifikasi konfigurasi NetworkManager dan memulai kembali layanannya.sumber