目 录CONTENT

文章目录

Linux 设置 IPv6 或 IPv4 优先教程(gai.conf 配置指南)

Leu
Leu
2025-08-05 / 0 评论 / 2 点赞 / 13 阅读 / 0 字

前言

在现代 Linux 系统中,默认情况下系统会优先使用 IPv6 地址进行连接(如果网络支持),但在某些场景下,我们可能更希望系统优先使用 IPv4,或者相反。

本教程将介绍如何通过修改 gai.conf 配置文件,让你的 Linux 系统实现 IPv4 和 IPv6 之间的优先顺序切换。

📌 背景知识:地址选择机制

Linux 中网络应用程序通常通过 getaddrinfo() 进行 DNS 查询,这个函数会返回一个 IPv6 和 IPv4 地址的列表。系统根据 /etc/gai.conf 中定义的优先级来选择要连接的地址。

✅ 设置方法:编辑 gai.conf 文件

gai.conf 的完整路径是:

/etc/gai.conf

这是控制地址选择优先级的配置文件。

🔁 方案一:将 IPv4 改为 IPv6 优先

  1. 打开 gai.conf 文件:

sudo nano /etc/gai.conf
  1. 找到并取消注释(或者添加)以下内容:

precedence ::ffff:0:0/96  10

这条语句的含义是:将 IPv4 映射地址的优先级降低为 10,默认是 100。这样会让 IPv6 地址在解析时优先被选中。

🔁 方案二:将 IPv6 改为 IPv4 优先(回到默认)

  1. 同样编辑文件:

sudo nano /etc/gai.conf
  1. 将该行改回默认优先级 100(如果之前改过):

precedence ::ffff:0:0/96  100

或者如果之前是注释的,也可以取消注释该行。

✅ 测试是否生效

你可以使用 getent 命令查看 DNS 查询的地址顺序:

getent ahosts google.com

如果你看到 IPv6 地址排在前面,就说明 IPv6 优先;IPv4 在前则是 IPv4 优先。

🧪 补充测试:使用 curl 验证 IP 协议

curl -6 https://ip.sb  # 测试 IPv6
curl -4 https://ip.sb  # 测试 IPv4

你也可以直接访问 https://ip.sb 查看当前出口 IP 类型。

🚧 注意事项

  • 修改后 无需重启系统,配置立即生效。

  • 某些应用程序(如 SSH、Nginx、apt)有独立的配置选项可能会影响实际使用协议。

  • 如果你的服务器没有正确配置 IPv6 网络,设置 IPv6 优先可能导致连接变慢或失败。

🧭 结语

通过合理配置 gai.conf,你可以根据网络环境灵活选择是优先使用 IPv6 还是 IPv4。这在调试网络问题、优化访问速度,或者适配特定服务商时非常有用。

如果你在使用中遇到实际连接问题,也可以配合 Wiresharkss, netstat 等工具排查流量协议。

📌 喜欢这篇文章?欢迎分享或留言讨论你的网络配置经验!

2

评论区