Bagaimana saya bisa mengaitkan skrip ke OpenVPN sehingga ia berjalan ketika VPN terhubung dengan sukses?
network-manger-openvpn
.
Bagaimana saya bisa mengaitkan skrip ke OpenVPN sehingga ia berjalan ketika VPN terhubung dengan sukses?
network-manger-openvpn
.
Jawaban:
network-manager-openvpn
tidak menyediakan fungsi seperti itu, Anda harus menggunakan openvpn
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:
script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
Dari manual OpenVPN :
--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 up
skrip ini dijalankan sebagai root. Jika Anda belum menentukan User
dan Group
menetapkan, OpenVPN akan menjalankan skrip seperti down
sebagai root juga.
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.
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=""
Dari halaman manual komunitas openvpn pada--script-security
--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.
Di komputer saya dengan server.conf openpvn, saya memiliki baris berikut di /etc/default/openvpn
file saya :
OPTARGS="
--script-security 2
--up /etc/openvpn/nat.sh
"
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:
sudo service openvpn start
sudo service openvpn stop
Opsi berguna lainnya yang tersedia untuk service openvpn
disertakan 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:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Ini harus menjalankan skrip apa pun setelah VPN dibuat.
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:
# nano /etc/openvpn/up.sh
<file:contents>
#!/bin/sh
# export >> /var/log/openvpn/openvpn-up.log
D=`date "+%Y-%m-%d %H:%M"`
echo "[$D] ($local_port_1:$proto_1) $X509_0_CN: $trusted_ip => $ifconfig_pool_remote_ip" >> /var/log/openvpn/openvpn-up.log
</file>
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).
# nano /etc/openvpn/server.conf
<file:add>
script-security 2
client-connect /etc/openvpn/up.sh
</file>