如何让我的系统 centos 7 主要使用 ipv4(如果可用)

如何让我的系统 centos 7 主要使用 ipv4(如果可用)

我在 AWS 机器上运行 CentOS 7。我最近启用了 IPv6,一切都工作正常 - 除了 PHP 连接请求(也来自命令行的curl)总是更喜欢使用 IPv6 而不是 IPv4。这会导致一些并不真正支持它的网站出现问题,例如向 Apple、Android 发送通知,并且一切都可以正常使用 IPv4。

如何使所有传出请求都使用 IPv4 而不是 IPv6?我也不想禁用传入的 IPv6,因为我的一些客户仅使用 IPv6。

答案1

大多数能够使用 IPv6 的程序将使用系统 DNS 解析器库报告为主机最喜欢的地址(IPv4 或 IPv6)。

可以使用该/etc/gai.conf文件调整解析器库的首选项。

优先规则在文件的这一部分中指定:

# precedence  <mask>   <value>
#    Add another rule to the RFC 3484 precedence table.  See section 2.1
#    and 10.3 in RFC 3484.  The default is:
#
#precedence  ::1/128       50
#precedence  ::/0          40
#precedence  2002::/16     30
#precedence ::/96          20
#precedence ::ffff:0:0/96  10
#
#    For sites which prefer IPv4 connections change the last line to
#
#precedence ::ffff:0:0/96  100

内置默认值作为注释值列出,但如果您指定自己的设置,则根本不会使用默认值。因此,将其添加到文件末尾:

# To prefer IPv4 over everything else
precedence ::ffff:0:0/96  100
precedence  ::1/128       50
precedence  ::/0          40
precedence  2002::/16     30
precedence ::/96          20

请注意,不可能在 IPv4 中应答使用 IPv6 到达的传入连接,反之亦然:根据 IP 和 TCP 协议的规则,任何连接尝试都必须使用发出请求的协议进行应答。

相关内容