私は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で何が起こっているのかについての手がかりを見つける必要があります。
答え2
まず、自宅でこのコマンドの出力を見たいと思います。
nmap -p 80 <public ip of webserver>
nmap
これが表示されると、一部のfiltered
ファイアウォールに問題がある可能性があります。これnmap
が表示されたらclosed
、Webサーバーの構成に問題がある可能性があります。
それ以外は、私が見つけた結果はiptables --list
あまり役に立ちません。注文する
iptables --list --verbose
より多くの情報を提供してください。たとえば、最初のルールを見てみましょう。すべてのパケットが受け入れられるように見えますが、--verbose
真実は明らかです。ルールカウンタを使用してパケットが破棄されたことを確認することもできます。
次に、Webサーバーで次のコマンドを試してみましょう。
tcpdump -i eth0 dst port 80
サーバーにパケットが到着していることを確認してください。ここでは適切なデバイス名を使用してください。
答え3
答えは簡単です。ファイアウォールがブロックされています。私たちの大学は明示的な許可なしにTCP / 80をブロックします。リスンポートをTCP / 10,000(ブロックしない)の上に移動したところ、正常に動作しました。