Chyba w przypadku klienta? Z jakiego oprogramowania korzystasz? OpenVPN, czy opakowanie (np. NetworkManager)?
Lekensteyn
@Lekensteyn, opakowanie network-manger-openvpn.
Oxwivi
Odpowiedzi:
62
network-manager-openvpnnie zapewnia takiej funkcjonalności, musisz użyć openvpnbezpośrednio.
Przejdź --script-security 2 --up /path/to/your/scriptdo niego podczas łączenia. Jeśli używasz pliku konfiguracyjnego znajdującego się w /etc/openvpn/, dodaj kolejne wiersze do pliku konfiguracyjnego:
script-security 2# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
--script-poziom bezpieczeństwa [metoda]
Niniejsza dyrektywa oferuje kontrolę na poziomie polityki nad wykorzystaniem OpenVPN
zewnętrznych programów i skryptów. Wartości niższego poziomu są większe
restrykcyjne, wyższe wartości są bardziej liberalne. Ustawienia dla
poziom:
0 - Całkowicie brak wywoływania programów zewnętrznych.
1 - (Domyślnie) Wywołaj tylko wbudowane pliki wykonywalne, takie jak ifconfig,
ip, route lub netsh.
2 - Zezwól na wywoływanie wbudowanych plików wykonywalnych i zdefiniowanych przez użytkownika
skrypty.
3 - Zezwól na przekazywanie haseł do skryptów za pośrednictwem środowiska
zmienne (potencjalnie niebezpieczne).
--up cmd
Polecenie powłoki do uruchomienia po pomyślnym otwarciu urządzenia TUN / TAP (wcześniej
- zmiana identyfikatora użytkownika). Skrypt up jest przydatny do określania
polecenia trasujące, które kierują ruch IP przeznaczony do prywatnego
podsieci, które istnieją na drugim końcu połączenia VPN z
tunel.
Kolejność wykonywania skryptów
--up Wykonane po powiązaniu gniazda TCP / UDP i otwarciu TUN / TAP.
- down Wykonane po zamknięciu TCP / UDP i TUN / TAP.
Istnieje więcej zdarzeń do wykonania skryptu, które można znaleźć na stronie podręcznika .
Utwórz /etc/openvpn/up.shi nadaj mu uprawnienia do wykonywania (powiedzmy 755 lub 700). Przykładowa treść dodawania adresu IPv6 i trasy (wyświetlana w celach edukacyjnych, nie kopiuj go bezpośrednio):
#!/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
Zauważ, że ten upskrypt jest uruchamiany jako root. Jeśli nie określiłeś ustawienia Useri Group, OpenVPN będzie uruchamiał skrypty jak downroot.
Jeśli nie wiesz, jak bezpośrednio korzystać z openvpn, dodaj bieżące szczegóły konfiguracji: typ połączenia (np. Certyfikaty X509), port bramy, kompresja LZO, siła TCP, użycie urządzenia zaczepowego, szyfru, HMAC i TLS. Wspomnij również o ustawieniach IP, jeśli nie są one automatyczne. Aby zachować prywatność, pomiń swoje rzeczywiste adresy.
Lekensteyn
Okej, zdecydowałem się użyć OpenVPN bezpośrednio (i tak, mam plik .conf), ale czy automatycznie połączy się ponownie, jeśli połączenie zostanie utracone? I jak sprawić, by łączył się automatycznie, gdy istnieje połączenie z Internetem? I w końcu nie zrozumiałem, gdzie muszę dodać wiersze, o których wspomniałeś w odpowiedzi.
Oxwivi,
Rozszerzyłem odpowiedź do openvpnbezpośredniego użycia . Podczas konfigurowania serwera zauważyłem, że OpenVPN będzie próbował połączyć się ponownie, gdy serwer ulegnie awarii. Nie jestem pewien, czy OpenVPN nadal próbuje, gdy twój interfejs sieciowy przestaje działać.
Lekensteyn,
Mój problem nie dotyczy awarii interfejsu sieciowego - próbuje się połączyć ponownie, gdy połączenie internetowe zostanie utracone i odzyskane. Chcę tylko połączyć się z VPN za każdym razem, gdy otrzymam połączenie z Internetem.
Oxwivi,
Aha, czy skrypt dotyczy wszystkich połączeń VPN? I proszę otagować @Oxwivi, odpowiadając, nie otrzymam powiadomienia inaczej.
Oxwivi,
5
Na pytanie: „W jaki sposób mogę powiązać skrypt z OpenVPN, aby działał, gdy VPN jest prawidłowo podłączony?” Chcę podkreślić, że Lekensteyn udzielił doskonałej odpowiedzi . Ale w chwili, gdy jego odpowiedź była skomponowana, brakowało niejasności co do tego, w jaki sposób należy podać argumenty wiersza poleceń openvpn, aby uruchomić openvpn na maszynie z Ubuntu, szczególnie, aby działał tak samo po ponownym uruchomieniu.
Argumenty wiersza polecenia Openvpn w systemie Ubuntu:
Oczywiście openvpn można uruchomić z wiersza poleceń z dowolnymi dostępnymi opcjami prawnymi. Ale na komputerze Ubuntu, jeśli ktoś chce uruchomić openvpn z tymi samymi argumentami wiersza poleceń po ponownym uruchomieniu, powinien rozważyć edycję pliku /etc/default/openvpn. Sprawdź następujące linie:
# Optional arguments to openvpn's command line
OPTARGS=""
- poziom bezpieczeństwa skryptu
Niniejsza dyrektywa oferuje kontrolę na poziomie polityki nad wykorzystaniem zewnętrznych źródeł przez OpenVPN
programy i skrypty. Wartości niższego poziomu są bardziej restrykcyjne, wyższe
wartości są bardziej liberalne. Ustawienia dla poziomu:
0 - Całkowicie brak wywoływania programów zewnętrznych.
1 - (Domyślnie) Wywołaj tylko wbudowane pliki wykonywalne, takie jak ifconfig, ip, route,
lub netsh.
2 - Zezwól na wywoływanie wbudowanych plików wykonywalnych i skryptów zdefiniowanych przez użytkownika.
3 - Zezwól na przekazywanie haseł do skryptów za pomocą zmiennych środowiskowych
(potencjalnie niebezpieczne).
Wersje OpenVPN przed wersją 2.3 wspierały także flagę metody wskazującą jak
OpenVPN powinien wywoływać zewnętrzne polecenia i skrypty. Może to być albo wykonanie
lub system. Od wersji OpenVPN v2.3 ta flaga nie jest już akceptowana. W większości * nix
środowiska podejście execve () zostało użyte bez żadnych problemów.
Niektóre dyrektywy, takie jak --up, umożliwiają przekazywanie opcji do zewnętrznego skryptu.
W takich przypadkach upewnij się, że nazwa skryptu nie zawiera spacji ani znaku
parser konfiguracji zadławi się, ponieważ nie może określić, gdzie skrypt
kończą się nazwy i zaczynają się opcje skryptu.
W połączeniu ze skróconą sekcją na --up
--up cmd
Uruchom polecenie cmd po pomyślnym otwarciu urządzenia TUN / TAP (zmiana UID użytkownika przed).
cmd składa się ze ścieżki do skryptu (lub programu wykonywalnego), opcjonalnie podanej
przez argumenty. Ścieżka i argumenty mogą być jedno- lub podwójnie cytowane i / lub
uciekł za pomocą odwrotnego ukośnika i powinien być oddzielony jednym lub kilkoma spacjami.
Przykład:
Na moim komputerze z openpvn server.conf mam następujące linie w moim /etc/default/openvpnpliku:
Nawiasem mówiąc, nat.sh konfiguruje translację adresów sieciowych w celu kierowania prywatnego ruchu sieciowego od klientów openvpn do publicznego Internetu; co jest dobre, gdy nie ufa się publicznemu punktowi dostępowemu WIFI.
Oprócz umożliwienia ponownego uruchomienia zgodnie z oczekiwaniami po ponownym uruchomieniu, kiedy /etc/openvpn/[client or server].confi /etc/default/openvpnpliki są poprawnie skonfigurowane, openvpn można uruchomić lub zatrzymać za pomocą:
sudo service openvpn start
sudo service openvpn stop
Inne przydatne opcje dostępne service openvpnobejmują cond-restart,force-reload,reload, restart,soft-restart, start, status, stop.
Ponieważ jest to dość stary wątek, nie jestem pewien, czy nadal go interesuję. Jeśli nadal chcesz używać Menedżera sieci do łączenia się z VPN, możesz dodać prostą regułę udev w ten sposób:
Natknąłem się na odpowiedź w swoich badaniach, aby rozwiązać ten problem i odkryłem, że najlepszym rozwiązaniem jest (przy użyciu serwera openvpn), jak następuje:
Dodaj następujące wiersze do konfiguracji openvpn (zwykle /etc/openvpn/server.conf). W powyższej odpowiedzi użyto go w górę iw dół, które są używane podczas uruchamiania serwera (restartowania). Dyrektywa klient-podłącz (i klient-odłącz) jest używany, gdy klient łączy się (odłącza).
network-manger-openvpn
.Odpowiedzi:
network-manager-openvpn
nie zapewnia takiej funkcjonalności, musisz użyćopenvpn
bezpośrednio.Przejdź
--script-security 2 --up /path/to/your/script
do niego podczas łączenia. Jeśli używasz pliku konfiguracyjnego znajdującego się w/etc/openvpn/
, dodaj kolejne wiersze do pliku konfiguracyjnego:Ze strony OpenVPN :
Istnieje więcej zdarzeń do wykonania skryptu, które można znaleźć na stronie podręcznika .
Utwórz
/etc/openvpn/up.sh
i nadaj mu uprawnienia do wykonywania (powiedzmy 755 lub 700). Przykładowa treść dodawania adresu IPv6 i trasy (wyświetlana w celach edukacyjnych, nie kopiuj go bezpośrednio):Zauważ, że ten
up
skrypt jest uruchamiany jako root. Jeśli nie określiłeś ustawieniaUser
iGroup
, OpenVPN będzie uruchamiał skrypty jakdown
root.źródło
openvpn
bezpośredniego użycia . Podczas konfigurowania serwera zauważyłem, że OpenVPN będzie próbował połączyć się ponownie, gdy serwer ulegnie awarii. Nie jestem pewien, czy OpenVPN nadal próbuje, gdy twój interfejs sieciowy przestaje działać.Na pytanie: „W jaki sposób mogę powiązać skrypt z OpenVPN, aby działał, gdy VPN jest prawidłowo podłączony?” Chcę podkreślić, że Lekensteyn udzielił doskonałej odpowiedzi . Ale w chwili, gdy jego odpowiedź była skomponowana, brakowało niejasności co do tego, w jaki sposób należy podać argumenty wiersza poleceń openvpn, aby uruchomić openvpn na maszynie z Ubuntu, szczególnie, aby działał tak samo po ponownym uruchomieniu.
Argumenty wiersza polecenia Openvpn w systemie Ubuntu:
Oczywiście openvpn można uruchomić z wiersza poleceń z dowolnymi dostępnymi opcjami prawnymi. Ale na komputerze Ubuntu, jeśli ktoś chce uruchomić openvpn z tymi samymi argumentami wiersza poleceń po ponownym uruchomieniu, powinien rozważyć edycję pliku
/etc/default/openvpn
. Sprawdź następujące linie:Ze strony podręcznika społeczności openvpn na
--script-security
W połączeniu ze skróconą sekcją na
--up
Przykład:
Na moim komputerze z openpvn server.conf mam następujące linie w moim
/etc/default/openvpn
pliku:Nawiasem mówiąc, nat.sh konfiguruje translację adresów sieciowych w celu kierowania prywatnego ruchu sieciowego od klientów openvpn do publicznego Internetu; co jest dobre, gdy nie ufa się publicznemu punktowi dostępowemu WIFI.
Oprócz umożliwienia ponownego uruchomienia zgodnie z oczekiwaniami po ponownym uruchomieniu, kiedy
/etc/openvpn/[client or server].conf
i/etc/default/openvpn
pliki są poprawnie skonfigurowane, openvpn można uruchomić lub zatrzymać za pomocą:Inne przydatne opcje dostępne
service openvpn
obejmującond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.źródło
Ponieważ jest to dość stary wątek, nie jestem pewien, czy nadal go interesuję. Jeśli nadal chcesz używać Menedżera sieci do łączenia się z VPN, możesz dodać prostą regułę udev w ten sposób:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
To powinno uruchomić dowolny skrypt po utworzeniu VPN.
źródło
Natknąłem się na odpowiedź w swoich badaniach, aby rozwiązać ten problem i odkryłem, że najlepszym rozwiązaniem jest (przy użyciu serwera openvpn), jak następuje:
Utwórz skrypt do wykonania:
Dodaj następujące wiersze do konfiguracji openvpn (zwykle
/etc/openvpn/server.conf
). W powyższej odpowiedzi użyto go w górę iw dół, które są używane podczas uruchamiania serwera (restartowania). Dyrektywa klient-podłącz (i klient-odłącz) jest używany, gdy klient łączy się (odłącza).źródło