「failed: ホストへの経路がありません」、「エラー 502: Cannot Connect」となりwgetが失敗する原因と解決方法の1つ
Webサイトから何らかのファイルをダウンロードしようと思って、Linuxコンソールで
wget https://nobuneko.com/blog/index.html
というコマンドを実行すると、
「failed: ホストへの経路がありません」
あるいは
「エラー 502: Cannot Connect」
といったエラーになり、wgetに失敗する場合がある。
そのような場合は、なんと、そのWebサイトはブラウザでの閲覧すらできない(ことがほとんどだと思う)。
接続不可の原因を確認するためには、
1)ネットワーク内のファイアウォールで80番ポートでの通信(HTTP接続)が許可されているかどうか
2)Webサイトをホスティングしているサーバのファイアウォールの設定を確認し、80番ポートでの通信(HTTP接続)が許可されているかどうか
を確認する。
1)に問題がなければ、2)の確認になる。
2)は、サーバのOSごとに確認方法が異なる。
Windowsのファイアウォール機能は、「コントロールパネル」などから探して確認する。サードパーティのセキュリティソフトがインストールされている場合は、そちらの設定も問題がないかどうかを確認する必要がある。
Linuxのファイアウォール機能は、iptablesが有効になっていないかどうかを確認すると手っ取り早い。
iptablesの機能が有効になっているかどうかは、「/etc/rc.d/init.d/iptables status」というコマンドで確認できる。
《CentOS 6.2でのiptablesの実行状況確認例》
<iptablesの機能が有効の場合の例>
[root@nobuneko home]# /etc/rc.d/init.d/iptables status
テーブル: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
<iptablesの機能が無効の場合の例>
[root@nobuneko home]# /etc/rc.d/init.d/iptables status
iptables: ファイアウォールが稼働していません。
iptablesの設定がよく分からない場合、iptablesの設定によりwgetが失敗しているかどうかを切り分けたいだけであれば、
/etc/rc.d/init.d/iptables stop
とコマンドを叩いてiptablesを無効化した上で、wgetを再度試してうまくいくかどうかを確認すると良いかもしれない。
CentOS 6.2インストール後のデフォルト状態では、iptables機能は有効になっており、外部からのHTTP接続は遮断されているようなので、CentOS 6.2でApacheを運用する場合は、iptablesの機能を無効にして運用するか、
/etc/sysconfig/iptablesを編集して、
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
という行を追記して80番ポートでの接続(HTTPでの接続)を許可する設定とし、
/etc/rc.d/init.d/iptables restart
とコマンドを叩いてiptables機能を再起動する、といった方法をとることになる。