Debian 双栈网络时开启 IPv4 优先

 本文理论上适合任何 Linux 系统,其他系统未经测试,请自行测试使用。

背景介绍

双协议栈技术就是指在一台设备上同时启用 IPv4 协议栈和 IPv6 协议栈,这样就可以同时使用 IPv4 和 IPv6 的网络。

所有现代化的操作系统和浏览器均会以 IPv6 优先,只有 IPv6 无法访问的时候才会尝试访问 IPv4,某些特定的应用和场景下,我们并不想要 IPv6 优先,这时候就需要修改一些配置文件让 IPv4 优先。

修改 /etc/gai.conf

在 Debian 等 Linux 系统下,有一个 /etc/gai.conf 文件,用于系统的 getaddrinfo 调用,默认情况下,它会使用 IPv6 优先,如果您安装了 curl 并且本地支持 IPv6,那么可以使用 curl ip.sb 测试:

root@debian ~ # curl ip.sb
2001:db8::2

效果等同于 curl ip.sb -6

如果你不想使用 IPv6 优先,可以在这个文件中找到:

#precedence ::ffff:0:0/96  100

取消注释,修改为:

precedence ::ffff:0:0/96  100

一句话命令:

sed -i 's/#precedence ::ffff:0:0\/96  100/precedence ::ffff:0:0\/96  100/' /etc/gai.conf

此时再使用 curl ip.sb 测试

root@debian ~ # curl ip.sb
192.0.2.2

效果等同于 curl ip.sb -4

有时候又会需要强制 IPv6 优先(怎么有些系统和用户那么奇怪?),因为目前 IANA 分配的公网 IPv6 还未进行到 3000:0000::/4,所以我们只要把这段之前的 IPv6 加到优先级列表即可,加入这两行 label 的优先级:

label 2002::/16    1
label 2001:0::/32   1

禁用 IPv6

有一些极端情况下,我们可能需要禁止系统的 IPv6 功能,这时候就需要修改 /etc/sysctl.conf 文件,首先找到你的网卡名称,这里以 eth0 为例,然后加入如下内容:

net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

如果需要其他网卡则更改或添加 net.ipv6.conf.eth0.disable_ipv6 = 1 即可。

一句话命令

cat >> /etc/sysctl.conf << EOF
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
EOF

注意 cat 命令后的 >> 即为添加文件内容,如果使用 > 则是覆盖文件内容。

然后使用 sysctl -p 来重新加载配置文件,此时查看 ip a 就可以发现 IPv6 已经被禁止了。

使用前,我们可以看到无论是本地还是公网网卡都有 inet6,即都有 IPv6 地址:

image.png

使用后,无论本地还是公网网卡均无 IPv6 地址:

image.png

其他系统和软件

Windows 下请参考这篇回答

Firefox 下打开 about:config 然后把 network.dns.disableIPv6 改成 true 即可禁止 Firefox 请求 IPv6

Debian 双栈网络时开启 IPv4 优先
无责任编辑
Showfom
发布时间
Feb 10th, 2022
版权协议

评论

此博客中的热门博文

Clash Verge系列使用最佳实践

X-UI 安装使用教程,支持多协议多用户的 Xray 可视化面板

非 root 用户自建 v2ray 梯子 (serv00-vmess)

使用一键脚本,部署 Hysteria 2(歇斯底里)协议节点-尚未完成小火煎的配置

Telegram RSS机器人-Flowerss bot比较全面的安装教程

使用x-ui面板中转流量解锁流媒体-服务器端分流节点

最新11个可用的TG代理,请收藏!

Serv00搭建各种服务

VPS挂机流量

X-for-Serv00 让你的 Serv00 节点获得更好的体验