我刚刚在一个要安装在数据中心的服务器上安装了CentOS6.3,但是无法获得名称解析/ curl。
我知道这是因为它试图使用ipv6,因为ping google.com
工作,curl -4 google.com
工作,但curl google.com
不工作。
我从接口中删除了ipv6入口,它没有改变任何东西。
这是非常有问题的,因为像yum
这样的大多数系统工具目前在名称解析方面都失败了。像火狐这样的浏览器之所以能工作,是因为它们可能使用另一种工具来进行名称解析,而不是curl
使用的工具。
通过完全禁用ipv6,我设法在工作站上修复了这个问题,下面的教程是这一个 / /etc/hosts
中的硬编码名称解析。但是,由于我在这里配置了一台稍后将安装在远程数据中心中的服务器,所以我不想搞砸,理解正在发生的事情,并正确地修复它。此外,我将面临同样的问题,更多的服务器来,所以我将非常感谢您的帮助,以了解这个问题和如何解决它。
如果需要的话,我很乐意提供更多的信息来帮助理解正在发生的事情。
当前的网络配置是一个小型企业网络,很久以前配置了一台DNS服务器(让我们称之为A)。dig google.com
和dig -4 google.com
都被and拒绝。但是,对于我的工作站( curl
正在工作)也是如此(是的,它们都使用相同的and服务器)。实际上,这个错误的服务器和我的工作站在/etc/resolv.conf
中有多个名称服务器,第二个服务器对它们都很好,所以如果我从我的resolv.conf
中删除A,一切都很好!
致以敬意,
奥利维尔
发布于 2012-08-31 16:15:56
我用下面的诊断过程解决了这个问题,它可以在处理名称解析问题和ipv6时应用
dig google.com
和dig -4 google.com
,在同一网络上测试另一台没有此问题的计算机。/etc/resolv.conf
中的第一个名称服务器没有配置为ipv6。把它拿出来然后再试一次。一个cal还使用digg @nameserver google.com
测试/etc/resolv.conf
中的其他最终名称服务器,而不更改该文件。
发布于 2017-06-12 15:31:42
我必须解决这个问题,而且在Centos版本6.x (例如5.8和更高版本)之前,glibc解析器的默认行为似乎是这样的。客户端向DNS服务器询问IPv6地址(AAAA记录),而DNS服务器只有IPv4记录,它说-我没有它(NX)。然后客户再次请求这5次得到相同的答案,直到那时说-嗨服务器,给我的IPv4地址。然后服务器提供了A记录,客户端感到满意。在我的网络中,这整个舞蹈是在300毫秒内完成的,所以对于最终用户来说几乎是看不见的。
这种情况在CentOS6.x中发生了变化,在这种情况下,两个查询是并行完成的-- IPv6和IPv4记录同时进行查询。如果您的DNS服务器对IPv6地址使用NX (我没有)响应,客户端完全忽略了A (IPv4)地址的有效响应,因为它在很短的时间后就出现了。因此,它再次查询DNS服务器(同时执行IPv6和IPv4查询),并在相同的情况下结束。因此,在最终放弃之后,它开始执行这些查询,将DNS搜索添加到搜索中。
在CentOS6.7中,客户端等待第二个IPv4响应并愉快地接受它,这在我的网络中大约需要15毫秒。这可能是它的相关红帽票据- 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:
inet4only选项/etc/surv.conf从未实现,https://bugzilla.redhat.com/show_bug.cgi?id=1027452
https://serverfault.com/questions/423307
复制相似问题