Sambung ulang otomatis ke VPN saat terputus?

16

Saya pengguna Ubuntu GNOME dan saya bertanya-tanya apakah ada cara untuk dapat terhubung kembali secara otomatis ke VPN saat terputus . Saya menggunakan protokol OpenVPN .

Saya telah memeriksa Network Manager secara menyeluruh tetapi tidak dapat menemukan opsi seperti itu, hanya untuk terhubung ke VPN ketika terhubung ke WiFi tertentu.

Patrik
sumber

Jawaban:

20

Pada 18.10 (tidak dapat memeriksa dalam versi sebelumnya) Koneksi VPN di NetworkManager memiliki pengaturan vpn.persistentyang tidak hanya itu: menghubungkan kembali ke VPN pada kehilangan koneksi sampai Anda memutuskan koneksi secara manual. Ini diatur "no"secara default dan sayangnya tidak terpapar baik di Pengaturan Jaringan Gnome maupun di nm-connection-editor.

Tapi Anda bisa mengaturnya melalui CLI seperti ini:

nmcli connection modify <Your VPN connection name> vpn.persistent yes

Koneksi harus ada sebelum Anda melakukan itu, tentu saja

m0NKey bR4in
sumber
2
ini yang saya inginkan. Terima kasih satu juta
Wyatt8740
Karena pengaturan ini tersedia, mengapa pengaturan jaringan tidak menunjukkannya? Dan di mana / bagaimana Anda mengetahuinya? Tidak disebutkan tentang ini di developer.gnome.org/NetworkManager/stable/nmcli.html tetapi karena menjalankan perintah tampaknya berhasil, saya kira itu berhasil ...
Al F
@alf Saya rasa saya menemukan pengaturan ini hanya dengan mengetuk nmcli di terminal, tetapi juga didokumentasikan di developer.gnome.org/NetworkManager/stable/… dan di halaman manual pengaturan-nm
m0NKey bR4in
19

OpenVPN memiliki mekanisme bawaan untuk secara otomatis mendeteksi tautan mati dan menyambung kembali. Di Network Manager, buka "Edit Koneksi", pilih koneksi VPN Anda dan pilih "Edit". Di tab "VPN" klik "Lanjutan ..." dan pergi ke Tab "Umum". Di sana Anda memiliki dua opsi yang relevan:

"Tentukan interval ping" beri tahu OpenVPN seberapa sering untuk memeriksa apakah tautan itu masih hidup. "Tentukan keluar atau mulai ulang ping" memberi tahu Anda berapa lama untuk menunggu sampai melakukan tindakan dan tindakan mana yang harus diambil.

Contoh: Pengaturan saya adalah "30 / ping-restart / 300". Ini berarti OpenVPN memeriksa setiap 30 detik jika tautannya masih aktif. Jika tautan tidak aktif selama 300 detik, ia memulai ulang.

Dengan cara ini tidak perlu untuk skrip eksternal ...

OttoEisen
sumber
1
Ini harus menjadi jawaban yang diterima.
necbot
5
Setidaknya ini tidak berlaku untuk Ubuntu 18.04. Saya memiliki interval ping dan ping-restart tetapi itu akan menonaktifkan sendiri.
Nama Tampilan
@SargeBorsch: jawaban oleh m0NKey bR4in tampaknya berfungsi (pengaturan vpn.persistentke yes).
kontextify
1

Setelah sedikit menggali saya menemukan jawaban ini , mengujinya (di Ubuntu GNOME 15.04) dan sejauh ini tampaknya berfungsi.

Satu-satunya hal yang dapat saya tambahkan adalah bahwa begitu file skrip dibuat, tidak perlu disimpan ke folder / home Anda. Anda dapat menyimpannya di mana saja, membuatnya dapat dieksekusi dan menambahkannya ke daftar program startup.

Patrik
sumber
0

Setelah mengklaim itu adalah SMOP (Simple Matter of Programming), saya menulis skrip bash yang memonitor "Link Down", kemudian mengeksekusi skrip pengguna. Lebih sedikit penggunaan CPU, lebih responsif daripada while true....sleep 30metode ini. Lihat jawaban saya di sini . Ini tentang "memutar koneksi WiFi", tetapi mungkin akan bekerja untuk Anda juga

waltinator
sumber
0

skrip ini akan berfungsi pada 16.04 di mana nmcli con statustidak lagi berfungsi:

#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
    nmcli con up $CON
fi
George
sumber
Sedikit lebih pendek STATUS="$(nmcli con show -f name | grep purple)". Atau Anda cukup memeriksa apakah koneksi yang sebenarnya aktif dengan melakukannmcli con show --active id 'purple'
smac89
0

Saya pikir jawaban lengkap berdasarkan jawaban lain adalah sebagai berikut:

#!/bin/bash +x
  while [ "true" ]
   do
        CON="Your-VPN-Name"
        STATUS=`nmcli con show --active | grep $CON | cut -f1 -d " "`
        if [ -z "$STATUS" ]; then
                echo "Disconnected, trying to reconnect..."
                (sleep 1s && nmcli con up $CON)
        else
                echo "Already connected !"
        fi
        sleep 30
   done
ali mohebbi
sumber