我刚刚安装了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 可以相关吗?
更多信息:
我用Fedora 15和Gnome。一切都很好。然后我用LXDE和XFCE尝试了Fedora 19。它们都与curl有同样的问题。
分辨率:
似乎问题与IPv6有关
1)在里面用“--ipv4”创建〜/ .curlrc。它解决了浏览器的一些问题
2)修复yum将“ip_resolve = 4”添加到/etc/yum.conf。
答案 0 :(得分:2)
使用www.youtube.com
与youtube.com
。
完整命令:
curl -v www.youtube.com
HTTP 301错误表示该页面已永久移动到新地址。在这种情况下,它由服务器响应中的“位置”字段指示:
如果您不想担心这一点,可以指定--location
/ -L
标记,以便它会遵循HTTP重定向(301和其他),然后您可以使用{{ 1}}:
youtube.com
答案 1 :(得分:0)
可能是您的ISP的DNS问题。
尝试ping您的主DNS以确认其工作状态。
答案 2 :(得分:0)
在家庭局域网中的多台(但不是全部)计算机上存在同样的问题几年,并最终解决了!
对我有用:我有BT(我的ISP)的WiFi路由器。如果通过DHCP提供其自己的(即网关)地址作为两个名称服务器 - 显然作为本地DNS缓存。此外,它也通过DHCP广播一个搜索域,它被硬编码为“家庭&#39; (即路由器UI无法重新配置它。)
最后,我意识到我的系统没有这个问题,禁用了搜索域使用,而新安装(并没有深度调整)的系统设备已经搜索到了家庭&#39;在/etc/resolv.conf中输入。我需要的只是指示所有本地DHCP客户端关闭搜索域功能 - 有时通过配置直接通过连接脚本:具体方法取决于您的客户端,所以我不能在这里给出一个通用的配方。
我只能猜测第一次尝试尝试搜索,例如youtube.com.home然后路由器本身拒绝它,下次本地DNS客户端查询同一个域没有添加搜索后缀很短的时间,直到它的NXDOMAIN缓存到期(即如果下一次尝试是在约15分钟之后,则再次失败)。
P.S。我在互联网上多次查找解决方案,发现很多其他人在BT路由器上报告了同样的问题,但没有提出解决方案。因此,即使这种情况与OP的问题无关,我仍然会为所有BT路由器的所有者留下我的答案。
<强>更新强>
BTW,禁用ipv6在我尝试时从未提供过帮助。是的,我确实检查了/etc/nssswitch.conf并配置了主机解析,只服从/ etc / hosts和主DNS,没有其他惊险刺激。这些方法都不是根本原因,