我怎么可能进行主机查找但不能进行卷曲?


20

有人看过吗?请注意,这不仅发生在google.com,而且发生在我尝试的每个域。这是无线连接(WEP),但我不确定这有什么关系:

$ curl -v google.com
# This takes about 60s to return
* getaddrinfo(3) failed for google.com:80
* Couldn't resolve host 'google.com'
* Closing connection #0
curl: (6) Couldn't resolve host 'google.com'

$ wget google.com
--2011-11-28 14:44:08--  http://google.com/
Resolving google.com... failed: Name or service not known.
wget: unable to resolve host address `google.com'

$ ping google.com
PING google.com (209.85.148.147) 56(84) bytes of data.
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=2 ttl=54 time=136 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=3 ttl=54 time=34.0 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=4 ttl=54 time=34.3 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=5 ttl=54 time=42.5 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=6 ttl=54 time=44.7 ms
64 bytes from fra07s07-in-f147.1e100.net (209.85.148.147): icmp_req=7 ttl=54 time=34.5 ms
^C
--- google.com ping statistics ---
8 packets transmitted, 6 received, 25% packet loss, time 7007ms
rtt min/avg/max/mdev = 34.063/54.376/136.026/36.758 ms


$ host google.com
google.com has address 209.85.148.106
google.com has address 209.85.148.147
google.com has address 209.85.148.99
google.com has address 209.85.148.103
google.com has address 209.85.148.104
google.com has address 209.85.148.105
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.

$ host google.com 192.168.1.201
Using domain server:
Name: 192.168.1.201
Address: 192.168.1.201#53
Aliases: 

google.com has address 209.85.148.103
google.com has address 209.85.148.104
google.com has address 209.85.148.105
google.com has address 209.85.148.106
google.com has address 209.85.148.147
google.com has address 209.85.148.99
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.

$ cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.1.201

$ cat /etc/hosts
127.0.0.1       localhost
::1             localhost

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 wlan0
127.0.0.0       127.0.0.1       255.0.0.0       UG        0 0          0 lo
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

基本上,任何应用程序,包括Firefox,都无法进行名称查找。更重要的是,如果我使wifi脱机并插入以太网电缆,一切都很好。


1
也许添加更多信息-只是卷曲吗?wget,浏览器,ping等如何?
Sandman4 2011年

我看到您标记了一个答案,但是问题和解决方案到底是什么?这是SELinux问题吗?
Belmin Fernandez

“解决方案”只是网络似乎被右击。我没有在笔记本电脑上运行任何SELinux,“网络”仅由by脚的商店购买的wifi路由器管理。这个答案是一个可以帮助我弄清楚我正在各处丢包的答案,所以我认为这是我无法解决的事情,因此给了那个家伙以功劳。为什么,您有更好的主意吗?
丹尼尔·奎因

ping用稍微不同的参数调用getaddrinfo github.com/iputils/iputils/blob/master/ping/ping.c#L574 ai_protocol = IPPROTO_UDP也许以某种方式混淆了getaddrinfo?似乎该host命令也不总是使用什么命令:unix.stackexchange.com/a/553438/8337
rogerdpack

Answers:


8

也许您已经制定了一些非常怪异和严格的SELinux(或grsecurity ...)规则?

如果不是,请尝试strace -o /tmp/wtf -fF curl -v google.com/tmp/wtf输出文件中发现正在发生的事情。


1
看起来是wifi连接本身。输出文件已包含以下内容:9344 poll([{fd=3, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
Daniel Quinn

@Daniel Quinn,您可以发布输出/tmp/wtf吗?
2011年


嗯,好像是在查询192.168.1.201。您是否可以做到“托管google.com 192.168.1.201”?基本上,专门针对您的DNS服务器进行DNS查找。
cjc 2011年

完成(将其添加到问题中)。而且效果很好-这很有意义,因为发出不带服务器参数的主机也可以正常工作。看起来它也只是实际的HTTP调用,因为ICMP(通常会删除第一个ping)起作用。
Daniel Quinn


5

检查您的/etc/nsswitch.conf。如果该hosts行说类似

hosts:      files dns

我和你一样困惑。但是如果它说像

hosts:      files

那么DNS正常运行的事实(请参阅host命令输出)将无法解决问题,它通过标准OS库(已被告知不要使用DNS)进行名称解析。


嗯 我没有想到这一点,但我只是检查了一下,并说是files dns这样:-(
Daniel Quinn

1
在我的主机上有很多东西。在我的理解中,“ dns”列在“ [NOTFOUND = return]”之后,这甚至导致在检查已配置的DNS服务器之前,系统找不到返回!将“ dns”移至未找到的东西修复我的系统之前(必须重新启动)。
trebormf

3

我遇到了同样的问题-主机,nslookup可以解决问题,curl-无法使用相同的主机名。

经过tcpdumping通信后,我发现curl尝试建立与DNS端口的TCP连接(除了UDP),该端口在我的路由器中已关闭。启用tcp端口53后,curl开始正常工作。

另一个奇怪的事情是,如果dns服务器是常规绑定安装,则不会出现此问题。如果我使用嵌入到路由器DNS服务器中的URL,则curl会突然尝试使用TCP端口,即使它已经在2毫秒之前通过UDP收到了(!)答复。我想这是错误。


1

我今天在VE(在笔记本电脑上运行)上也遇到了同样的问题,并且发现它非常令人惊讶。Dig和NSlookup可以工作,但是卷曲失败。

因此,例如:

# curl -v google.com
* getaddrinfo(3) failed for google.com:80
* Couldn't resolve host 'google.com'
* Closing connection #0
curl: (6) Couldn't resolve host 'google.com'

但是,当我在这里看到David T的帖子时,我决定尝试一下。因此,这失败了:

# curl  google.com -6
curl: (6) Couldn't resolve host 'google.com'

这样成功了:

# curl  google.com -4
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

-6指定curl使用IPv6,而-4指定使用IPv4。使用wget时出现相同的错误,因此主机上的IPv6堆栈肯定存在一些问题。

nsswitch.conf文件和其他BIND conf文件的所有其他修改均无济于事,因为此实用程序不存在此问题。


1

如果尝试为AWS EC2实例设置DNS的任何人都遇到这种情况,请确保还为该实例使用的安全组中的HTTP和HTTPS启用IPv6规则(:: / 0)。


0

您的卷发安装是否顺利?如果可能,请尝试重新安装curl。

尝试curl -v google.com获取更多详细输出以进行调试。

例如:

curl -v dnserror.test
* getaddrinfo(3) failed for dnserror.test:80
* Couldn't resolve host 'dnserror.test'
* Closing connection #0
curl: (6) Couldn't resolve host 'dnserror.test'

您是否获得类似的输出?


完全一样的:-(我已经更新与输出的问题。
丹尼尔·奎因

0

您的/etc/resolv.conf文件中可能存在nslookup可以容忍的错误,但是curl不容忍。

问的问题是“我怎么可能进行主机查找但不能进行卷曲?”

这是可能的,因为curl使用getaddrinfo()来解析FQDN,而nslookup则不能。相反,我相信nslookup使用其他函数或库或通过其自己的自定义代码来解析/etc/resolv.conf。我没有查看源代码来验证这一点,但是您可以通过在/etc/resolv.conf中的名称服务器令牌之前添加空格来证明这一点。nslookup可以解析此内容,但getaddrinfo()无法解析。


Example /etc/resolv.conf
 nameserver 8.8.8.8

如果您的resolv.conf出现此错误,或者nslookup可以容忍其他错误,但getaddrinfo()不能容忍此错误,那么您可以使用nslookup解析FQDN,但是您将无法在该FQDN上使用curl。

修复:以超级用户身份编辑/etc/resolv.conf并删除名称服务器行上的所有前导空格。


strace输出显示的DNS查询而无需接收答复被发送。那不支持关于解析错误的假设/etc/resolv.conf。但是,递归器可能有故障,使用其他递归器可能会有所帮助。
卡巴斯德,2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.