Jaringan hanya menggunakan satu DNS saat terhubung ke VPN

9

Perusahaan saya memiliki VPN yang harus saya hubungkan. Di OSX, saya melakukan ini dengan menggunakan openvpnkonfigurasi berikut:

client
dev tun
proto udp
remote <GATEWAY_ADDRESS> <PORT>
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /Users/Tommy/.openvpn/dev/ca-dev.crt
cert /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.crt
key /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.key
ns-cert-type server
tls-auth /Users/Tommy/.openvpn/dev/ta-dev.key 1
cipher BF-CBC
comp-lzo
verb 3
auth-nocache
;daemon
;writepid openvpn.pid

Di Ubuntu, saya telah menginstal network-manager-openvpndan menambahkan koneksi VPN baru (mencoba mengimpor file konfigurasi yang menyebabkan crash) dengan opsi konfigurasi yang sama yang ditetapkan: Screenshot dari pengaturan saya

Setelah saya terhubung ke VPN, saya tidak bisa menyelesaikan domain apa pun.

Jika saya mengedit /etc/NetworkManager/NetworkManager.conf, mengomentari baris dns=dnsmasqdan memulai ulang network-manager, saya dapat menyelesaikan domain internal dari perusahaan saya, tetapi domain lain seperti google.com tidak akan menyelesaikan sama sekali. Saya telah memastikan untuk mengatur "Metode" saya ke "Hanya alamat otomatis (VPN)" di tab IPv4 dan IPv6 dari manajer jaringan untuk koneksi VPN saya, tetapi sepertinya tidak ada bedanya.

Saya juga telah mencoba mengaktifkan kembali dnsmasqdan memodifikasi /etc/resolvconf/resolv.conf.d/base untuk memuat nameserver 127.0.1.1, lalu berjalan sudo resolveconf -u, tetapi kemudian tidak ada domain yang akan menyelesaikan lagi.

Yang saya inginkan adalah dapat terhubung ke VPN saya sehingga domain yang didorong oleh server DNS perusahaan saya diselesaikan dengan cara itu, dan semua domain lainnya diselesaikan secara normal.

EDIT: Ternyata dnsmasq sebenarnya tidak diinstal, yang saya pikir akan secara default. Namun demikian, jika saya menginstalnya, mengaktifkannya kembali /etc/NetworkManager/NetworkManager.conf, menambahkan alamat server nama lokal di /etc/resolvconf/resolv.conf.d/base, restart semua layanan dan terhubung ke VPN, saya dapat menyelesaikan domain dari DNS perusahaan, tetapi saya tidak dapat menyelesaikan domain lain. Jadi pada dasarnya situasi yang sama seperti ketika saya menonaktifkan dnsmasq sepenuhnya.

EDIT: Isi dari /etc/dnsmasq.conf: http://paste.ubuntu.com/7297231/

Tommy Brunn
sumber
Bisakah Anda menunjukkan kepada kami pengaturan dnsmasq Anda? Dnsmasq biasanya mendapatkan server DNS hulu dari /etc/resolv.conf, jadi jika Anda belum berubah, Anda mungkin hanya menarik DNS melalui VPN.
jkt123
Tentu. Saya menambahkan tautan ke/etc/dnsmasq.conf
Tommy Brunn

Jawaban:

4

Dari konfigurasi Anda, instalasi dnsmasq Anda mendapatkan daftar server DNS untuk digunakan /etc/resolv.conf. Secara default, dnsmasq mencoba menggunakan server DNS yang aktif, tetapi hanya akan mengirim permintaan yang diberikan ke satu server DNS. Ini dapat menyebabkan masalah jika Anda memiliki beberapa server DNS yang dapat / hanya akan melayani permintaan tertentu.

Saya yakin Anda dapat mengatasi masalah ini dengan memastikan Anda memiliki server DNS di LAN Anda (yang Anda gunakan saat Anda tidak terhubung ke VPN) yang diatur /etc/resolv.conf, serta server DNS di jaringan perusahaan yang ingin Anda gunakan melalui VPN.

Kemudian, Anda perlu mengedit /etc/default/dnsmasqdan menambahkan atau mengedit DNSMASQ_OPTS=baris untuk disertakan --all-servers.

Jika Anda masih tidak bisa mendapatkan permintaan DNS dengan pengaturan ini, salin file resolv.conf yang Anda buat selama langkah-langkah di atas ke lokasi lain, seperti ~/resolv.conf, mengatur /etc/resolv.confdengan nameserver 127.0.0.1dan mengatur opsi berikut di /etc/dnsmasq.conf:

resolv-file=/home/your_username/resolv.conf

Itu harus mengkonfigurasi sistem Anda untuk meminta instalasi dnsmasq Anda untuk DNS, dan pada gilirannya akan menggunakan server DNS lokal Anda dan server DNS VPN untuk setiap permintaan.

Sunting : Anda dapat menemukan server DNS yang saat ini Anda gunakan untuk koneksi tertentu menggunakan nmclialat ini. Untuk menemukan server DNS yang digunakan oleh koneksi nirkabel saya, saya menggunakan sintaks berikut:

nmcli dev list iface wlan0 | grep IP4.DNS

Jika Anda menjalankan perintah ini saat Anda tidak terhubung ke VPN Anda, dan kemudian lagi ketika Anda terhubung dan dapat menyelesaikan alamat perusahaan Anda, Anda harus mematikan daftar server DNS dan VPN. Saya harap ini membantu.

Sunting 2 : Melihat tabel perutean Anda, tampaknya administrator VPN Anda telah mengatur Anda untuk merutekan semua lalu lintas Anda melalui VPN saat Anda terhubung (gateway default Anda berubah ke alamat VPN). Karena kedua server DNS Anda adalah alamat publik, dan tidak satu pun memiliki rute khusus yang diatur saat Anda menggunakan VPN, Anda mencoba melakukan pencarian DNS normal melalui VPN dan itulah yang gagal.

Anda mungkin memiliki beberapa cara untuk membuat ini berfungsi, tergantung pada pengaturan VPN Anda:

  • Jika VPN akan memungkinkan Anda untuk mengakses internet melalui jaringan perusahaan, tetapi tidak melakukan permintaan DNS ke server di internet, tambahkan rute ke server DNS Anda seperti:: sudo route add -host 83.255.245.11 gw 192.168.0.1, dan sudo route add -host 193.150.193.150 gw 192.168.0.1setelah terhubung ke VPN.

  • Jika VPN tidak akan memungkinkan Anda untuk mengakses internet melalui jaringan perusahaan, Anda harus mengubah pengaturan gateway default di komputer Anda ke titik 192.168.0.1 setelah Anda terhubung ke VPN. Dalam hal ini, Anda ingin mengatur gateway default seperti biasa dan kemudian menambahkan rute jaringan untuk mengakses peralatan khusus VPN.

Anda mungkin perlu mengurangi tabel perutean Anda dalam case terhubung-ke-the-VPN yang ditunjukkan dalam pastebin kedua Anda sebagai berikut:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.100.0.0      10.100.0.105    255.255.255.0   UGH   0      0        0 tun0
10.100.0.105    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Kemudian, tambahkan rute yang Anda butuhkan untuk mengakses peralatan perusahaan. Dalam tabel routing yang ditunjukkan di atas saya mengasumsikan jaringan / 24 pada VPN, yang mungkin salah. Anda harus mengatur topeng dengan tepat.

jkt123
sumber
Bagaimana saya mencari tahu alamat ke server DNS lokal saya dan yang ada di jaringan perusahaan?
Tommy Brunn
Saya telah mengedit jawaban saya untuk memberikan informasi ini.
jkt123
Menurut nmcli, saya mendapatkan server-DNS yang sama persis ketika saya terhubung ke VPN seperti ketika saya tidak, meskipun saya jelas tidak seharusnya, karena saya dapat menyelesaikan domain internal pada jaringan perusahaan ketika saya saya terhubung.
Tommy Brunn
Ketika Anda berlari nmclitanpa koneksi VPN, apakah Anda dapat menyelesaikan DNS dengan benar? Jika tidak, Anda harus memutuskan koneksi dari VPN, pastikan DNS Anda berfungsi dengan benar, dan kemudian jalankan nmcli.
jkt123
Ya, saya bisa menyelesaikan DNS secara normal ketika terputus dari VPN. Contoh keluaran: paste.ubuntu.com/7345250
Tommy Brunn
0

Ada beberapa celah yang tidak dapat saya isi untuk Anda terkait dengan cara mendapatkan NetworkManager untuk mengoordinasikan hal-hal untuk Anda. Saya akan mencoba mengklarifikasi bagaimana hal-hal yang dikoordinasikan perlu bekerja. Bukan jawaban yang sempurna, tapi semoga bermanfaat. Sebenarnya, mengingat ini adalah pertanyaan lama, ini benar-benar untuk anak cucu.

Anda mungkin tidak ingin menggunakan VPN perusahaan, kecuali untuk koneksi ke jaringan perusahaan. Karena itu, akan lebih baik jika pengaturan VPN Anda hanya merutekan Network Ranges yang sesuai ke VPN, dan mempertahankan rute default yang menunjuk ke router lokal Anda, seperti sebelumnya. Akan lebih baik jika perusahaan mengatur VPN mereka untuk hanya merutekan lalu lintas atau jaringan mereka, tetapi sayangnya itu tampaknya jarang terjadi. Untungnya Anda dapat mengkonfigurasi rute di pengaturan lokal Anda.

Itu masih memberi Anda masalah DNS potensial. Komentar jtk123 tentang apa yang dilakukan dnsmasq dengan DNS tidak spesifik dnsmasq - itulah cara DNS bekerja. Jika klien DNS, atau resolver perantara mendapat respons bahwa entri DNS tidak ada, maka bukan perilaku normal untuk kembali bertanya ke server DNS lain. Itu berarti Anda memerlukan resolver dns yang akan menjawab seperti yang Anda inginkan, apakah permintaan itu terkait dengan jaringan perusahaan atau tidak.

Mungkin jaringan perusahaan Anda menjawab pertanyaan DNS yang berkaitan dengan internet yang lebih luas, dalam hal ini Anda hanya menggunakannya, dan itu mungkin OK. Jika tidak, Anda memerlukan server DNS lokal yang meneruskan permintaan untuk domain yang terkait dengan perusahaan ke server DNS mereka, dan meneruskan permintaan lain di tempat lain yang sesuai.

dnsmasq dapat diberitahu untuk meneruskan permintaan untuk domain tertentu ke server DNS hulu tertentu. mis. lihat opsi --server seperti diuraikan dalam halaman manual dnsmasq.conf. Saya tidak jelas bagaimana cara mendapatkan networkmanager untuk bermain bagus dengan itu (yang saat ini saya cari tahu).

mc0e
sumber