匿名質問者

Apacheにローカルホストからアクセスすると接続ができないトラブルが発生しています。

なお、サイトそのものは正常にアクセスできており、ブラウザ上でも表示が遅いなどはありません。

サーバはCentOS6で、Apache+PHP(5.3)でサービスは構成されております。

複数のサーバで同じ設定にしているのですが、なぜか1台だけが、サーバ自身からアクセスするとタイムアウトになってしまいます。

例えば・・・

wget http://example.com/
--2013-06-12 02:09:55-- http://example.com/
Resolving example.com... XXX.XXX.XXX.XXX
Connecting to example.com|XXX.XXX.XXX.XXX|:80... failed: Connection timed out.
Retrying.

--2013-06-12 02:10:17-- (try: 2) http://example.com/
Connecting to example.com|XXX.XXX.XXX.XXX|:80... failed: Connection timed out.
Retrying.

--2013-06-12 02:10:40-- (try: 3) http://example.com/
Connecting to example.com|XXX.XXX.XXX.XXX|:80... failed: Connection timed out.
Retrying.

このようになりアクセスできない状況です。

特にアクセス制限等はかけておらずどこから手を付ければいいか全くわからず困っております。

どうすればアクセス可能な状態にできるでしょうか。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/06/12 20:34:24

ベストアンサー

匿名回答1号 No.1

Connecting to example.com|XXX.XXX.XXX.XXX|:80... failed: Connection timed out.


タイムアウトだと、この example.com の IP アドレスは本当に自ホストのアドレスを指しているか? という事を疑いたくなります。

もし、本当に自ホストのアドレスだったすると、仮に Apache 側の設定の問題等で、その IP アドレスで待ち受けしていない(例えば、127.0.0.1 のみで LISTEN している)というであれば Connection refused になるし、iptables の問題だとしても、CentOS の標準的な設定であれば icmp-host-prohibited で拒否するので、タイムアウトにはなりません。

とりあえず、example.com に対する名前解決はできているようですので、wget が表示している IP アドレスが自ホストのアドレスとあっているか、ping の応答はあるか、あるいは、環境変数に http_proxy や wgetrc ファイルで Proxy が設定されていないか、設定されていた場合、その proxy からこのホストに接続できるか、といった辺りを確認してみて下さい。

他7件のコメントを見る
匿名回答1号

とりあえず、iptables はシロですね。

で、問題のホストは、OS としてはプライベートアドレスが割り当てられていて、それが、どこかのルータで NAT されている状態ですね。

これだと、結論としては「仕方がない」です。

このパターンはよくある話で、原理的に解決が難しいです。

例えば、仮にこのホストに割り当てられているプライベートアドレスを 192.168.1.1、NAT 後のグローバルアドレスを 1.2.3.4 として、このホストが 1.2.3.4 へパケットを送信すると、

・宛先 1.2.3.4 のパケットをルータへ投げる。
・ルータはこのパケットを宛先 192.168.1.1 へ変更して送信する。
・これを受け取ったホスト(つまり、送信したホスト)から見ると
 宛先:192.168.1.1、送信元 192.168.1.1 のパケットに見える。
・このパケットに応答するパケットを送ろうとすると、自分の IP アドレス宛へ
 送信する事になる。
・このパケットがもし、TCP のパケットだとすれば、
  送信した宛先は 1.2.3.4
  戻ってきたパケットは 192.168.1.1
 となるので、TCP のコネクションが成立しない。
 (そもそも、前に送信したパケットの戻りだと認識できない)

という動きになります。ポイントは、戻りのパケットが NAT の処理をするルータを介さず、自ホストに戻ることになる点です。同じ事は、自ホストだけでなく、同一セグメントの他のホストにも言えて、例えば、192.168.1.2 という別のホストから 1.2.3.4 へつなごうとしても繋がりません。

で、それでも example.com という名前でつながる必要がどうしてもあれば、/etc/hosts に

192.168.1.1 example.com

と書いてしまうのが手っ取り早いです。

2013/06/12 15:52:01
匿名質問者

ご回答ありがとうございます。

また詳しい説明助かりました。現状起きている現象を把握いたしました。

取り急ぎご助言いただいた内容で対応し解決いたしました。

細かい部分までご指示いただきまして助かりました。

本当にありがとうございました。

2013/06/12 16:38:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません