在 Linux 系统中,网络协议栈的优先级由 glibc 的配置文件 /etc/gai.conf 控制,主要通过 precedence 参数来决定是 IPv4 优先还是 IPv6 优先。
# 查看当前优先级的方法
# 1. 检查 /etc/gai.conf 配置
使用以下命令查看 gai.conf 文件:
cat /etc/gai.conf |
在文件中查找以下内容:
#precedence ::ffff:0:0/96 100 |
- 如果这一行被注释(以
#开头),表示默认情况下 IPv6 优先。 - 如果这一行被取消注释(去掉
#),表示 IPv4 优先。
# 2. 测试当前优先级
可以通过 ping 或 curl 等工具测试实际的网络协议优先级。
# 使用 ping :
ping -6 google.com # 强制使用 IPv6 | |
ping -4 google.com # 强制使用 IPv4 |
# 使用 curl :
curl -6 ifconfig.co # 强制使用 IPv6 | |
curl -4 ifconfig.co # 强制使用 IPv4 |
如果没有强制指定协议,查看系统默认使用的协议即可判断优先级。
# 修改优先级的方法
# 1. 设置 IPv4 优先
编辑 /etc/gai.conf 文件:
sudo nano /etc/gai.conf |
取消注释以下行(去掉 # ):
precedence ::ffff:0:0/96 100 |
保存并退出后,系统将优先使用 IPv4。
# 2. 设置 IPv6 优先
确保 gai.conf 中的以下行被注释(添加 # ):
#precedence ::ffff:0:0/96 100 |
# 3. 应用更改
无需重启, gai.conf 的更改会立即生效。
# 验证修改是否生效
可以再次使用 ping 或 curl 测试默认的协议优先级,也可以通过以下命令查看:
getent ahosts google.com |
输出中第一个显示的 IP 地址类型即为当前的优先协议(IPv6 或 IPv4)。