問題#1-VMネットワークの種類
ネットワークには3つのモードがあります。
- NAT
- ホストのみ
- ブリッジド
設定の詳細
それぞれをいつ使用するか?
- #1:他のサーバー上にあるFacebook / Webアプリの開発用
- #2:独自のアプリを構築して、VirtualVMホスト(ゲストVMだけでなく)からテストする場合
- #3:アプリを構築して、LAN上の他のシステムからテストする場合
問題#2-ファイアウォールのブロック?
使用しているディストリビューションによっては、ファイアウォールがWebブラウザーからApacheインスタンスへのアクセスをブロックしている可能性があります。これは、システムにpingできるが、Apacheがリッスンしているポートであるポート80を介してアクセスできない場合に意味があります。
一時的に無効にする
CentOSでは、このコマンドを使用して無効にします。
$ /etc/init.d/iptables stop
Apacheがリッスンしていることを確認します
このポートでリッスンしていることも確認できます。
$ netstat -antp | grep :80 | head -1 | column -t
tcp 0 0 :::80 :::* LISTEN 3790/httpd
ファイアウォールがオフであることを確認
ファイアウォールが開いていることを確認できます。
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
これで問題が解決した場合、TCPポート80経由のトラフィックを許可するルールを永続的に追加できます。
TCPポート80のルールの追加
$ /etc/init.d/iptables restart
$ iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ /etc/init.d/iptables save
注:これにより、再起動間でルールが保持されます。
ファイアウォールはTCPポート80を受け入れています
ポート80が開いているシステムは次のようになります。
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:8834
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
問題#3-Apacheリスニング?
上記の問題では、Apacheがリッスンしていることを確認しましたが、1つのIPアドレスのみをリッスンするように、または別のネットワークインターフェイスをリッスンするように設定が間違っている場合がありました。このコマンドnetstat
は、Apache構成ファイルを確認するだけでなく、これを再確認するために使用できます。
$ netstat -anpt | grep :80 | column -t
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1750/httpd
これは、Apacheがすべてのインターフェイス(IP 0.0.0.0)でリッスンしていることを示しています。
@ Lekensteynのこの特定の問題を詳細にカバーする答えをここで繰り返しません。
参照資料
:::80
、その後、ApacheはIPv6のみの接続を待機しています。Listen
ディレクティブを確認しようとしましたか?