Ubuntu 18.04 tidak ada resolusi DNS saat terhubung ke openvpn

40

Ketika saya terhubung ke jaringan VPN melalui Gnome Network-manager, saya kehilangan resolusi DNS dan dalam praktiknya, saya tidak dapat mengakses sumber daya di dalam jaringan VPN atau di luar.

Ketika saya menggunakan Ubuntu 16.04 dan saya menggunakan VPN, file " /etc/resolv.conf/" akan berisi server DNS dari jaringan (VPN) yang saya sambungkan. Sekarang selalu berisi entri berikut:

nameserver 127.0.0.53
search myprovider.com

Dari apa yang saya mengerti 127.0.0.53adalah alamat dari rintisan DNS yang digunakan oleh system-resolved.

Saya menduga bahwa ini adalah bug karena VPN berfungsi dengan baik Ubuntu 16.04. Apakah ada cara saya dapat mengatur server DNS jaringan saya ketika saya menggunakan layanan VPN?

Memperbarui:

Saya mencoba menghubungkan ke jaringan OpenVPN dengan file konfigurasi yang dilampirkan di akhir posting, tetapi saya mendapatkan kesalahan berikut:

 Authenticate/Decrypt packet error: cipher final failed

Saya telah memverifikasi bahwa server menggunakan kompresi lzo dan saya telah mengaktifkannya juga. Koneksi tetap aktif tetapi saya tidak dapat menavigasi ke halaman mana pun di dalam atau di luar VPN.

Dalam file konfigurasi yang tercantum di bawah ini, saya telah memasukkan solusi yang diposting di balasan

 client
 dev tun
 proto udp
 remote openvpn.bibsys.no 1194
 remote my-server-2 1194
 resolv-retry infinite
 nobind
 user myuser
 group myuser
 persist-key
 persist-tun
 ca ca-cert.pem
 cert openvpn.crt
 key openvpn.key
 cipher AES-256-CBC
 comp-lzo yes
 script-security 2
 up /etc/openvpn/scripts/update-systemd-resolved
 down /etc/openvpn/scripts/update-systemd-resolved
 down-pre
orestis
sumber
1
Ketika men-debug masalah yang mirip dengan ini yang tidak dapat dipecahkan persis sama, saya menggunakan resolvectl statusdan resolvectl helpmencari solusi spesifik saya.
notbad.jpeg

Jawaban:

27

Saya menemukan solusi di posting blog ini . Walaupun ada dua solusi yang disebutkan, saya lebih suka menggunakan yang kedua karena itu berarti DNS saya diatur oleh server OpenVPN (solusi pertama berarti saya menggunakan server DNS yang sama apakah saya terhubung ke server OpenVPN atau tidak).

Pendeknya:

  • sudo mkdir -p /etc/openvpn/scripts
  • sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
  • sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved

Kemudian edit file klien OpenVPN Anda (mis. Client.ovpn) dengan mengubah skrip naik / turun menjadi:

script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved

(Saya telah berkomentar keluar pengaturan asli atas / bawah).

Andy Turfer
sumber
Jika seseorang menggunakan utilitas gnome openvpn di mana file config.ovpn harus disimpan?
orestis
1
config.ovpntidak "ditemukan" - ini adalah file konfigurasi klien yang digunakan untuk menghubungkan. Anda bisa membuatnya, atau dikeluarkan untuk Anda oleh penyedia OpenVPN Anda (dan itu mungkin tidak dipanggil config.ovpn- bisa disebut apa saja, misalnya client.ovpn).
Andy Turfer
Ini bekerja dengan sempurna.
Ahsanul Haque
2
Saya mendapatkanWARNING: Failed running command (--up/--down): external program fork failed
bodoh
Sayangnya ini tidak bekerja untuk vpn yang menggunakan tcp, situs di luar vpn tidak terselesaikan, maka saya mulai menggunakan client.pritunl.com/#install ditemukan berguna
Saisurya Kattamuri
49

Masalah

File /etc/resolv.conftidak diperbarui oleh /etc/openvpn/update-resolv-confskrip karena resolvconftidak diinstal secara default di ubuntu 18.04.

Bahkan, salah satu baris pertama dari skrip itu memeriksa /sbin/resolvconfeksekusi:

[ -x /sbin/resolvconf ] || exit 0

Menginstal resolvconf via apt-getbukanlah solusi karena /etc/openvpn/update-resolv-confskrip memperbarui /etc/resolv.conffile dengan entri DNS yang didorong tetapi perangkat tun tampaknya mengabaikannya.

Larutan

  1. Ubuntu 18.04 menggunakan systemd-resolved, jadi yang harus Anda lakukan adalah menginstal skrip pembantu openvpn systemd-resolvedvia

    sudo apt install openvpn-systemd-resolved
    

    atau dengan instruksi GitHub ini

  2. Perbarui config.ovpnfile Anda dengan menambahkan baris ini:

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

    Itu bukannya menambah naik turun /etc/openvpn/update-resolv-confke conf.

  3. Untuk mencegah Kebocoran DNS, Anda harus menambahkan baris ini ke akhir config.ovpnfile (sesuai dengan komentar masalah systemd ini ):

    dhcp-option DOMAIN-ROUTE .
    
Qlimax
sumber
1
Terima kasih banyak, bekerja untuk saya di Ubuntu 18.04. Dan saya ingin menentukan, parameter script-security 2itu masih diperlukan sebelum garis naik / turun, jika tidak, program akan jatuh karena kesalahan (OpenVPN 2.4.4)
lucidyan
Senang membantu :) Mengubah kalimat terakhir dalam jawaban, dengan dalam kasus saya script-security 2 tidak perlu. Itu mungkin karena saya menjalankan klien openvpn sebagai root (dengan sudo)
Qlimax
1
@Qlimax Tahukah Anda bagaimana kami mengimpor pengaturan ini ke klien gnome openvpn?
orestis
2
@forestis Anda harus menginstal paket ini sudo apt-get install network-manager-openvpn-gnome Maka Anda harus dapat mengimpor file konfigurasi .ovpn ke manajer jaringan gnome. askubuntu.com/questions/187511/... UI telah berubah dari waktu ke waktu, Anda seharusnya dapat menemukannya di pengaturan-> jaringan-> vpn
Qlimax
1
Terkejut ini bekerja untuk banyak dari Anda: Saya punya ovpn.config, ya, tetapi NetworkManager tampaknya tidak menggunakannya. Apakah Anda mengedit file dan mengimpornya kembali, khususnya untuk mengganti skrip naik / turun. Karena saya melihat biner buram ini / usr / lib / NetworkManager / nm-openvpn-service-openvpn-helper digunakan yang saya tidak dapat menemukan dokumentasi. Jika impor ulang ovpn.config diperlukan, harap ubah jawabannya.
Harald
5

Sebenarnya, ada solusi yang jauh lebih mudah untuk masalah ini. Masalahnya adalah dengan lalu lintas DNS dan bagaimana Ubuntu 18 mengelola itu. Secara default IP forwarding dinonaktifkan yang merupakan kebutuhan OpenVPN untuk menyediakan jaringan yang tepat. Yang harus Anda lakukan adalah menjalankan perintah berikut:

sudo nano /etc/sysctl.conf

Setelah file ini dibuka, cari baris yang berisi net.ipv4.ip_forward. Jika baris ini dikomentari, hapus tanda # di bagian depan baris (jika tidak dikomentari maka Anda memiliki masalah lain). Simpan file dan mulai kembali contoh server OpenVPN Anda.

Perbaikan ini tidak memerlukan modifikasi apa pun pada klien atau kode OpenVPN setelah peningkatan ke Ubuntu 18. Diuji dan dikonfirmasi berfungsi.

Namun, ini jelas mengharuskan Anda dapat mengelola server. Dan sayangnya, bug itu ada untuk banyak orang yang baru saja terhubung dengan 18,04 ke server OpenVPN yang dikelola oleh orang lain ...

Maks
sumber
tidak bekerja untuk saya. bagaimana Anda menentukan bahwa inilah masalahnya, dalam kasus Anda?
hwjp
PERINGATAN: Anda tidak perlu mengaktifkan ip_forward pada klien openvpn , TIDAK PERNAH! itu adalah risiko keamanan. Di server openvpn , Anda mungkin memerlukannya, tergantung pada konfigurasi yang digunakan dan inilah mengapa komentar ini muncul.
higuita
Ini untuk saya. Masalah aneh. Terima kasih.
Kevin C
2

Diuji pada Ubuntu 18.04 pada 13 Sep 2018

Ada perintah lain yang berguna untuk mengatur apa yang Anda butuhkan melalui baris perintah. Tetapi dalam kasus saya Anda dapat mengontrol koneksi VPN Anda baik dengan baris perintah dan GUI.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- diperlukan secara default, tetapi tidak mempengaruhi apa pun

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default seharusnya tidak menggunakan remote gateway sebagai rute default

Dan sentuhan terakhir yang jauh lebih menarik:

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

Setelah itu Anda dapat mengontrol vpn dengan GUI atau menggunakan perintah berikut:

sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com

vskubriev
sumber
0

Saya juga terpengaruh. Dalam kasus saya, saya menggunakan OpenVPN dengan server nama internal (yang ada di dalam VPN). Itu bekerja sampai Ubuntu 17.10 (dengan "hosts: files dns" di /etc/nsswitch.conf).

/etc/resolv.conf telah diperbarui dengan benar oleh skrip openvpn (melalui panggilan ke / etc / openvpn / update-resolv-conf di file konfigurasi klien openvpn).

Namun, resolusi nama untuk host di dalam VPN tidak berfungsi lagi (atau setidaknya secara sporadis ... Saya kira cache DNS lokal memilih nama, tetapi setelah waktu yang agak lama).

Apa yang tampaknya membantu, atau bahkan menyelesaikan masalah (meskipun itu terlalu dini untuk dikatakan) adalah menginstal paket di bawah ini:

sudo untuk menginstal openvpn-systemd-diselesaikan

Dalam beberapa hari, saya akan memiliki lebih banyak pengalaman apakah ini memperbaiki masalah saya atau tidak.

Jika Anda terkena dampak juga, silakan coba ini dan kirim komentar!

Tepuk tangan,

Michael.

Michael Opdenacker
sumber
Akhirnya, sepertinya itu bukan solusi. Saya punya masalah lagi. Saya kira sesuatu yang lain membuatnya bekerja ...
Michael Opdenacker
1
Mungkin kemudian Anda menghapus jawaban Anda? Tampaknya keputusannya sudah ditemukan di bawah ini
lucidyan