curl: (7) Failed to connect to x.x.x.x port xxxx: ホストへの経路がありません
表題の通りですが, 今回は, curl コマンドを実行した際に表題の様な現象に出くわしドツボにはまってしまったので, 次回を込めて書いていきたいと思います。
まず, curl コマンドを打ってみます。
curl ifconfig.io
/*===============================================================*/
[2018-09-26 00:50:37.793] curl: (7) Failed to connect to 192.168.1.110 port 3128: ホストへの経路がありません
/*===============================================================*/
Failed to connect to 192.168.1.110 port 3128となっていますね。
ようは, squid サーバにアクセスできませんでしたよということです。
192.168.1.110ローカルIPですが, 今までは正常に動いていたのでローカルIPに問題があるのに気づくまで凄く時間を要してしまいました。
現在のIPアドレスを確認してみます。
ip addr show eth0
/*===============================================================*/
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:72:16:d3 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.113/24 brd 192.168.10.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 2404:7a82:62c0:3600:ba27:ebff:fe72:16d3/64 scope global mngtmpaddr dynamic
valid_lft 2591888sec preferred_lft 604688sec
inet6 fe80::ba27:ebff:fe72:16d3/64 scope link
valid_lft forever preferred_lft forever
/*===============================================================*/
コンピュータはイーサネット接続しているので eth0 を指定しています。
inet の部分を見てみると inet 192.168.10.113/24 となっていることが確認できますね。
curl のエラー内容は, Failed to connect to 192.168.1.110 でしたね。
明らかに, 参照している IP アドレスが違うことが確認できます。
参照しているところが違うのでつながらなくて当然ですね。
curl コマンドでプロクシを介するように設定されているファイルを見ます。
grep 192.168.1.110 /etc/*
/*===============================================================*/
/etc/profile:MY_PROXY_URL="http://192.168.1.110:3128/"
/*===============================================================*/
ごり押しで検索したら結果, どうやら /etc/profile に定義されているようですね。
では, このファイルを変更してみます。
vim /etc/profile
/*===============================================================*/
MY_PROXY_URL="http://192.168.1.110:3128/ ← 削除
MY_PROXY_URL="http://192.168.10.113:3128/ ← 削除した行に追加
/*===============================================================*/
inet に表示されていた IP アドレスに書き換えます。
diff -u /etc/profile.bak20180926 /etc/profile
/*===============================================================*/
--- /etc/profile.bak20180926 2018-07-15 05:42:36.650026936 +0900
+++ /etc/profile 2018-09-26 02:53:54.843744162 +0900
@@ -76,7 +76,7 @@
unset -f pathmunge
# squid プロキシサーバを環境変数に設定する
-MY_PROXY_URL="http://192.168.1.110:3128/"
+MY_PROXY_URL="http://192.168.10.113:3128/"
HTTP_PROXY=$MY_PROXY_URL
HTTPS_PROXY=$MY_PROXY_URL
/*===============================================================*/
ちゃんと書き換えられていることが確認できますね。
設定変更した profile の適用をします。
source /etc/profile
/*===============================================================*/
出力なし
/*===============================================================*/
これで, profile の内容が適用されます。
curl の動作確認
curl -v ifconfig.io
/*===============================================================*/
* Rebuilt URL to: ifconfig.io/
* Uses proxy env variable http_proxy == 'http://192.168.10.113:3128/'
* Trying 192.168.10.113...
* TCP_NODELAY set
* Connected to 192.168.10.113 (192.168.10.113) port 3128 (#0)
> GET http://ifconfig.io/ HTTP/1.1
> Host: ifconfig.io
> User-Agent: curl/7.61.1
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 OK
< Date: Tue, 25 Sep 2018 17:57:27 GMT
< Content-Type: text/plain; charset=utf-8
< Content-Length: 16
< Set-Cookie: __cfduid=da22f21666c290c3791ae6a454a2fb9b51537898247; expires=Wed, 25-Sep-19 17:57:27 GMT; path=/; domain=.ifconfig.io; HttpOnly
< Server: cloudflare
< CF-RAY: 45ff5f8d2442a5a8-NRT
< X-Cache: MISS from unknown
< X-Cache-Lookup: MISS from unknown:3128
< Connection: keep-alive
<
グローバル IP が表示される
* Connection #0 to host 192.168.10.113 left intact
/*===============================================================*/
192.168.10.113:3128/ ちゃんと, inet の IP アドレスになっていることが確認できました。プロクシへの接続も正常に行えているようです。