OpenVPN, resolvconf, dan resolusi domain DNS

8

Sementara di site1, saya harus terhubung ke site2 melalui OpenVPN. Setelah terhubung, OpenVPN site2 mendorong server nama DNS dan opsi pencarian domain. Ini menyebabkan semua resolusi nama untuk site1 gagal.

Contoh:

  1. Terhubung secara fisik di site1, DHCP mendorong opsi DNS dan resolvconf mengelola mereka.
    /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 172.16.1.101
    nameserver 172.16.1.102
    search site1.internal.domain
    
  2. Buka terowongan OpenVPN ke site2, OpenVPN mendorong DNS dhcp-option dan DOMAIN untuk site2 dan /etc/openvpn/update-resolv-confmendorongnya ke resolvconf.
    /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 192.168.1.5
    nameserver 172.16.1.101
    nameserver 172.16.1.102
    search site2.internal.domain site1.internal.domain
    
  3. Resolusi DNS berfungsi untuk server.site2.internal.domain tetapi gagal untuk server.site1.internal.domain

Apakah ada cara agar setiap permintaan DNS yang gagal ke site21 harus masuk ke server DNS site1? Atau konfigurasikan resolvconf yang hanya kueri untuk site2.internal.domain yang harus dilewatkan ke server nama2 situs?

Saya menggunakan mesin Ubuntu 14.04 di site1, dan server OpenVPN di site2 adalah kotak 2.2 pfSense. Saya mengelola kedua situs sehingga membuat perubahan di kedua sisi tidak menjadi masalah. Kedua domain tersebut adalah non-publik dan penggunaan internal saja.

Tim Jones
sumber
Saya harus menambahkan bahwa meskipun laptop Ubuntu 14.04, saya tidak menggunakan NetworkManager.
Tim Jones
1
Saya tertarik untuk melihat apakah ada cara yang fleksibel untuk mengarahkan pertanyaan DNS ke server yang berbeda, misalnya dengan memeriksa FQDN .. :)
nass

Jawaban:

1

Anda dapat mengatur server caching lokal yang akan mengawasi Anda /etc/resolv.conf, karena diubah oleh resolvconfskrip, dan coba dapatkan jawabannya dari semua server nama yang terdaftar di sana.

Pada banyak sistem, cukup menginstal paket dnsmasq , di samping resolvconf.

Defaultnya harus "hanya berfungsi" asalkan no-resolvdan no-pollarahan tidak ada /etc/dnsmasq.confdan loantarmuka berada di atas /etc/resolvconf/interface-order. Jika server nama upstream mengembalikan beberapa IP sembarang untuk alamat yang tidak dapat diselesaikan, strict-orderdi dnsmasq.conf dapat membantu. Anda /etc/resolv.confseharusnya hanya menunjukkan nameserver 127.0.0.1.

Jika Anda lebih suka pengaturan tetap atau terhubung ke beberapa jaringan yang tidak terkait dan ingin menghindari bocornya nama jaringan pribadi Anda juga semua server nama, Anda harus mengonfigurasi dnsmasq ke permintaan server tertentu berdasarkan domain:

# /etc/dnsmasq.conf

# site1 servers
nameserver=/site1.internal.domain/172.16.1.101
nameserver=/site1.internal.domain/172.16.1.102

# site2 servers
nameserver=/site2.internal.domain/192.168.1.5

# default OpenNIC (optional, unless 'no-resolv' is set). 
server=51.15.98.97
server=172.104.136.243

Untuk info lebih lanjut tentang opsi dnsmasq lihat di sini: http://oss.segetech.com/intra/srv/dnsmasq.conf

koniu
sumber
0

resolv.conf daftarkan semua server DNS yang tersedia. Selama yang pertama dalam daftar sudah berjalan dan berjalan, semua pertanyaan akan dikirim ke sana. Tidak ada yang lain kecuali yang pertama turun. Jadi, jika server DNS pertama dalam daftar sudah habis dan tahu jawabannya, dia menjawab "Aku tahu itu!", Kalau tidak dia akan berkata "Aku takut aku tidak tahu ...". Dan itu saja. Anda harus membuat 192.168.1.5 (server DNS situs2) mengetahui semua entri situs1, dan sebaliknya tentu saja. Salam pembuka

pengguna4089
sumber
0

Saya belum mencoba ini di Ubuntu, tetapi saya bisa mendapatkan setup yang serupa bekerja di Arch Linux menggunakan openresolv dan dnsmasq.

Semua perubahan akan dilakukan pada mesin klien VPN. Server VPN seharusnya tidak memerlukan perubahan apa pun karena sudah termasuk server nama DNS dan opsi pencarian domain.

  1. Saat terhubung ke VPN, gunakan resolvconf -luntuk melihat semua file resolv.conf. Cari tahu nama resolvconf dari antarmuka VPN Anda (mis. X di "resolv.conf from X"). Dalam kasus saya, itu tun0, yang akan saya gunakan dalam konfigurasi yang tersisa.
  2. Instal dnsmasq
  3. Edit /etc/resolvconf.confuntuk menambahkan opsi ini:

    private_interfaces=tun0
    name_servers="::1 127.0.0.1"
    dnsmasq_conf=/etc/dnsmasq-conf.conf
    dnsmasq_resolv=/etc/dnsmasq-resolv.conf
    
  4. Edit /etc/dnsmasq.confuntuk menambahkan opsi ini:

    conf-file=/etc/dnsmasq-conf.conf
    resolv-file=/etc/dnsmasq-resolv.conf
    
  5. Jalankan resolvconf -uuntuk menghasilkan file konfigurasi dnsmasq.

  6. Mulai dnsmasqlayanan dan konfigurasikan untuk memulai saat boot. Di Arch, ini dilakukan dengan menjalankan:

    systemctl start dnsmasq.service
    systemctl enable dnsmasq.service
    

The name_serverspilihan memberitahu resolvconf ke daftar hanya mereka nameserver di /etc/resolv.conf(yakni menunjuk pada contoh dnsmasq lokal Anda). The dnsmasq_pilihan memberitahu resolvconf untuk menulis nameserver yang akan pergi ke /etc/resolv.conffile dnsmasq konfigurasi sebagai gantinya.

The private_interfacepilihan menceritakan resolvconf bahwa nameserver yang disediakan oleh antarmuka yang (Anda VPN) harus digunakan hanya ketika menyelesaikan nama host yang berada di salah satu domain yang ditentukan pada searchbaris. Ini akan menghasilkan konfigurasi dnsmasq yang sesuai untuk mewujudkannya.

Dengan konfigurasi ini, permintaan untuk host di bawah site2.internal.domain harus menuju ke 192.168.1.5, dan semua permintaan lainnya harus ke 172.16.1.101 atau 172.16.1.102.

Jika sistem Anda tidak menggunakan IPv6, hapus :: 1 dari name_serversopsi.

cjm
sumber