web-dev-qa-db-ja.com

デュアルスタックシステムでNetwork Managerを使用してOpenVPNサーバーに接続するときにIPv6を無効にする方法

デュアルスタック上のOpenVPNネットワークマネージャープラグイン(IPv4とIPv6の両方の接続用に構成されていることを意味します)Ubuntu 13.10でOpenVPNクライアントを使用して、VPN(リダイレクトゲートウェイ)経由ですべてのトラフィックをリダイレクトしています。通常は正常に機能します。

ただし、システムでIPv6が優先されるという事実により、VPNは「リーク」し、IPv6経由でも利用可能なサイト(GoogleやWikipediaなど)に接続する場合、ブラウザは直接接続します。

1つの解決策は、OpenVPNサーバーを構成してIPv6接続を提供することです。 OpenVPNで可能ですが、Network Managerのプラグインは現在サポートしていません。

VPNを介したIPv6接続は厳密に必要ではないため、OpenVPNサーバーに接続するときにクライアントでIPv6を無効にしたいだけです。可能な場合はどうすればよいですか?

20
Damn Terminal

これをブートローダーの kernel line に追加して、IPv6を完全に無効にします。

ipv6.disable=1

Grubを使用している場合(独自のブートローダーをインストールしていない場合、Grubを使用している場合)、カーネル行は次のようになります。

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

カーネル行に何かを追加するための推奨されるアプローチは、GRUB_CMDLINE_LINUX_DEFAULTファイルの/etc/default/grub変数に目的のカーネルパラメーターを追加することです。

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

/etc/default/grubに追加したら、次のコマンドを実行してgrub.cfgを再生成します。

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

または、ipv6.disable_ipv6=1を追加すると、IPv6スタックは機能し続けますが、IPv6アドレスはネットワークデバイスに割り当てられません。

OR

Sysctlを介してIPv6を無効にするには、/etc/sysctl.confファイルに次を配置します。

net.ipv6.conf.all.disable_ipv6 = 1

/etc/hostsファイル内のIPv6ホストをコメント化することを忘れないでください:

#::1        localhost.localdomain   localhost

NOTE

sysctlメソッドには再起動が必要な場合があり、カーネルラインアプローチには明確に再起動が必要です。

OR

一時的にipv6を無効にするには:

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

一時的に有効にするには:

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

そのため、特定の条件でipv6を無効にする必要がある場合は、次の行に沿ってbashスクリプトを記述します。

#!/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

前の方法でお勧めしたように、この方法でも/etc/hostsファイルのipv6ホストを無効にする必要があるかもしれません。

14
Alexej Magura

IPv6オプションipv6.methodを「無視」に設定することにより、特定のネットワークマネージャーのクライアントレベルでipv6を無効にできます接続

// SOP:固定IP 192.168.0.95を使用してイーサネットへのLAN接続を再作成します。 ``

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

私はUbuntu 16.04.03 LTSで、PiVPNを介してPi-Holeサーバーに接続しています。

これは、Network Managerを介してVPNに接続するときにIPv6を自動的にオンおよびオフにするために行ったことです。

  1. /etc/NetworkManager/dispatcher.dでスクリプトを作成します。

    $ Sudo vi /etc/NetworkManager/dispatcher.d/99vpn-ipv6-switch
    
  2. 次のコンテンツをファイルに追加します(要件に合わせてコンテンツを変更します)。

    #!/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. スクリプトを実行可能にします。

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

それでおしまい。 resolv.confが正しく更新されないdnsmasqバグのため、Pi-Hole DNSを手動で追加する必要があったため、DNSがリークしている場合は、示されている行を変更します。

0
ooknosi

カーネルtcpスタックを変更するクライアントファイルでip6を無効にする(client_conf_file.ovpnを編集する)方が、邪魔になりにくいと思います。

Conf_file.ovpnを開き、次の行を追加します。

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

私はそれを試してみた後、ipv6は消えます。

前。 ip a |grep globalを実行すると、結果は次のとおりです。

    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

後。 ip a |grep globalを実行すると、結果は次のとおりです。

    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

NetworkManagerでOpenVPNプロファイルを編集し、IPv6タブを開いて、手動でルートを追加します。

アドレス:2000プレフィックス:3ゲートウェイ:0100 :: 1

2000 ::/3は、すべてのパブリックルーティング可能なIPv6アドレスをキャプチャします。 0100 ::/64プレフィックスは、トラフィックの破棄に指定された特別なプレフィックスです。基本的に、存在しないゲートウェイにすべてのIPv6トラフィックを送信します。

利点:簡単で完全に自動化されています。

欠点:一部のアプリ、つまりコマンドラインツールは、この方法を使用した場合に望むほど速くIPv4にフォールバックしない場合があります。

0
Niels