私はhttpd、mysql、php、およびJoomla 2.5を実行しているCentOS 6.0 Webサーバーを持っています。固定パブリックIPアドレスがあります。 LAN内で、IPアドレスを介してWebページ(Joomla管理コンソールなど)に完全にアクセスできます。
家に帰ってルーターの後ろから接続しようとしましたが、Webにアクセスできませんでした。サーバーでpingとsshを実行できますが、httpを使用してWebページを取得することはできません。私のブラウザはChromeです。
どんなアイデアがありますか?
編集する:
これは次の出力ですiptables --list
。
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT udp -- anywhere anywhere udp spt:domain
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-reply
ACCEPT tcp -- anywhere anywhere multiport dports ftp,ssh,http,https state NEW,ESTABLISHED
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-reply
ACCEPT tcp -- anywhere anywhere multiport sports ssh,http,https state ESTABLISHED
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ベストアンサー1
さて、Apacheでこのような問題を経験してから数年が経ちましたが、中世のインターネット時代まで、私たちはこのような状況でチートに頼らなければなりませんでした。
私たちが直面する基本的な問題は同じです。私のネットワークにはパブリックIPがあり、ApacheサーバーはLAN上でプライベートIPを使用し、ロードバランサーはパブリックIPへの要求をプライベートIPを持つ一連のサーバーに戻します。
tcpdumpを使用すると、HTTPリクエストがApacheに送信されていますが、リクエストが「パブリックIP」になるため、Apacheが応答せず、ApacheはそのIPがそのIPにないため、これらのリクエストに応答してはいけないと思うことがわかります。ローカルインタフェーステーブル。
この問題を解決したのは、パブリックIPアドレスをループバックインターフェイスのIPエイリアスとして使用し、/ 32ネットマスクを使用することでした。 ifconfig lo0:1 <IP/32> up
わかりました。これはApacheがこれらの要求に応答しなければならないと信じさせます。
外部からの要求がApacheに到達したことを確認する必要があります。サーバーに到達できない場合は、ファイアウォール/ルーター/aclsを見てください。tcpdump
次のような要求が表示される場合、しかしいいえApacheでは、.Apacheiptables
でリクエストが表示されますが、Apacheがそれに応答しない場合は、access_logとerror_logで何が起こっているのかについての手がかりを見つける必要があります。