我只是在服务器上安装了CentOs 6.3,以便安装在数据中心,但无法获得名称parsing/curl工作。
我知道这是因为它试图使用ipv6,因为ping google.com作品, curl -4 google.com作品,但不curl google.com 。
我从接口删除了ipv6地址,它不会改变任何东西。
这是非常有问题的,因为像yum这样的大多数系统工具目前在名称parsing时失败了。 像Firefox这样的浏览器是可以使用的,因为它们可能使用另一个名字parsing工具而不是curl使用的工具。
我设法通过完全禁用ipv6来解决这个问题,例如/etc/hosts 这个 / hardcoding名称parsing这样的教程。 但是因为我在这里configuration一个稍后将被安装在远程数据中心的服务器,所以我想不要搞砸,理解正在发生的事情并且正确地修复它。 此外,我将面对同样的问题,更多的服务器来,所以我很感激你的帮助,理解这个问题,以及如何解决它。
如果需要帮助了解正在发生的事情,我会很乐意提供更多的信息。
目前的networkingconfiguration是一个小型的企业networking,很久以前configuration了一个DNS服务器(我们称之为A )。 dig google.com和dig -4 google.com都被A DNS拒绝。 但是,这也是我的工作站curl工作(是的,他们都使用相同的 DNS服务器)。 事实上,这个故障的服务器和我的工作站在/etc/resolv.conf有多个名称服务器,第二个工作正常,所以如果我从resolv.conf删除A ,一切正常!
问候,
奥利维尔
我用下面的诊断过程解决了这个问题,可以在处理名称parsing问题和ipv6时应用
dig google.com和dig -4 google.com ,在有这个问题的机器和另一个在同一个networking上没有这个问题。 /etc/resolv.conf中的第一个名称服务器没有为ipv6configuration。 删除它并重新testing。 一个cal还使用digg @nameserver google.com来testing/etc/resolv.conf的其他最终名称服务器,而不更改此文件。
我不得不解决这个问题,似乎在Centos版本6.x之前(比如5.8和更早版本),glibc DNSparsing器的默认行为就是这样。 客户端询问DNS服务器的IPv6地址(AAAAlogging)和DNS服务器只有IPv4logging它说 – 我没有它(NX)。 然后客户端再次请求了这5次得到相同的答案,直到然后说 – 嘿服务器,给我的IPv4地址。 然后服务器提供了A的logging,客户满意。 在我的networking中,这整个舞蹈是在300毫秒以内完成的,所以对于最终用户来说几乎是不明显的。
这在CentOS 6.x中发生了变化,两个查询并行完成 – 同时查询IPv6和IPv4logging。 如果您的DNS服务器使用NX(我没有)为IPv6地址进行响应,则客户端完全忽略了使用A(IPv4)地址的有效响应,因为它稍后会有一小部分时间。 所以它再次查询DNS服务器(同时进行IPv6和IPv4查询),并在相同的情况下结束。 因此,在最终放弃之后,通过将DNSsearch添加到search中开始执行这些查询。
这已经在Centos 6.7中得到了修复,客户端等待了第二个IPv4响应,并高兴地接受了这个响应,这在我的networking中需要大约15毫秒。 也许这是相关的Redhat门票 – https://bugzilla.redhat.com/show_bug.cgi?id=845218 (如果对AF_UNSPEC的两个响应之一失败, 请不要失败):
rpm -q --changelog glibc | sed -n '0,/2.12-1.132/p' | grep AF_UNSPEC - Do not fail if one of the two responses to AF_UNSPEC fails (#845218).
现在,这张票是受限制的,所以这里有可能是上游补丁: https : //sourceware.org/git/gitweb.cgi?p= glibc.git;h =16b293a7a6f65d8ff348a603d19e8fd4372fa3a9
有关详细信息,请参阅受影响的服务器列表:
SUSE Linux进行比较:
/etc/resolv.conf的inet4only选项从未实现, https : //bugzilla.redhat.com/show_bug.cgi?id=1027452