2014-02-24 08:49:11 +0000 2014-02-24 08:49:11 +0000
20
20

"接続が拒否されました" vs "ホストへのルートがありません"

サーバ上でApacheサーバを稼働させています。

[root@te-srv2 ~]# ps -ecf|grep httpd
root 698 32047 TS 19 10:45 pts/24 00:00:00 grep httpd
root 32081 1 TS 19 10:16 ? 00:00:00 /usr/sbin/httpd
apache 32083 32081 TS 19 10:16 ? 00:00:00 /usr/sbin/httpd
apache 32084 32081 TS 19 10:16 ? 00:00:00 /usr/sbin/httpd
....

しかし、ローカルホストに接続しようとすると “Connection refused "と表示されます:

[root@te-srv2 ~]# wget http://127.0.0.1
--2014-02-24 10:46:16-- http://127.0.0.1/
Connecting to 127.0.0.1:80... failed: Connection refused.

ローカルIPアドレスに接続しようとすると同じことが起こります。

[root@te-srv2 ~]# wget http://132.70.6.157
--2014-02-24 10:46:40-- http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: Connection refused.

一方、同じネットワーク内の別のコンピュータから同じように接続しようとすると、「No route to host」という異なるエラーが表示されます。

[erelsgl@erel-biu ~]$ wget http://132.70.6.157
--2014-02-24 10:49:11-- http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: No route to host.

なぜこのようなエラーが出るのでしょうか?また、同じコンピュータとネットワーク内の他のコンピュータの両方から http サーバに接続できるようにするにはどうすればいいのでしょうか?

UPDATESです。コメントと回答をもとに、以下に補足します。

[root@te-srv2 ~]# traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1 te-srv2 (132.70.6.157) 0.082 ms 0.007 ms 0.005 ms

[erelsgl@erel-biu ~]$ traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1 te-srv2 (132.70.6.157) 0.446 ms !X 0.431 ms !X 0.420 ms !X

[root@te-srv2 ~]# netstat -lnp|grep http
tcp 0 0 :::443 :::* LISTEN 5756/httpd

回答 (4)

26
26
26
2014-02-24 09:11:38 +0000

“Connection refused "は、ターゲットマシンが積極的に接続を拒否したことを意味します。ポート80をコンテキストとして、以下のいずれかが原因である可能性が高いです:

  • Nothing is listening on 127.0.0.0.1:80 and 132.70.6.157:80
  • Nothing is listening on *:80
  • The firewall is blocking the connection with REJECT

だから、Apacheとiptablesの設定をチェックしてください。

"No route to host” はネットワークの問題です。これはターゲットマシンからの応答ではありません。

13
13
13
2014-02-24 09:09:12 +0000

netstat -lnpの出力を表示することで、どのプロセスが実際にサーバのどのポートをリッスンしているか、どのIPアドレスにバインドされているかがわかります。

2台目のコンピュータについては、ネットワーク接続が壊れているようです。netstat -rn は、この問題についていくつかの洞察を与えてくれます。

より良いアドバイスをするためには、両方のコンピュータの一般的なネットワーク設定とIP設定の詳細が必要です。

編集:

Apache の設定を変更して、SSL サーバではなく HTTP サーバにする必要があります。設定ファイルは/etc/apache2の下にあることがほとんどです。

他の問題を解析するには、やはりIP設定やネットワーク設定情報が必要です。トレースルート情報では何もわかりませんでした。

3
3
3
2018-06-14 09:23:31 +0000

パブリッククラウドのコンピュートノード上でnodejsを使ってシンプルなhttpページを設定しようとしたときに直面していた問題を説明しているこの投稿を見つけました。

このコマンドでうまくいきました。

iptables -F

このコマンドは、Linuxシステム内で設定されているファイアウォールルールをフラッシュ、つまりクリアします。

注意点。私はパブリッククラウドVCNの一部である分散型ファイアウォールを使用しているため、OSのファイアウォールは実際には使用していません。外部ファイアウォールがない場合は、iptablesでファイアウォールルールを必ず追加するようにしてください。

1
1
1
2017-08-01 08:16:53 +0000

Ron Maupinの回答を引用して https://networkengineering.stackexchange.com/questions/33397/debugging-no-route-to-host-over-ethernet .

ICMPメッセージ「no route to host」は、ARPが宛先ホストのレイヤ2アドレスを見つけられないことを意味します。通常、これはそのIPアドレスを持つホストがオンラインになっていないか、応答していないことを意味します。