在双栈系统上使用网络管理器连接到 OpenVPN 服务器时如何禁用 IPv6?

Dam*_*nal 25 ipv6 network-manager vpn networking openvpn

我正在通过双栈上的 OpenVPN 网络管理器插件使用 OpenVPN 客户端(意味着为 IPv4 和 IPv6 连接配置)Ubuntu 13.10 以通过 VPN(重定向网关)重定向所有流量。它通常工作正常。

但是,由于系统首选 IPv6 这一事实,VPN 会“泄漏”,并且当连接到也可通过 IPv6 访问的站点(如 Google 或维基百科)时,浏览器会直接连接。

一种解决方案是配置 OpenVPN 服务器以提供 IPv6 连接。虽然可以使用 OpenVPN,但网络管理器插件目前不支持它。

由于 VPN 上的 IPv6 连接不是绝对必要的,我想在连接到 OpenVPN 服务器时简单地禁用客户端上的 IPv6。是否可以?如果是这样,我该怎么做?

Ale*_*ura 17

将此添加到引导加载程序中的内核行以完全禁用 IPv6:

ipv6.disable=1
Run Code Online (Sandbox Code Playgroud)

如果您使用 Grub(如果您还没有安装自己的引导加载程序,那么您正在使用 Grub),您的内核行应该如下所示:

linux /boot/vmlinuz-linux root=UUID=978e3e81-8048-4ae1-8a06-aa727458e8ff ipv6.disable=1
Run Code Online (Sandbox Code Playgroud)

向内核行添加内容的推荐方法是将所需的内核参数添加到文件中的GRUB_CMDLINE_LINUX_DEFAULT变量中/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Run Code Online (Sandbox Code Playgroud)

将其添加到 后/etc/default/grub,运行以下命令以重新生成您的grub.cfg

sudo grub-mkconfig -o /boot/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)

或者,添加ipv6.disable_ipv6=1将保持 IPv6 堆栈正常运行,但不会将 IPv6 地址分配给您的任何网络设备。

或者

要通过 sysctl 禁用 IPv6,请将以下内容放入您的/etc/sysctl.conf文件中:

net.ipv6.conf.all.disable_ipv6 = 1
Run Code Online (Sandbox Code Playgroud)

不要忘记注释掉/etc/hosts文件中的任何 IPv6 主机:

#::1        localhost.localdomain   localhost
Run Code Online (Sandbox Code Playgroud)

笔记

sysctl 方法可能需要重新启动,而内核行方法肯定需要重新启动。

或者

暂时禁用IPv6:

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

暂时启用它:

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

因此,如果您需要在给定条件下禁用 ipv6,请在以下几行的某处编写一个 bash 脚本:

ipv6.disable=1
Run Code Online (Sandbox Code Playgroud)

笔记

/etc/hosts对于此方法,您可能还需要禁用文件中的任何 ipv6 主机,就像我在上一个方法中推荐的那样。

  • 是的,好的。但是我想在使用网络管理器连接到 VPN 时禁用 IPv6,而不是在我的系统上完全杀死它。也许我应该说得更清楚。 (9认同)

小智 7

您可以通过将 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
Run Code Online (Sandbox Code Playgroud)

````

  • 不幸的是,它对 VPN 连接没有影响。 (2认同)

小智 5

我认为在修改内核 tcp 堆栈的客户端文件(编辑 client_conf_file.ovpn)中禁用 ip6 的侵入性较小。

打开conf_file.ovpn并添加以下行:

#disable ipv6
#https://community.openvpn.net/openvpn/ticket/849
pull-filter ignore "ifconfig-ipv6 "
pull-filter ignore "route-ipv6 "
Run Code Online (Sandbox Code Playgroud)

我试过了,之后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
Run Code Online (Sandbox Code Playgroud)

后。我运行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
Run Code Online (Sandbox Code Playgroud)