卷曲:(6)无法解析主持人:google.com;名称或服务未知

时间:2014-07-26 05:26:41

标签: linux curl terminal fedora

当我尝试将网页加载到终端时,会出现curl: (6) Could not resolve host错误。

我在我的电脑上有互联网,并尝试从我的家庭互联网连接。所以我这里没有任何代理涉及。

[root@localhost kevin]# curl http://google.com
curl: (6) Could not resolve host: google.com; Name or service not known

clean all再次尝试,但没有幸运。

但是,如果我使用IP而不是域名,它可以正常工作。

[root@localhost kevin]# curl http://173.194.46.0

请问任何线索?

7 个答案:

答案 0 :(得分:48)

问题是:

  1. 启用IPV6
  2. DNS服务器错误
  3. 以下是我修复它的方法:

    IPV6禁用

    • 打开终端
    • 输入su并输入以超级用户身份登录
    • 输入root密码
    • 键入cd /etc/modprobe.d/将目录更改为/etc/modprobe.d/
    • 键入vi disableipv6.conf以在那里创建新文件
    • Esc + i将数据插入文件
    • 在文件上键入install ipv6 /bin/true以避免加载与IPV6相关的模块
    • 输入Esc + :,然后输入wq进行保存并退出
    • 键入reboot以重新启动fedora
    • 重启后打开终端并输入lsmod | grep ipv6
    • 如果没有结果,则表示您已正确禁用IPV6

    添加Google DNS服务器

    • 打开终端
    • 输入su并输入以超级用户身份登录
    • 输入root密码
    • 键入cat /etc/resolv.conf以检查Fedora使用的DNS服务器。这大部分都是您的调制解调器IP地址。
    • 现在我们必须找到一个功能强大的DNS服务器。幸运的是,谷歌有一个开放的DNS服务器。
    • 转到this page,找出“Google公共DNS IP地址”
    • 今天这些是8.8.8.88.8.4.4。但将来这些可能会改变。
    • 键入vi /etc/resolv.conf以编辑resolv.conf文件
    • Esc + i将数据插入文件
    • 通过在每行的开头插入#来注释文件中的所有内容。不要删除任何内容,因为将来可能会有用。
    • 在文件

      中输入以下两行

      nameserver 8.8.8.8
      nameserver 8.8.4.4

      -Type Esc + :然后wq进行保存并退出

    • 现在你已经完成了,一切正常(无需重启)。
    • 但每次重新启动计算机时,默认情况下都会替换/etc/resolv.conf。所以我会让你找到一种方法来避免这种情况。

    以下是我的博文: http://codeketchup.blogspot.sg/2014/07/how-to-fix-curl-6-could-not-resolve.html

答案 1 :(得分:6)

也许你有一些非常奇怪和限制性的SELinux规则?

如果没有,请尝试strace -o /tmp/wtf -fF curl -v google.com并尝试从/tmp/wtf输出文件中发现正在进行的操作。

答案 2 :(得分:0)

尝试nslookup google.com以确定是否存在DNS问题。 192.168.1.254是您的本地网络地址,看起来您的系统正在将其用作DNS服务器。这是你的网关/调制解调器路由器吗? 当您尝试ping google.com时会发生什么。你可以在互联网网络浏览器上浏览吗?

答案 3 :(得分:0)

我们的Linux服务器遇到了同样的问题,我们刚刚重启了PHP和Apache。 我们认为curls中的一些DNS缓存是错误的,只是重新启动PHP解决了这个问题。

答案 4 :(得分:0)

我现在有类似的问题。但更奇怪。

  • host - 作品host pl.archive.ubuntu.com
  • 挖掘 - 适用于默认和所有其他DNS的dig pl.archive.ubuntu.comdig @127.0.1.1 pl.archive.ubuntu.com
  • 卷曲 - 不起作用!但对于某些地址,它确实如此。奇怪的! Ruby,APT等等也是如此。
$ curl -v http://google.com/
*   Trying 172.217.18.78...
* Connected to google.com (172.217.18.78) port 80 (#0)
> GET / HTTP/1.1
> Host: google.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Referrer-Policy: no-referrer
< Location: http://www.google.pl/?gfe_rd=cr&ei=pt9UWfqXL4uBX_W5n8gB
< Content-Length: 256
< Date: Thu, 29 Jun 2017 11:08:22 GMT
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.pl/?gfe_rd=cr&ei=pt9UWfqXL4uBX_W5n8gB">here</A>.
</BODY></HTML>
* Connection #0 to host google.com left intact

$ curl -v http://pl.archive.ubuntu.com/
* Could not resolve host: pl.archive.ubuntu.com
* Closing connection 0
curl: (6) Could not resolve host: pl.archive.ubuntu.com

<强>启

最后我在curl上使用了strace,发现它与nscd deamon有关。

connect(4, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = 0

<强>解决方案

我重新启动了nscd服务(名称服务缓存守护程序),它帮助解决了这个问题!

systemctl restart nscd.service

答案 5 :(得分:0)

sudo systemctl restart docker对我来说,事实证明,重新启动docker守护进程可以解决DNS缓存问题。

答案 6 :(得分:-4)

我遇到了同样的问题,除了在Ubuntu VM上。结果我的wifi已断开连接。我一开始没想到要检查,因为我的主机(Windows 10)互联网工作得很好。所以我所要做的就是重新连接互联网。