Korzystam z klienta OpenVPN za pośrednictwem wtyczki OpenVPN Network Manager na podwójnym stosie (co oznacza, że jest skonfigurowany zarówno dla połączeń IPv4, jak i IPv6) Ubuntu 13.10 do przekierowania całego ruchu przez VPN (redirect-gateway). Ogólnie działa dobrze.
Jednak ze względu na fakt, że system preferuje IPv6, VPN „przecieka”, a podczas łączenia się z witrynami, które są również dostępne przez IPv6 (takie jak Google lub Wikipedia), przeglądarka łączy się bezpośrednio.
Jednym rozwiązaniem byłoby skonfigurowanie serwera OpenVPN w celu zapewnienia łączności IPv6. Chociaż jest to możliwe w przypadku OpenVPN, wtyczka do Network Managera obecnie go nie obsługuje.
Ponieważ łączność IPv6 przez VPN nie jest absolutnie konieczna, chciałbym po prostu wyłączyć IPv6 na kliencie podczas łączenia się z serwerem OpenVPN. Czy to możliwe? Jeśli tak, jak mogę to zrobić?
źródło
Odpowiedzi:
Dodaj to do linii jądra w module ładującym, aby całkowicie wyłączyć IPv6:
Jeśli używasz Grub (jeśli nie zainstalowałeś własnego programu ładującego, to używasz Grub), twoja linia jądra powinna wyglądać mniej więcej tak:
Zalecanym podejściem do dodawania czegoś do linii jądra jest dodanie pożądanego parametru jądra do
GRUB_CMDLINE_LINUX_DEFAULT
zmiennej w/etc/default/grub
pliku:Po dodaniu tego
/etc/default/grub
uruchom następujące polecenie, aby ponownie wygenerowaćgrub.cfg
:Alternatywnie, dodanie
ipv6.disable_ipv6=1
zamiast tego sprawi, że stos IPv6 będzie działał, ale nie przypisze adresów IPv6 do żadnego z twoich urządzeń sieciowych.LUB
Aby wyłączyć IPv6 przez sysctl, umieść w
/etc/sysctl.conf
pliku:Nie zapomnij skomentować hostów IPv6 w
/etc/hosts
pliku:UWAGA
ponowne uruchomienie może być wymagane dla metody sysctl, a ponowne uruchomienie jest zdecydowanie wymagane w przypadku podejścia do linii jądra.
LUB
Aby tymczasowo wyłączyć ipv6:
Aby tymczasowo włączyć:
Więc jeśli chcesz wyłączyć ipv6 w danych warunkach , napisz skrypt bash gdzieś wzdłuż tych linii:
UWAGA
Może być konieczne wyłączenie wszystkich hostów ipv6 w
/etc/hosts
pliku dla tej metody, tak jak zalecałem w poprzedniej metodzie.źródło
nmcli
aby sprawdzić, czy masz połączenie z VPN; jeśli to nie zadziała, to jestem pewien, że istnieje narzędzie sieciowe wiersza polecenia, które da dostęp do tych informacji.sysctl
) nie włącza ponownie poprawnie IPv6 dla Wi-Fi. Musisz ponownie połączyć się z punktem dostępu, aby go włączyć.Możesz wyłączyć ipv6 na poziomie klienta dla określonego połączenia Menedżera sieci , ustawiając opcję IPv6 ipv6.method na „ignoruj”
// SOP: Odtworzenie mojego połączenia LAN przy użyciu FIXED IP 192.168.0.95 do Ethernet. `` ``
`` ``
źródło
Jestem na Ubuntu 16.04.03 LTS, łączę się z serwerem Pi-Hole przez PiVPN.
Oto, co zrobiłem, aby automatycznie włączać i wyłączać IPv6 podczas łączenia się z VPN przez Menedżera sieci:
Utwórz skrypt w
/etc/NetworkManager/dispatcher.d
:Dodaj następującą treść do pliku (zmodyfikuj zawartość do swoich wymagań):
Ustaw skrypt jako wykonywalny:
Otóż to. Musiałem ręcznie dodać mój DNS Pi-Hole z powodu
dnsmasq
błędu, który uniemożliwiaresolv.conf
poprawną aktualizację, więc zmodyfikuj wskazane linie, jeśli zauważysz przeciek DNS.źródło
Myślę, że mniej inwazyjne jest wyłączenie ip6 w pliku klienta (edycja client_conf_file.ovpn), który modyfikuje stos tcp jądra.
Otwórz plik conf_file.ovpn i dodaj następujące wiersze:
Próbowałem i po tym ipv6 znika.
Przed. Uruchamiam,
ip a |grep global
a wynikiem jest:Po. Uruchamiam,
ip a |grep global
a wynikiem jest:źródło
Edytuj profil OpenVPN w NetworkManager, otwórz kartę IPv6 i ręcznie dodaj trasę:
Adres: 2000 Prefiks: 3 Brama: 0100 :: 1
2000 :: / 3 przechwytuje wszystkie publicznie rutowalne adresy IPv6. Prefiks 0100 :: / 64 to specjalny prefiks przeznaczony do odrzucania ruchu. Zasadniczo będziesz wysyłać cały ruch IPv6 do bramy, która nie istnieje.
Zaleta: łatwa i całkowicie automatyczna.
Wada: niektóre aplikacje, a mianowicie narzędzia wiersza poleceń, mogą nie wrócić do IPv4 tak szybko, jak by się chciało, gdy ta metoda jest używana.
źródło
Wypróbuj mój prosty skrypt, który właśnie stworzyłem, to zrobi,
Jeśli na niektórych interfejsach nadal znajduje się adres ipv6, klient nadal próbuje routingu ipv6, ale ponieważ DNS korzysta z UDP, istnieje prawdopodobieństwo wycieku DNS, którego TCPwrapper nie może wyłączyć.
Ten skrypt działa również dobrze z innymi interfejsami, ponieważ nie opiera się już na argumencie NetworkManager, takim jak vpn-up vpn-down.
utwórz plik wykonywalny w /etc/NetworkManager/dispatcher.d/
wklej poniższy kod
następnie uczyń go wykonywalnym
PS OpenVPN z Network Managerem traci wiele opcji korzyści OpenVPN z wersji wiersza poleceń.
źródło