如何避免curl尝试IPv6名称解析

如何避免curl尝试IPv6名称解析

当我尝试从 docker 容器获取“另一个容器名称”时,curl 首先尝试将该名称解析为 IPv6。这会导致几秒钟的延迟,因为无法通过 ipv6 访问 Web 服务器。

我删除了容器接口上的链接本地地址,并在容器的 lo 和 eth0 接口上禁用了 ipv6。 curl 仍然尝试首先将名称解析为 IPv6(除非通过curl -4 强制)。

这似乎是错误的。为什么即使禁用了 ipv6,curl 仍尝试将名称解析为 ipv6?

答案1

就我而言,全局禁用 IPv6 不起作用

我仍然看到 5 秒的“初始化”延迟。
只有-4论证有效。 (与命令相同wget

我还尝试强制 iptables 拒绝 IPV6 流量。
↪ 没有任何改变

域名系统

我的测试表明,正是名称解析导致了这种延迟。
如果我卷曲基于 IP 的 URL,它会立即完成。

奇怪的是,名称解析本身nslookup是即时的(并且不包含 IPV6 答案)

答案2

您可以通过编辑/etc/gai.conf和取消注释来更改该行为precedence ::ffff:0:0/96 100

然而,这将影响的不仅仅是curl

相关内容