2

我刚刚安装了 Fedora 19 LXDE。当我第一次为 URL 运行 curl 时,它失败了:

curl -v youtube.com
* Could not resolve host: youtube.com; Name or service not known
* Closing connection 0
curl: (6) Could not resolve host: youtube.com; Name or service not known

如果我立即重新运行此命令,它将成功。

curl -v youtube.com
* About to connect() to youtube.com port 80 (#0)
*   Trying 80.239.229.212...
* Connected to youtube.com (80.239.229.212) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: youtube.com
> Accept: */*
> 
< HTTP/1.1 301 Moved Permanently
< Date: Tue, 10 Sep 2013 20:05:20 GMT
< Server: gwiseguy/2.0
< Location: http://www.youtube.com/
< Content-Length: 0
< Content-Type: text/html
< X-XSS-Protection: 1; mode=block
< 
* Connection #0 to host youtube.com left intact

似乎如果指定了 -4 选项,一切正常。可能是什么问题?

nslookup 工作正常,分辨率没有问题。

更新:

当我针对失败的尝试运行 strace 时,我看到以下错误:

open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)

和 echo $LANG LANG=/en_US.UTF-8 有关系吗?

更多信息:
我曾经拥有带有 Gnome 的 Fedora 15。一切正常。然后我尝试了带有 LXDE 和 XFCE 的 Fedora 19。他们都对 curl 有同样的问题。

解决方案:
似乎问题与 IPv6 有关。
1) 使用“--ipv4”创建 ~/.curlrc。它解决了一些浏览器的问题。
2) 要修复 yum,将“ip_resolve=4”添加到 /etc/yum.conf。

4

3 回答 3

2

使用www.youtube.comyoutube.com..

完整命令:

curl -v www.youtube.com

HTTP 301错误意味着该页面已永久移动到新地址。在这种情况下,它由服务器响应中的“位置”字段指示:

地点:http ://www.youtube.com/

如果您不想担心这一点,您可以指定--location/-L标志,以便它遵循 HTTP 重定向(301 和其他),然后您可以使用youtube.com

curl -v -L youtube.com
于 2013-09-11T18:53:59.167 回答
0

可能是您的 ISP 的 DNS 问题。

尝试 ping 您的主 DNS 以确认其工作状态。

于 2013-09-11T18:56:58.730 回答
0

几年来我家局域网中的多台(但不是全部)计算机上都有同样的问题,终于解决了!

什么对我有用:我有来自 BT(我的 ISP)的 WiFi 路由器。如果通过 DHCP 提供自己的(即网关)地址作为两个名称服务器 - 显然作为本地 DNS 缓存工作。此外,它也通过 DHCP 广播一个搜索域,并且它被硬编码为“home”(即路由器 UI 中无法重新配置它)。

最后我意识到我的系统没有这个问题已经禁用了搜索域的使用,而新安装的(并且没有深度调整)系统仍然在 /etc/resolv.conf 中有“搜索主页”行。我所需要的只是指示所有本地 DHCP 客户端关闭搜索域功能 - 有时通过配置有时直接通过连接脚本:具体方法取决于您的客户端,所以我不能在这里给出一刀切的方法。

我只能猜测第一次尝试搜索 youtube.com.home 然后路由器本身会拒绝它,并且下次本地 DNS 客户端在不添加搜索后缀的情况下查询同一域一段时间,直到其 NXDOMAIN 缓存过期(即如果下一次尝试是在大约 15 分钟后,它会再次失败)。

PS 我在互联网上多次查找解决方案,发现很多其他人在 BT 路由器上报告了同样的问题,但没有提出解决方案。因此,即使这种情况与 OP 的问题无关,我仍然会为所有快乐的 BT 路由器所有者留下我的答案。

更新:

顺便说一句,当我尝试禁用 ipv6 时,它从来没有帮助过。是的,我确实检查了 /etc/nssswitch.conf 并将主机解析配置为仅服从 /etc/hosts 和主 DNS,没有其他刺激。这些方法都不是根本原因,

于 2014-10-17T22:49:03.757 回答