#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アドレスがないか疑い、原因を特定することにしました。
何が原因か特定する
-
ifconfig
またはip addr
を行い、現状のIP使用状況を確認
inet addr:
と記載されている部分を確認し、現状使用しているIPの状況を見る。 -
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
繋がる.
そして、平和が訪れた。