Edited at

curl: (7) Failed to connectではまった話

More than 3 years have passed since last update.


curl: (7) Failed to connectでハマッタ話

curl: (7) Failed to connect ~~~~~~~ No Route to host とか怒られました。

結論から言うと、proxyで参照しているipとDockerでブリッジしているipが競合していたからでした。

1時間程度ハマッてしまったので、同様の現象が起こってしまった人のためにメモを残しておきます。


現状把握


ping www.google.com

pingコマンドでは、正常どおり動いていることを確認。

curl www.google.com

curlコマンドでは、curl: (7) Failed to connnect '設定しているproxy'になることを確認。

私の場合、指定したproxyで接続できないことがわかる。


そこで、自分の指定したproxyのIPアドレス以外に競合するIPアドレスがないか疑い、原因を特定することにしました。


何が原因か特定する




  1. ifconfigまたはip addrを行い、現状のIP使用状況を確認

    inet addr:と記載されている部分を確認し、現状使用しているIPの状況を見る。



  2. nslookup '設定しているproxy'を行い、IPアドレスを調べます。

    ビンゴ!今回はDockerでブリッジした時のIPアドレスとダブっているので、競合しているようです。

    (ちなみにrouteで見るのも当然OK)

一応、確認は大切です。競合していたIPアドレスにアクセスできるかどうか、確認します。

ping '競合しているIP'  

繋がりません。IPアドレスの競合によりアクセスできないことが分かります。


解決策に向けて


DockerでブリッジしているIPアドレスを変更します。(ここにトラップあり)

とりあえず、本当にdocker側のIPがダブっているか確認します。

docker network lsで使用一覧をみる。

docker network inspect templates_defaultでデフォルトのテンプレをみる。

こいつが競合しているようなので、docker network rm templates_defaultで削除する。

動作確認。curl www.google.com。動いた良かった・・・

めでたし。めでたし?

トラップカード発動!!

新しく、dockerでcretaeすると同様の現象が起きます。

やってみましょう.

docker network create sampleで作成

docker network inspect sampleでIPアドレスをみる。

IPダブってる。ふざけ・・・ん。

では、このトラップを華麗に解決しましょう。

とりあえず、作成してしまったゴミ(sample)をデリートしましょう。


docker network rm sample

そして、使用しない用という意味で'unused'を作りましょう。

docker network create unused

docker network inspect unused

docker network create sample

docker network inspect sampleするとIPアドレスがずれている.


どうやらDockerでcreateする度にIPアドレスがずれていく仕様なのかな?

まぁ、メデタシ。 (いらないから、忘れずにdocker network rm sampleしておきましょう)

最後の仕上げとして、もともとDockerでブリッジしていたヤーツの使用しているipをデリート。

sudo ip l del ブリッジ名  

curl www.google.com

繋がる.

そして、平和が訪れた。