Miałem taką samą konfigurację, a „przełączniki zabijania VPN” są trudniejsze, niż mogłoby się wydawać.
Jednak zgodnie ze specyfikacją, która brzmi „zabijanie niektórych aplikacji, gdy spadnie VPN”, istnieje proste rozwiązanie.
W systemie Ubuntu monitor sieci ma wywołania zwrotne dla zdarzeń sieciowych, dzięki czemu można napisać skrypt, aby zabić żądane aplikacje. Przykład poniżej:
Edytuj /etc/NetworkManager/dispatcher.d/50vpndownkillapps.rb
:
#!/usr/bin/env ruby
if ARGV == [ 'tun0', 'vpn-down' ]
`pkill -f transmission`
`pkill -f deluge`
end
Spraw, aby był wykonywalny: chmod 755 /etc/NetworkManager/dispatcher.d/50vpndownkillapps.rb
i ciesz się :-)
Ten skrypt jest w języku Ruby (więc wymaga Ruby), ale można go w prosty sposób przekonwertować na skrypt powłoki.
Zakłada się również, że karta VPN tun0
jest standardem dla konfiguracji OpenVPN.
ARGV
zacząłem od'tun0'
dłuższego czasu i nagle zmieniłem na'tun1'
bez powiadomienia. Tak więc, aby utrzymać przełącznik kill działający pomimo tej pierwszej (bezużytecznej) zmiany wartości, musiałem zmienić test naif ARGV.last == 'vpn-down'
Miałem tę samą potrzebę i opracowałem własne rozwiązanie, ponieważ wydaje się, że nie ma dedykowanego narzędzia do tego w systemie Linux. Nie ma potrzeby upuszczania / zamykania otwartych aplikacji! :)
Musisz skonfigurować zaporę iptables, aby urządzenie mogło łączyć się TYLKO z określonymi serwerami VPN (nie zezwala na żaden inny ruch, z wyjątkiem lokalnego, więc nie będzie „wycieków”). Oto skrypt do tego (znalazł go w Internecie):
Musisz skonfigurować tabelę
servers=()
. Wystarczy podać adresy IP swoich ulubionych serwerów VPN.Sprawdź także, czy inne zmienne na początku skryptu są ustawione poprawnie, w przeciwnym razie zablokuje całe twoje połączenie.
Należy wykonać kopię zapasową iptables za pomocą:
(przywróć za pomocą
sudo iptables-restore < working.iptables.rules
)Obsługuje połączenia TCP i UDP, jeśli potrzebujesz tylko jednego z nich, usuń niechciane dwie linie z
for ()
pętli. Sprawdź także, czy twój dostawca używa tych samych portów - może być inny.Uruchom ten skrypt za pomocą fe
sudo /home/user/vpn.sh
.Jeśli chcesz załadować go podczas rozruchu (iptables zwykle resetuje się po ponownym uruchomieniu), dodaj do
/etc/rc.local
pliku np. Liniębash /home/user/vpn.sh
.Następna część to automatyczne złącze VPN i monitor. Oto mój własny sprzęt do tego:
Automatycznie połączy się przy starcie i monitoruje twoje połączenie w danym interwale (
amount=10
daje 10 sekundowy interwał) i ponownie łączy się po utracie połączenia. Mam funkcję logowania i kilka innych opcji.Sprawdź UUID połączeń
nmcli con show
i dodaj dovpn=()
tabeli ulubione (pasujące do adresów IP dodanych do zapory) . Za każdym razem losowo wybierze połączenie określone w tej tabeli.Możesz dodać go do automatycznego uruchamiania (nie wymaga przywileju sudo). Oto przykład, jak uruchomić go w terminalu:
... a oto jak to wygląda w terminalu:
... a oto, jak wygląda szczelny ping po zerwaniu połączenia VPN:
Cieszyć się :)
źródło
/etc/rc.local
?Udało mi się skonfigurować prosty przełącznik zabijania VPN z UFW. Działa ze wszystkimi VPNami, które mam.
Oto moje ustawienia ufw:
Działa dla mnie dobrze :)
źródło
sudo ufw allow out 443/tcp
pozwala na bezpieczny wyciek z witryny, gdy VPN nie jest podłączony. Nie chciałbyś tego zatrzymać? Witryna HTTPS z AJAX lub WebSockets może ponownie łączyć się w tle samodzielnie, być może za pomocą timera JavaScript.Rozwiązałem ten problem, konfigurując Ufw do blokowania całego ruchu wychodzącego, a następnie dodając do białej listy wszystkie węzły VPN, odwołując się do ich indywidualnych adresów IP. Nie jest to tak uciążliwe, jak się wydaje: sieci VPN z mojego doświadczenia pozwalają na wyszukiwanie DNS w celu uzyskania różnych adresów IP.
Napisałem do tego program PHP o nazwie ufw-vpn . Używam go od kilku lat, z różnymi drobnymi ulepszeniami wprowadzonymi z czasem. Musisz oczywiście zainstalować PHP, a Git, jeśli chcesz go sklonować, a nie pobrać.
Możesz go również pobrać za pomocą wget:
Następnie uruchom polecenie, aby sprawdzić, czy wygląda OK (bez parametrów renderuje tylko komunikat składniowy):
Teraz, zakładając, że twoja sieć VPN obsługuje tę funkcję, możesz użyć w pełni kwalifikowanej domeny, aby uzyskać listę serwerów dla regionu (musisz to znaleźć w dokumentacji dostawcy lub w dziale wsparcia):
To powinno dać ci dużą listę reguł zapory do dodania. Aby je łatwo zainstalować, możesz po prostu to zrobić:
Od czasu do czasu dostawcy VPN aktualizują swoje adresy IP, więc musisz zaktualizować swoje, aby pasowały. Możesz to zrobić przez diff:
W przypadku różnic warto sprawdzić reguły przed ich wykonaniem, ponieważ spowoduje to usunięcie wszystkiego, co nie należy do sieci VPN. Tak więc, jeśli masz jakieś niestandardowe reguły, będą musiały zostać usunięte przed uruchomieniem.
Więcej dokumentów jest dostępnych w repozytorium, a wszystko to jest open source, więc możesz sprawdzić kod pod kątem problemów z bezpieczeństwem. Zgłoszenia błędów i propozycje funkcji są bardzo mile widziane.
źródło