Cara mengambil server nama baru secara otomatis pada koneksi VPN

11

Saya menjalankan ubuntu xenial 16.04

Kami menggunakan openvpn untuk terhubung ke cloud pribadi virtual. Cloud itu memiliki server DNS sendiri (seperti halnya rute lokal kami - rumah atau kantor).

Ketika saya terhubung ke VPN, semua IP di jaringan itu tersedia, tetapi saya tidak bisa menjangkau dengan nama host. Alasannya sederhana: file resolv.conf masih menunjukkan server nama kantor saya. Jika saya secara manual menimpa resolv.conf untuk memiliki server nama yang benar semuanya baik.

Jadi, bagaimana saya bisa mengatur ulang resolv.conf secara otomatis setelah tersambung ke VPN?

Bisakah saya terhubung ke acara sistem dan menjalankan skrip?

Christian Bongiorno
sumber
1
Biasanya ada opsi untuk memungkinkan VPN mendorong server DNS-nya sendiri. Klien mana yang Anda gunakan— tunnelblick?
Ryder
Saya menggunakan klien openvpn resmi. Di suatu tempat saya membaca bahwa proses VPN tidak dapat memperbarui DNS.
Christian Bongiorno
Sudahkah Anda mencoba --register-dnsopsi ini? Atau ada opsi sisi klien yang dapat Anda atur, sebagai opsi dhcp (sisi lain dari instruksi di sini openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
Ryder

Jawaban:

8

Paket OpenVPN memiliki skrip untuk ini pada /etc/openvpn/update-resolv-conf. Anda perlu mengkonfigurasinya dengan:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Ini akan mengambil alamat server DNS dari dhcp-option DNSopsi yang diteruskan oleh rekan / server OpenVPN dan mengonfigurasikannya resolvconf. Ini juga menangani dhcp-option DOMAIN.

Namun itu tidak sempurna, karena ini akan menambahkan server nama tersebut ke daftar server nama yang ada alih-alih menimpa daftar server nama. Jika Anda menggunakan openresolv, -xdapat digunakan untuk menimpa konfigurasi DNS alih-alih lebih dulu.


Jika Anda menggunakan systemd-resolved, Anda dapat menggunakan /etc/openvpn/update-systemd-resolvedyang kait ke systemd-revolvedbukannya resolvconf.

script-security 2 
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre

Di Debian, skrip ini ada di openvpn-systemd-resolved.

ysdx
sumber
2
di atas 2 baris ini, Anda juga perlu menambahkan script-security 2atau menjalankan openvpndengan--script-security 2
32r34wgf3e
0

Inilah solusi yang saya buat: Ada saklar yang memungkinkan Anda untuk menjalankan skrip saat terowongan menyala dan berjalan. Saya menggunakan switch untuk menimpa file resolv.conf dengan yang saya tahu benar. Benar-benar hack total, saya tahu.

sudo openvpn --up reset-dns.sh --client client.ovpn

skrip (reset-dns):

#!/bin/bash
cp ~/resolv.conf /etc/resolv.conf

Juga, bagi mereka yang mengatakan "OMG! Anda menjalankan terowongan itu sebagai root!" Itu tidak akan berjalan dengan cara lain; bahkan sebelum peretasan DNS saya.

Saya jelas terbuka untuk cara yang lebih baik. Pengelola jaringan untuk ubuntu tidak akan berfungsi. Saya telah memotong tiket ke ubuntu untuk ini berulang kali

Christian Bongiorno
sumber