Saya memiliki pengaturan yang sama, dan "VPN kill switches" lebih rumit daripada yang diperkirakan orang.
Mengikuti spesifikasi Anda, yang berbunyi "bunuh aplikasi tertentu ketika VPN jatuh", ada solusi sederhana.
Di Ubuntu, monitor jaringan memiliki callback untuk acara jaringan, sehingga Anda dapat menulis skrip untuk mematikan aplikasi yang Anda inginkan. Contoh berikut:
Edit /etc/NetworkManager/dispatcher.d/50vpndownkillapps.rb
:
#!/usr/bin/env ruby
if ARGV == [ 'tun0', 'vpn-down' ]
`pkill -f transmission`
`pkill -f deluge`
end
Membuatnya dapat dieksekusi:, chmod 755 /etc/NetworkManager/dispatcher.d/50vpndownkillapps.rb
dan nikmati :-)
Skrip ini ada di Ruby (jadi itu membutuhkan ruby), tetapi dapat secara sepele dikonversi menjadi skrip shell.
Ini juga mengasumsikan bahwa adaptor VPN adalah tun0
, yang merupakan standar untuk konfigurasi OpenVPN.
ARGV
memang mulai dengan'tun0'
untuk waktu yang lama, dan tiba-tiba berubah menjadi'tun1'
tanpa pemberitahuan. Jadi, untuk tetap mematikan switch meskipun nilai perubahan yang pertama (tidak berguna) ini, saya harus mengubah tes keif ARGV.last == 'vpn-down'
Saya memiliki kebutuhan yang sama dan saya mengembangkan solusi saya sendiri karena sepertinya tidak ada alat khusus untuk ini di Linux. Tidak perlu drop / tutup aplikasi yang dibuka! :)
Anda perlu mengatur firewall iptables, sehingga mesin Anda HANYA dapat terhubung ke server VPN tertentu (tidak ada lalu lintas lain yang diizinkan, kecuali lokal, sehingga tidak akan ada "kebocoran"). Berikut ini skrip untuk itu (ditemukan di web):
Anda perlu mengatur tabel
servers=()
. Cukup tentukan IP dari server VPN favorit Anda.Periksa juga apakah variabel lain di awal skrip diatur dengan benar, jika tidak maka akan memblokir seluruh koneksi Anda.
Pastikan Anda membuat cadangan iptables dengan:
(pulihkan dengan
sudo iptables-restore < working.iptables.rules
)Ini mendukung koneksi TCP dan UDP, jika Anda hanya membutuhkan satu dari itu, hapus dua baris yang tidak diinginkan dari
for ()
loop. Periksa juga apakah penyedia Anda menggunakan port yang sama - mungkin berbeda.Jalankan skrip ini dengan fe
sudo /home/user/vpn.sh
.Jika Anda ingin memuatnya saat boot (iptables biasanya me-reset setelah boot ulang), tambahkan ke
/etc/rc.local
baris file fe sepertibash /home/user/vpn.sh
.Bagian selanjutnya adalah konektor & monitor otomatis VPN. Ini alat saya sendiri untuk ini:
Ini akan terhubung secara otomatis saat start dan monitor koneksi Anda dengan interval yang diberikan (interval
amount=10
10 detik) dan hubungkan kembali koneksi yang hilang. Punya fitur logging dan beberapa opsi lainnya.Periksa koneksi Anda menggunakan UUID
nmcli con show
dan tambahkan favorit Anda (cocok dengan IP ditambahkan ke firewall) kevpn=()
tabel. Setiap kali secara acak akan memilih koneksi yang ditentukan dalam tabel ini.Anda dapat menambahkannya ke auto-start Anda (tidak perlu sudo priviledge). Berikut ini contoh cara memulainya di terminal:
... dan berikut tampilannya di terminal:
... dan inilah tampilan ping anti bocor setelah koneksi VPN Anda turun:
Nikmati :)
sumber
/etc/rc.local
?Saya sudah bisa mengatur switch VPN kill sederhana dengan UFW. Ini bekerja dengan semua vpn yang saya miliki.
Ini pengaturan ufw saya:
Bekerja untuk saya baik-baik saja :)
sumber
sudo ufw allow out 443/tcp
memungkinkan kebocoran situs web yang aman ketika VPN tidak terhubung. Tidakkah Anda ingin menghentikan itu? Situs HTTPS dengan AJAX atau WebSockets mungkin terhubung kembali di latar belakangnya sendiri, mungkin melalui penghitung waktu JavaScript.Saya memecahkan masalah ini dengan mengatur Ufw untuk memblokir semua lalu lintas keluar, dan kemudian memasukkan semua node VPN dengan merujuk masing-masing alamat IP. Ini tidak sesulit kedengarannya: VPN dalam pengalaman saya memungkinkan penggunaan pencarian DNS untuk mendapatkan berbagai alamat IP mereka.
Saya telah menulis program PHP untuk melakukan ini, yang disebut ufw-vpn . Saya telah menggunakannya selama beberapa tahun, dengan berbagai perangkat tambahan kecil yang dibuat seiring waktu. Anda tentu saja perlu menginstal PHP, dan Git jika Anda ingin mengkloningnya daripada mengunduhnya.
Anda juga dapat mengambilnya menggunakan wget:
Kemudian jalankan perintah untuk memeriksa tampilannya OK (tanpa parameter hanya membuat pesan sintaks):
Sekarang, dengan asumsi VPN Anda mendukungnya, Anda dapat menggunakan domain yang sepenuhnya memenuhi syarat untuk mendapatkan daftar server untuk suatu wilayah (Anda perlu menemukannya di dokumentasi penyedia Anda, atau mungkin dari departemen dukungan mereka):
Itu seharusnya memberi Anda daftar besar aturan firewall untuk ditambahkan. Untuk menginstalnya dengan mudah, Anda bisa melakukan ini:
Dari waktu ke waktu penyedia VPN akan memperbarui alamat IP mereka, jadi Anda harus memperbarui alamat yang sesuai. Anda dapat melakukannya melalui diff:
Untuk perbedaan, ada baiknya memeriksa aturan sebelum menjalankannya, karena akan menghapus apa pun yang bukan milik VPN. Jadi, jika Anda memiliki beberapa aturan khusus, aturan tersebut harus dikeluarkan sebelum dijalankan.
Lebih banyak dokumen tersedia di repo, dan semuanya open source, sehingga Anda dapat memeriksa kode untuk masalah keamanan. Laporan bug dan saran fitur sangat disambut.
sumber