web-dev-qa-db-ja.com

curl:(6)ホストを解決できませんでした:google.com;不明な名前またはサービス

webページを端末にロードしようとすると、curl: (6) Could not resolve Hostエラーが発生します。

PCにインターネットがあり、自宅のインターネット接続から試しています。だから、私はここに関与するプロキシはありません。

[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

手がかりはありますか?

35

問題は次のとおりです。

  1. IPV6対応
  2. 間違ったDNSサーバー

修正方法は次のとおりです。

IPV6無効化

  • ターミナルを開く
  • suと入力し、入力してスーパーユーザーとしてログインします
  • ルートパスワードを入力してください
  • 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と入力し、入力してスーパーユーザーとしてログインします
  • ルートパスワードを入力してください
  • cat /etc/resolv.confと入力して、Fedoraが使用しているDNSサーバーを確認します。ほとんどの場合、これはモデムのIPアドレスになります。
  • 次に、強力なDNSサーバーを見つける必要があります。幸いなことに、Googleが管理するオープンDNSサーバーがあります。
  • このページ に移動して、「GoogleパブリックDNS IPアドレス」とは何かを調べます
  • 現在、それらは8.8.8.88.8.4.4です。しかし、将来それらは変わるかもしれません。
  • vi /etc/resolv.confと入力して、resolv.confファイルを編集します
  • ファイルにデータを挿入するには、Esc + iを押します
  • 各行の先頭に#を挿入して、ファイル内のすべてのものをコメント化します。将来的に役立つ可能性があるため、何も削除しないでください。
  • ファイルに2行以下を入力します

    ネームサーバー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

53

おそらく、非常に奇妙で制限的なSELinuxルールがいくつかありますか?

そうでない場合は、strace -o /tmp/wtf -fF curl -v google.comを試して、/tmp/wtf出力ファイルから何が起こっているのかを見つけてください。

7
Sathish

Sudo systemctl restart docker私にとっては、Dockerデーモンを再起動するとDNSキャッシングの問題が修正されたことがわかりました。

1
capital Terefe

今日も同様の問題があります。しかし、奇妙です。

  • ホスト-動作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

啓示

最終的に私はcurlでstraceを使用し、nscdデーモンへの接続であることがわかりました。

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

ソリューション

Nscdサービス(Name Service Cache Daemon)を再起動しましたが、この問題の解決に役立ちました!

systemctl restart nscd.service
0
cardil

Linuxサーバーでも同じ問題が発生し、PHPとApacheを再起動しました。 curl内のDNSキャッシュの一部が間違っていたため、PHPを再起動するだけでこれを解決できたと考えています。

0
Pascal Klein

Nslookup google.comを試して、DNSの問題があるかどうかを確認してください。 192.168.1.254はローカルネットワークアドレスであり、システムがDNSサーバーとして使用しているようです。これもゲートウェイ/モデムルーターですか? google.comにpingを実行するとどうなりますか。インターネットWebブラウザで閲覧できますか?

0
Benjamin B