VirtualBox上にCentOSを入れてApacheを起動させてWebシステムの開発をおこなっているのですが、時々ちょっとサーバの設定を変えると親マシンから接続できなくなることがあります。
いつも、問題点を洗い出すのに苦労するので調査すべきポイントをメモしておこうと思います。
Apacheの状況を確認する
まず疑うべきは子マシンでのApacheの稼働と設定の問題です。
Apacheに問題がないならば、子マシン内からは正常にアクセスできるはずです。
VirtualBoxで子マシンの画面を開いてFirefoxでアクセスして問題ないかをまずは確認します。
子マシンでもうまく画面表示されないなら、以下を確認します。
- Apache自体は稼働しているか?
$ service httpd restart
-
/etc/httpd/conf/httpd.confなど設定ファイルに誤りがないか?
-
Apacheのアクセスログ、エラーログ(/etc/httpd/logs/)を確認
親マシンと子マシン間のネットワークの問題
Apacheに問題ないとなると次に疑うべきはネットワーク周りです。
ping,dig,ipconfigなど使えるツールはいろいろありますが、私はnmapをインストールして調べています。
nmapコマンドで目的のポートが空いているかどうかを確認します。
$ nmap [子マシンのIPアドレス]
通常であれば、80ポートが開いていればnmapにより"80/tcp open http"と表示されるはずです。
表示されないようであればネットワーク周辺の設定がおかしい可能性が高いです。
以下を調査します。
- SELinuxでブロックされていないか?
CentOSではデフォルトでSELinuxが有効になっているので、試しに無効にしてアクセスできるようになるかを確認します。
$ setenforce 0
- firewall-cmdを確認
次に子マシンのFirewallの設定を確認し、80ポートがブロックされているようであれば開放します。
$ firewall-cmd --list-all
- 親マシンでVirtualBoxのポートフォワーディング設定を確認
親マシンのVirtualBox上で子マシンの「設定」->「ネットワーク」でNATを設定しているネットワークを開き、「ポートフォワーディング」を確認します。
私は基本的に80 -> 80ポートのポートフォワーディングをおこなっています。
CentOSの再起動
これらを調べてみて問題ないようであれば、一度CentOS自身を再起動してみましょう。
私はこれで治ったことがあります。