Curl: (6)无法解析 host: google.com; 名称或服务未知

当我试图加载一个网页终端它给 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

有什么线索吗?

528422 次浏览

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

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

试试 nslookup google.com,看看是否有 DNS 问题。 192.168.1.254是您的本地网络地址,看起来您的系统正在使用它作为 DNS 服务器。这也是你的网关/调制解调器路由器吗? 当你尝试 ping google.com 时会发生什么? 你能在网络浏览器上浏览它吗?

问题包括:

  1. 启用 IPV6
  2. 错误的 DNS 服务器

我是这样解决的:

IPV6正在关闭

  • 打开终端
  • 键入 su并输入以超级用户身份登录
  • 输入 root 密码
  • 键入 cd /etc/modprobe.d/将目录更改为 /etc/modprobe.d/
  • 键入 vi disableipv6.conf在那里创建一个新文件
  • Esc + i将数据插入文件
  • 在文件中键入 install ipv6 /bin/true以避免加载 IPV6相关模块
  • 键入 Esc + :,然后键入 wq以保存和退出
  • 键入 reboot重新启动软呢帽
  • 重新启动后打开终端并键入 lsmod | grep ipv6
  • 如果没有结果,这意味着您正确地禁用了 IPV6

添加 Google DNS 服务器

  • 打开终端
  • 键入 su并输入以超级用户身份登录
  • 输入 root 密码
  • 键入 cat /etc/resolv.conf来检查你的 Fedora 使用什么 DNS 服务器。大多数情况下,这将是你的调制解调器 IP 地址。
  • 现在我们必须找到一个强大的 DNS 服务器。幸运的是,有一个开放的 DNS 服务器由谷歌维护。
  • 进入 这一页,找出什么是“ Google Public DNS IP 地址”
  • 现在是 8.8.8.88.8.4.4,但是将来可能会改变。
  • 键入 vi /etc/resolv.conf编辑 resolv.conf文件
  • Esc + i将数据插入文件
  • 通过在每行的开头插入 # 来注释文件中的所有内容。不要删除任何东西,因为以后可能会有用。
  • 在文件中键入以下两行

    名称服务器8.8.8.8
    域名服务器8.8.4.4

    输入 Esc + :然后输入 wq保存并退出

  • 现在您已经完成了,一切正常(不需要重新启动)。
  • 但是每次重新启动计算机时,默认情况下都会替换/etc/Resolv.conf。所以我会让你想办法避免。

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

我今天也有类似的问题,但更奇怪。

  • 主机工程 host pl.archive.ubuntu.com
  • Dig-默认工作在所有其他 DNS 的 dig pl.archive.ubuntu.comdig @127.0.1.1 pl.archive.ubuntu.com
  • Curl-不起作用! 但是对于一些地址它起作用。奇怪! 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

启示录

最后,我使用 strace的旋度,发现它是连接到 nscd后卫。

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

解决方案

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

systemctl restart nscd.service

正如答案所示,没有必要禁用 IPv6。Curl 失败的原因很简单,因为缺少 DNS 解析。

有一个班轮解决这个问题。

如果你关心 /etc/resolv.conf里面有什么,那么附上它:

echo 'nameserver 1.1.1.1' | sudo tee -a /etc/resolv.conf >/dev/null

我通常不在乎,只是替换文件的内容:

echo 'nameserver 1.1.1.1' | sudo tee /etc/resolv.conf >/dev/null

在我们的例子中,命令是通过 mail/skype 传递的,需要执行命令的人复制了一个 额外的空间

一个小时后我们找到了额外的空间,然后移除了它。

我有一个 IPV6的问题,突然出现在 wordpress 管理,curl 无法连接到 wordpress.org 等

发生意外错误。 WordPress.org 可能有问题

还有

安装失败: 下载失败。 cURL 错误28: 解析超时超过10005毫秒

我最终通过在 mu-plugins 中添加以下 php 文件进行了排序:

add_action( 'http_api_curl', function( $curl_handle ) { curl_setopt( $curl_handle, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );});

也可以在 php 中直接使用 curl,方法是在 options 数组中使用以下选项:

curl_setopt_array($curl, array(CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4));

操作系统是运行在 Power 6上的 IBM i (OS400/i5OS) v7.2,php 版本是8.1.10。有趣的是,IPV6在机顶盒上不是活动的。