Dalam kasus klien saya kira? Perangkat lunak apa yang Anda gunakan? OpenVPN, atau pembungkus (mis. NetworkManager)?
Lekensteyn
@Lekensteyn, pembungkus network-manger-openvpn.
Oxwivi
Jawaban:
62
network-manager-openvpntidak menyediakan fungsi seperti itu, Anda harus menggunakan openvpnsecara langsung.
Lewati --script-security 2 --up /path/to/your/scriptketika menghubungkan. Jika Anda menggunakan file konfigurasi yang terletak di /etc/openvpn/, tambahkan baris berikutnya ke file konfigurasi Anda:
script-security 2# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
--script-security level [metode]
Arahan ini menawarkan kontrol tingkat kebijakan atas penggunaan OpenVPN
program dan skrip eksternal. Nilai level yang lebih rendah lebih banyak
nilai restriktif dan lebih tinggi lebih permisif. Pengaturan untuk
tingkat:
0 - Benar-benar tidak ada panggilan program eksternal.
1 - (Default) Hanya panggil executable bawaan seperti ifconfig,
ip, rute, atau netsh.
2 - Mengizinkan pemanggilan executable bawaan dan yang ditentukan pengguna
skrip
3 - Mengizinkan kata sandi diteruskan ke skrip melalui lingkungan
variabel (berpotensi tidak aman).
--up cmd
Perintah Shell dijalankan setelah perangkat TUN / TAP yang berhasil dibuka (pra
--Pengubah UID pengguna). Script atas berguna untuk menentukan
perintah rute yang merutekan lalu lintas IP yang ditujukan untuk pribadi
subnet yang ada di ujung koneksi VPN ke
terowongan.
Perintah Eksekusi Skrip
--up Dieksekusi setelah ikatan TCP / UDP mengikat dan TUN / TAP terbuka.
--down Dieksekusi setelah TCP / UDP dan TUN / TAP ditutup.
Ada lebih banyak acara untuk eksekusi skrip, yang dapat ditemukan di halaman manual .
Buat /etc/openvpn/up.sh, dan berikan izin eksekusi (misalnya, 755 atau 700). Contoh konten untuk menambahkan alamat dan rute IPv6 (ditampilkan untuk tujuan pendidikan, jangan menyalinnya langsung):
#!/bin/sh# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Perhatikan bahwa upskrip ini dijalankan sebagai root. Jika Anda belum menentukan Userdan Groupmenetapkan, OpenVPN akan menjalankan skrip seperti downsebagai root juga.
Jika Anda tidak tahu bagaimana cara menggunakan openvpn secara langsung, tambahkan rincian konfigurasi Anda saat ini: Jenis koneksi (misalnya sertifikat X509), port Gateway, kompresi LZO, kekuatan TCP, penggunaan perangkat tap, cipher, HMAC, dan TLS. Sebutkan pengaturan IP Anda juga jika tidak otomatis. Untuk privasi Anda, tinggalkan alamat Anda yang sebenarnya.
Lekensteyn
Oke, saya memutuskan untuk menggunakan OpenVPN secara langsung (dan ya, saya punya file .conf), tetapi apakah itu akan secara otomatis menyambung kembali jika koneksi terputus? Dan bagaimana saya membuatnya terhubung secara otomatis setiap kali ada koneksi internet? Dan akhirnya, saya tidak mengerti di mana saya harus menambahkan baris yang Anda sebutkan dalam jawaban.
Oxwivi
Saya telah memperluas jawaban untuk digunakan openvpnsecara langsung. Ketika mengatur server, saya perhatikan bahwa OpenVPN akan mencoba untuk menyambung kembali ketika server turun. Tidak yakin apakah OpenVPN terus mencoba ketika antarmuka jaringan Anda turun.
Lekensteyn
Masalah saya bukan ketika antarmuka jaringan turun - ia mencoba menyambung kembali ketika koneksi internet terputus dan kembali. Saya hanya ingin terhubung ke VPN setiap kali saya mendapatkan koneksi internet.
Oxwivi
Oh, dan apakah skrip berlaku untuk semua koneksi VPN? Dan tolong beri tag @Oxwivi saat membalas, saya tidak akan diberi tahu sebaliknya.
Oxwivi
5
Untuk pertanyaan: "Bagaimana saya bisa mengaitkan skrip ke OpenVPN sehingga ia berjalan ketika VPN terhubung dengan sukses?" Saya ingin menunjukkan bahwa Lekensteyn memberikan jawaban yang sangat baik . Tetapi, pada saat jawabannya dikomposisikan, ia tidak memiliki sedikit kejelasan tentang bagaimana argumen baris perintah openvpn harus disediakan untuk memulai openvpn pada mesin ubuntu, terutama sehingga ia bekerja sama setelah reboot.
Argumen baris perintah Openvpn di Ubuntu:
Secara alami, seseorang dapat memulai openvpn dari baris perintah dengan opsi hukum apa pun yang tersedia. Tetapi, pada mesin Ubuntu, jika seseorang ingin memulai openvpn dengan argumen baris perintah yang sama setelah reboot, mereka harus mempertimbangkan untuk mengedit file /etc/default/openvpn. Periksa baris berikut:
# Optional arguments to openvpn's command line
OPTARGS=""
--script-tingkat keamanan
Arahan ini menawarkan kontrol tingkat kebijakan atas penggunaan eksternal OpenVPN
program dan skrip. Nilai level yang lebih rendah lebih membatasi, lebih tinggi
nilai lebih permisif. Pengaturan untuk level:
0 - Benar-benar tidak ada panggilan program eksternal.
1 - (Default) Hanya panggil executable bawaan seperti ifconfig, ip, route,
atau netsh.
2 - Mengizinkan pemanggilan executable bawaan dan skrip yang ditentukan pengguna.
3 - Mengizinkan kata sandi diteruskan ke skrip melalui variabel lingkungan
(berpotensi tidak aman).
Rilis OpenVPN sebelum v2.3 juga mendukung flag metode yang menunjukkan caranya
OpenVPN harus memanggil perintah dan skrip eksternal. Ini bisa berupa eksekusi
atau sistem. Pada OpenVPN v2.3, bendera ini tidak lagi diterima. Di sebagian besar * nix
lingkungan pendekatan execve () telah digunakan tanpa masalah.
Beberapa arahan seperti --up memungkinkan opsi untuk diteruskan ke skrip eksternal.
Dalam kasus ini pastikan nama skrip tidak mengandung spasi apa pun atau
parser konfigurasi akan tersedak karena tidak dapat menentukan di mana skrip
nama berakhir dan opsi skrip dimulai.
Digabung dengan bagian yang disingkat pada --up
--up cmd
Jalankan perintah cmd setelah perangkat TUN / TAP berhasil terbuka (perubahan pra-pengguna UID).
cmd terdiri dari path ke skrip (atau program yang dapat dieksekusi), secara opsional diikuti
dengan argumen. Jalur dan argumen dapat dikutip secara tunggal atau ganda dan / atau
melarikan diri menggunakan backslash, dan harus dipisahkan oleh satu ruang atau lebih.
Contoh:
Di komputer saya dengan server.conf openpvn, saya memiliki baris berikut di /etc/default/openvpnfile saya :
Secara kebetulan, nat.sh mengatur terjemahan alamat jaringan untuk merutekan lalu lintas jaringan pribadi dari klien openvpn ke internet publik; yang bagus untuk ketika seseorang tidak mempercayai jalur akses WIFI publik.
Selain memungkinkan untuk memulai kembali seperti yang diharapkan setelah reboot, kapan /etc/openvpn/[client or server].confdan /etc/default/openvpnfile dikonfigurasikan dengan benar, openvpn dapat dimulai atau dihentikan dengan:
sudo service openvpn start
sudo service openvpn stop
Opsi berguna lainnya yang tersedia untuk service openvpndisertakan cond-restart,force-reload,reload, restart,soft-restart, start, status, stop.
Karena itu adalah utas yang cukup lama saya tidak yakin apakah masih menarik. Jika Anda masih ingin menggunakan NetworkManager untuk terhubung ke VPN, Anda dapat menambahkan aturan udev sederhana seperti itu:
Saya menemukan jawaban dalam penelitian saya untuk memecahkan masalah ini dan saya menemukan bahwa solusi terbaik adalah (menggunakan server openvpn) sebagai berikut:
Tambahkan baris berikut ke dalam konfigurasi openvpn (biasanya /etc/openvpn/server.conf). Dalam jawaban di atas digunakan atas dan ke bawah, yang digunakan ketika server mulai (restart). Directive client-connect (and client-disconnect) digunakan ketika klien terhubung (terputus).
network-manger-openvpn
.Jawaban:
network-manager-openvpn
tidak menyediakan fungsi seperti itu, Anda harus menggunakanopenvpn
secara langsung.Lewati
--script-security 2 --up /path/to/your/script
ketika menghubungkan. Jika Anda menggunakan file konfigurasi yang terletak di/etc/openvpn/
, tambahkan baris berikutnya ke file konfigurasi Anda:Dari manual OpenVPN :
Ada lebih banyak acara untuk eksekusi skrip, yang dapat ditemukan di halaman manual .
Buat
/etc/openvpn/up.sh
, dan berikan izin eksekusi (misalnya, 755 atau 700). Contoh konten untuk menambahkan alamat dan rute IPv6 (ditampilkan untuk tujuan pendidikan, jangan menyalinnya langsung):Perhatikan bahwa
up
skrip ini dijalankan sebagai root. Jika Anda belum menentukanUser
danGroup
menetapkan, OpenVPN akan menjalankan skrip sepertidown
sebagai root juga.sumber
openvpn
secara langsung. Ketika mengatur server, saya perhatikan bahwa OpenVPN akan mencoba untuk menyambung kembali ketika server turun. Tidak yakin apakah OpenVPN terus mencoba ketika antarmuka jaringan Anda turun.Untuk pertanyaan: "Bagaimana saya bisa mengaitkan skrip ke OpenVPN sehingga ia berjalan ketika VPN terhubung dengan sukses?" Saya ingin menunjukkan bahwa Lekensteyn memberikan jawaban yang sangat baik . Tetapi, pada saat jawabannya dikomposisikan, ia tidak memiliki sedikit kejelasan tentang bagaimana argumen baris perintah openvpn harus disediakan untuk memulai openvpn pada mesin ubuntu, terutama sehingga ia bekerja sama setelah reboot.
Argumen baris perintah Openvpn di Ubuntu:
Secara alami, seseorang dapat memulai openvpn dari baris perintah dengan opsi hukum apa pun yang tersedia. Tetapi, pada mesin Ubuntu, jika seseorang ingin memulai openvpn dengan argumen baris perintah yang sama setelah reboot, mereka harus mempertimbangkan untuk mengedit file
/etc/default/openvpn
. Periksa baris berikut:Dari halaman manual komunitas openvpn pada
--script-security
Digabung dengan bagian yang disingkat pada
--up
Contoh:
Di komputer saya dengan server.conf openpvn, saya memiliki baris berikut di
/etc/default/openvpn
file saya :Secara kebetulan, nat.sh mengatur terjemahan alamat jaringan untuk merutekan lalu lintas jaringan pribadi dari klien openvpn ke internet publik; yang bagus untuk ketika seseorang tidak mempercayai jalur akses WIFI publik.
Selain memungkinkan untuk memulai kembali seperti yang diharapkan setelah reboot, kapan
/etc/openvpn/[client or server].conf
dan/etc/default/openvpn
file dikonfigurasikan dengan benar, openvpn dapat dimulai atau dihentikan dengan:Opsi berguna lainnya yang tersedia untuk
service openvpn
disertakancond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.sumber
Karena itu adalah utas yang cukup lama saya tidak yakin apakah masih menarik. Jika Anda masih ingin menggunakan NetworkManager untuk terhubung ke VPN, Anda dapat menambahkan aturan udev sederhana seperti itu:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Ini harus menjalankan skrip apa pun setelah VPN dibuat.
sumber
Saya menemukan jawaban dalam penelitian saya untuk memecahkan masalah ini dan saya menemukan bahwa solusi terbaik adalah (menggunakan server openvpn) sebagai berikut:
Buat skrip untuk dieksekusi:
Tambahkan baris berikut ke dalam konfigurasi openvpn (biasanya
/etc/openvpn/server.conf
). Dalam jawaban di atas digunakan atas dan ke bawah, yang digunakan ketika server mulai (restart). Directive client-connect (and client-disconnect) digunakan ketika klien terhubung (terputus).sumber