Linux系统IPv4/IPv6双栈接入优先使用IPv4设置

背景信息

RFC3484协议定义了 IPv6 地址选择的基本规则,旨在解决当一台主机存在多个 IPv6 地址时,如何选择最佳的源地址或目标地址进行通信的问题。根据RFC3484协议,Linux默认情况下IPv6优先级高于IPv4,应用程序优先使用IPv6地址。因部分场景下IPv6的使用不一定畅通,您可以参照如下方式设置IPv4作为默认的连接方式。

操作步骤

1. 使用IPv4连接优先,不禁用IPv6。需要修改gai.conf配置文件使其生效。

    a. 编辑如下文件(如无该文件,跳转步骤c和d):

 /etc/gai.conf 

    b. 查找如下配置,将前面的 # 去掉并保存,如果前面没有 # 号表示已经更改过设置了。如果没有查找到该行直接在文件末尾添加。

 precedence ::ffff:0:0/96 100 

    c. Redhat默认没有 /etc/gai.conf 文件,可以执行如下命令,拷贝该文件后修改:

cp -p /usr/share/doc/glibc-common-2.17/gai.conf /etc/

    d. BC-Linux执行如下命令:

cp -p /usr/share/doc/glibc-common/gai.conf /etc/
注意
如无gai.conf文件,需要先执行yum install glibc-help安装glibc-help软件包。安装完成之后gai.conf文件目录为:/usr/share/doc/glibc-help/gai.conf,再将其复制到/etc/目录下。

    e. 修改完成保存生效。采用此方式,双栈情况下优先使用IPv4,同时不影响IPv6的使用。

说明
::ffff:0:0/96 为IPv4/IPv6转换地址 (IPv4-mapped IPv6 address)。
2. 如果确实不需要IPv6,可以采用如下方式禁用IPv6。

    a. 执行命令:

echo "1" > /proc/sys/net/ipv6/conf/all/disable_ipv6

    b. 如需恢复,删除掉 /proc/sys/net/ipv6/conf/all/disable_ipv6 文件即可。

本文档内容整理自移动云官方帮助中心(查看原文),仅供参考。