在 Linux 上禁用 IPv6

在 Linux 上禁用 IPv6

从网络管理器启用 VPN 连接会自动将 IPv6 地址添加到 DHCP 有线连接,即使在设置中禁用它也是如此。这会导致 VPN 泄漏所有针对 IPv6 地址的 DNS 地址查询。

我怎样才能阻止这种行为?

山姆

答案1

这篇详细的博客文章可能会有很大帮助:https://aaronhorler.com/articles/openvpn-17.10-dns-leak.html

以下是他们提供的解决方案:

  1. 安装更新-SYSTEMD-由 JONATHANIO 解决。更新系统已解决 是一个辅助脚本,可在连接到 OpenVPN 服务器时直接更新系统的 DNS 设置,并在断开连接时重置它们。
    安装说明如下这里,但为了简单起见,我将重复我所做的。
    请注意,我已经分叉此存储库并使用 UFW 添加了终止开关功能。如果您对终止开关感兴趣,可以使用我的 fork。
    克隆存储库并编译。

    sudo apt update
    sudo apt install git make openvpn
    git clone https://github.com/jonathanio/update-systemd-resolved.git
    cd update-systemd-resolved
    sudo make
    

    确保 systemd-resolved 已启用并正在运行。

    sudo systemctl enable systemd-resolved.service
    sudo systemctl start systemd-resolved.service
    

    现在,更新 /etc/nsswitch.conf。

    sudo nano /etc/nsswitch.conf
    

    找到以 hosts: 开头的行,并按如下所示进行更改。

    hosts: files resolve dns myhostname
    


  2. 更改您的 OPENVPN 配置文件。OpenVPN 配置文件通常使用 .ovpn 文件扩展名,用于连接到特定服务器。
    找到它,然后在文本编辑器中打开它。

    nano example.ovpn
    

    添加以下行。

    dhcp-option DNSSEC allow-downgrade
    dhcp-option DOMAIN-ROUTE .
    
    script-security 2
    setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    up /etc/openvpn/scripts/update-systemd-resolved
    down /etc/openvpn/scripts/update-systemd-resolved
    down-pre dhcp-option
    

    DNSSEC allow-downgrade将开启DNSSEC如果服务器支持的话。如果您知道您的服务器支持 DNSSEC(并且您不想允许降级),则可以更改allow-downgradeyes
    dhcp-option DOMAIN-ROUTE .将通过 OpenVPN 指定的 DNS 服务器路由所有 DNS 请求。
    运行脚本需要所有其他行。

  3. 使用终端连接。不要使用网络管理器 (network-manager-openvpn-gnome) 连接到 OpenVPN。这将导致 DNS 泄漏。
    请改为从命令行运行 OpenVPN。

    sudo openvpn --config example.ovpn
    

    如果你担心没有收到断开连接的通知,我建议你使用我的update-systemd-resolved 的分支实现一个简单的 UFW 终止开关。
    您不再会遇到 DNS 泄漏!在这里测试

答案2

这是在基于 Debian 的发行版上实际起作用的唯一方法。

在 Linux 上禁用 IPv6

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

使能够

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

相关内容