惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
博客园 - Franky
罗磊的独立博客
G
Google Developers Blog
The GitHub Blog
The GitHub Blog
P
Proofpoint News Feed
Recent Announcements
Recent Announcements
V
V2EX
F
Fortinet All Blogs
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
U
Unit 42
GbyAI
GbyAI
A
About on SuperTechFans
WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
D
DataBreaches.Net
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MongoDB | Blog
MongoDB | Blog

烧饼博客

【收】溢价 60 收 Vmiss la tri - 交易 - 烧饼论坛 新人报道 - 综合 - 烧饼论坛 关于本地自建大模型想听听大佬们的意见 - 综合 - 烧饼论坛 现在 ChatGPT 哪个区的价格最划算? - AI - 烧饼论坛 无聊, 氵个帖 - 综合 - 烧饼论坛 我看用户数量还没我的 id 大 - 综合 - 烧饼论坛 突然来到了这里。新人报道 - 综合 - 烧饼论坛 新人报道哈,水下 - 综合 - 烧饼论坛 来的早才能 ID 好 - 综合 - 烧饼论坛 新人报到,初来乍到 - 综合 - 烧饼论坛 祝贺烧饼论坛开业大吉,又多了一个好去处 - 综合 - 烧饼论坛 这个社区这么火吗 🔥🔥🔥🔥我在隔壁社区都能看见有人在求邀请码 - 综合 - 烧饼论坛 2026-8-21 今日论坛词云 - 综合 - 烧饼论坛 有懂机械硬盘行情的家人吗 - 硬件 - 烧饼论坛 目前最强核显是不是 8700G? - 硬件 - 烧饼论坛 lao1.me 社区祝贺烧饼论坛开业 - 综合 - 烧饼论坛 之前注册过 wo.sb,不知道现在这个域名在谁手里 - 综合 - 烧饼论坛 大家在哪里看见这个网站的? 留念一下 - 综合 - 烧饼论坛 大家都是从哪找来的这里鸭? - 综合 - 烧饼论坛 收 hostdzire 的 LAX/SFO 三年付 - 交易 - 烧饼论坛 新人报道 - 综合 - 烧饼论坛 这论坛有力气 - 综合 - 烧饼论坛 蓝色论坛风格自定义 css - 综合 - 烧饼论坛 新人报到,这域名,有实力。😥 - 综合 - 烧饼论坛 agents ci 智能体社区祝贺烧饼论坛成立!!!!! - 综合 - 烧饼论坛 刚来,发帖测试一下 - 综合 - 烧饼论坛 sb 论坛 vip 限量开启 - 综合 - 烧饼论坛 codex 要发重置卡啦! - AI - 烧饼论坛 【油猴脚本】快来领取你的烧饼小人 - 技术 - 烧饼论坛 大佬们快多分享一些自定义 CSS 吧! - 综合 - 烧饼论坛
Debian 双栈网络时开启 IPv4 优先
Showfom · 2022-02-11 · via 烧饼博客
Debian 双栈网络时开启 IPv4 优先

本文原理适用于大多数 Linux 系统,其他系统尚未测试,请读者自行验证。

#背景介绍

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

现代操作系统和浏览器通常会优先使用 IPv6,只有当 IPv6 无法访问时,才会回退到 IPv4。但在某些特定的应用或场景中,我们可能更希望系统优先使用 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 等效。

从 Debian 13 开始,curl (8.14.1) 默认强制使用 IPv6。因此,如果希望测试本地出口公网 IP,可以改用 wget

root@debian ~ # wget -qO- http://ip.sb
2001:db8::2

效果等同于 wget -qO- http://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

从 Debian 13 开始的 curl (8.14.1) 会强制 IPv6 优先,所以我们可以使用 wget 命令:

root@debian ~ # wget -qO- http://ip.sb
192.0.2.2

效果等同于 wget -qO- http://ip.sb -4

某些情况下,你可能又需要强制启用 IPv6 优先(是的,有些系统和用户的需求确实有点奇怪😅),因为目前 IANA 分配的公网 IPv6 还未进行到 3000:0000::/4,所以我们只要把这段之前的 IPv6 加到优先级列表即可,加入这两行 label 的优先级:

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

#禁用 IPv6

有一些极端情况下,我们可能需要禁止系统的 IPv6 功能,这时候就需要添加或修改 /etc/sysctl.d/local.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

若需对其他网卡禁用 IPv6,只需将 eth0 替换为对应网卡名称即可。

一句话命令

cat >> /etc/sysctl.d/local.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 --system 重新加载配置文件。此时查看 ip a,即可发现 IPv6 已被禁用。

下图为修改前后的对比示例:

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

image.png

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

image.png

#其他系统和软件

Windows 系统可参考这篇回答

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