it-swarm.com.de

Wie deaktiviere ich IPv6, wenn ich mit Network Manager auf einem Dual-Stack-System eine Verbindung zu einem OpenVPN-Server herstelle?

Ich verwende den OpenVPN-Client über das OpenVPN Network Manager-Plug-in auf einem Dual-Stack (dh für IPv4- und IPv6-Konnektivität konfiguriert). Ubuntu 13.10 leitet den gesamten Datenverkehr über das VPN um (Redirect-Gateway). Es funktioniert im Allgemeinen gut.

Aufgrund der Tatsache, dass IPv6 vom System bevorzugt wird, tritt eine "Undichtigkeit" des VPN auf. Wenn eine Verbindung zu Websites hergestellt wird, die auch über IPv6 verfügbar sind (z. B. Google oder Wikipedia), stellt der Browser eine direkte Verbindung her.

Eine Lösung wäre, den OpenVPN-Server für die Bereitstellung von IPv6-Konnektivität zu konfigurieren. Während dies mit OpenVPN möglich ist, wird es vom Plugin für Network Manager derzeit nicht unterstützt.

Da IPv6-Konnektivität über das VPN nicht unbedingt erforderlich ist, Ich möchte IPv6 auf dem Client einfach deaktivieren, wenn Sie eine Verbindung zum OpenVPN-Server herstellen. Ist dies möglich? Wenn ja, wie kann ich das tun?

20
Damn Terminal

Fügen Sie dies zu Ihrer Kernel-Zeile in Ihrem Bootloader hinzu, um IPv6 insgesamt zu deaktivieren:

ipv6.disable=1

Wenn Sie Grub verwenden (wenn Sie keinen eigenen Bootloader installiert haben, dann verwenden Sie Grub), sollte Ihre Kernel-Zeile ungefähr so ​​aussehen:

linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff ipv6.disable=1

Der empfohlene Ansatz, um der Kernel-Zeile etwas hinzuzufügen, besteht darin, den gewünschten Kernel-Parameter der Variablen GRUB_CMDLINE_LINUX_DEFAULT in der Datei /etc/default/grub hinzuzufügen:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

Wenn Sie dies zu /etc/default/grub hinzugefügt haben, führen Sie den folgenden Befehl aus, um Ihren grub.cfg neu zu generieren:

Sudo grub-mkconfig -o /boot/grub/grub.cfg

Wenn Sie stattdessen ipv6.disable_ipv6=1 hinzufügen, bleibt der IPv6-Stapel funktionsfähig, es werden jedoch keinem Ihrer Netzwerkgeräte IPv6-Adressen zugewiesen.

OR

Um IPv6 über sysctl zu deaktivieren, fügen Sie Folgendes in Ihre /etc/sysctl.conf -Datei ein:

net.ipv6.conf.all.disable_ipv6 = 1

Vergessen Sie nicht, alle IPv6-Hosts in Ihrer /etc/hosts -Datei zu kommentieren:

#::1        localhost.localdomain   localhost

NOTE

für die sysctl-Methode ist möglicherweise ein Neustart erforderlich, und für den Kernel-Line-Ansatz ist ein Neustart unbedingt erforderlich.

OR

So deaktivieren Sie ipv6 vorübergehend :

sysctl -w net.ipv6.conf.all.disable_ipv6 = 1

Um vorübergehend zu aktivieren:

sysctl -w net.ipv6.conf.all.disable_ipv6 = 0

Wenn Sie also ipv6 unter einer bestimmten Bedingung deaktivieren müssen, schreiben Sie irgendwo ein Bash-Skript wie folgt:

#!/bin/bash
ipv6_disabled="$(sysctl net.ipv6.conf.all.disable_ipv6 | awk '{print $NF}')"
if (connected_to_vpn &> /dev/null); then
  (($ipv6_disabled)) || sysctl -w net.ipv6.conf.all.disable_ipv6=1
else
  (($ipv6_disabled)) && sysctl -w net.ipv6.conf.all.disable_ipv6=0
fi

NOTE

Möglicherweise müssen Sie auch für diese Methode alle IPv6-Hosts in Ihrer /etc/hosts -Datei deaktivieren, so wie ich es in der vorherigen Methode empfohlen habe.

14
Alexej Magura

Sie können ipv6 auf Clientebene für einen bestimmten Netzwerkmanager deaktivieren Verbindung, indem Sie die IPv6-Option ipv6.method auf "Ignorieren" setzen.

// SOP: Stelle meine LAN-Verbindung mit der festen IP 192.168.0.95 zu Ethernet wieder her. `` ``

nmcli connection delete lan-ethernet
nmcli connection add con-name lan-ethernet \
    ifname enp0s31f6 \
    type ethernet \
    ip4 192.168.0.95/24  gw4 192.168.0.1

nmcli connection modify lan-ethernet  ipv6.method "ignore"
nmcli connection modify lan-ethernet  ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up lan-ethernet
sleep 1
nmcli device status
nmcli connection show
ifconfig enp0s31f6

`` ``

5
Rolf

Ich bin auf Ubuntu 16.04.03 LTS und verbinde mich über PiVPN mit einem Pi-Hole-Server.

So habe ich IPv6 beim Herstellen einer VPN-Verbindung über den Network Manager automatisch ein- und ausgeschaltet:

  1. Erstellen Sie ein Skript in /etc/NetworkManager/dispatcher.d:

    $ Sudo vi /etc/NetworkManager/dispatcher.d/99vpn-ipv6-switch
    
  2. Fügen Sie der Datei den folgenden Inhalt hinzu (ändern Sie den Inhalt entsprechend Ihren Anforderungen):

    #!/bin/sh
    # Network Manager Dispatcher Hook:
    # enables/disables ipv6 on vpn-down/vpn-up respectively
    #
    # Copyright (c) 2017 ooknosi
    # Apache License 2.0
    
    # Args
    INTERFACE="$1"
    ACTION="$2"
    
    case $ACTION in
        vpn-up)
        # vpn connected; disable ipv6
        sysctl -w net.ipv6.conf.all.disable_ipv6=1
        ### UNCOMMENT AND EDIT BELOW IF NECESSARY
        ## add pi-hole nameserver
        #echo -n "nameserver 192.168.1.1" | /sbin/resolvconf -a "tun0.openvpn"
        ### UNCOMMENT AND EDIT ABOVE IF NECESSARY
        ;;
    
        vpn-down)
        # vpn disconnected; enable ipv6
        sysctl -w net.ipv6.conf.all.disable_ipv6=0
        ### UNCOMMENT AND EDIT BELOW IF NECESSARY
        ## remove pi-hole nameserver
        #/sbin/resolvconf -d "tun0.openvpn"
        ### UNCOMMENT AND EDIT ABOVE IF NECESSARY
        ;;
    esac
    
    exit 0
    
  3. Machen Sie das Skript ausführbar:

    $ Sudo chmod 755 /etc/NetworkManager/dispatcher.d/99vpn-ipv6-switch
    

Das ist es. Ich musste mein Pi-Hole-DNS manuell hinzufügen, da ein dnsmasq -Fehler die korrekte Aktualisierung von resolv.conf verhinderte. Ändern Sie daher die angezeigten Zeilen, wenn Sie feststellen, dass Ihr DNS leckt.

0
ooknosi

Ich denke, es ist weniger aufdringlich, IP6 in der Client-Datei zu deaktivieren (edit client_conf_file.ovpn), die den Kernel-TCP-Stack modifiziert.

Öffne deine conf_file.ovpn und füge folgende Zeilen hinzu:

#disable ipv6
#https://community.openvpn.net/openvpn/ticket/849
pull-filter ignore "ifconfig-ipv6 "
pull-filter ignore "route-ipv6 "

Ich habe es versucht und danach verschwindet das ipv6.

Vor. Ich führe ip a |grep global aus und das Ergebnis ist:

    inet 192.168.43.39/24 brd 192.168.43.255 scope global dynamic noprefixroute wlan0
    inet 10.8.0.6/24 brd 10.8.0.255 scope global tun0
    inet6 2a00:1630:66:16::1004/64 scope global

Nach. Ich führe ip a |grep global aus und das Ergebnis ist:

    inet 192.168.1.14/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
    inet 10.8.0.7/24 brd 10.8.0.255 scope global tun0
0
Em50L

Bearbeiten Sie das OpenVPN-Profil in NetworkManager, öffnen Sie die Registerkarte IPv6 und fügen Sie manuell eine Route hinzu:

Adresse: 2000 Präfix: 3 Gateway: 0100 :: 1

2000 ::/3 erfasst alle öffentlich routbaren IPv6-Adressen. 0100 ::/64-Präfix ist ein spezielles Präfix zum Verwerfen von Datenverkehr. Im Wesentlichen senden Sie den gesamten IPv6-Datenverkehr an ein nicht vorhandenes Gateway.

Vorteil: einfach und vollautomatisch.

Nachteil: Einige Apps, insbesondere Befehlszeilentools, greifen möglicherweise nicht so schnell auf IPv4 zurück, wie man es gerne möchte, wenn diese Methode verwendet wird.

0
Niels