【VirtualBox】ホストOSからゲストOSへ、Web接続出来ないときに確認すること
久しぶりに、開発環境を作っていて、ハマってしまいました。
今回使用した環境は
・CentOS7
・nginx
です。
ネットワーク設定と、nginxのインストール・設定を終えたところからスタートです。
①ゲストOSからWebページを表示する
ゲストOSで、「curl localhost/index.html」などして、ページが返ってくるか見ます。
→ページが返ってこなければ、nginxが起動しているか、confファイルの設定が
間違っていないかを見直します。
②ゲストOSへping or ssh接続を行う
→もし、接続不可であれば、ホストオンリーアダプタの設定が間違っているのかもしれません。
私は、nmtui→TUI画面でホストオンリーアダプタのIPアドレスを指定するときに
サブネットマスクを指定し忘れることが多いです。
VirtualBoxでは、特に設定を変えていなければ、サブネットマスクは、「255.255.255.0」
だと思いますが、CentOS7では未指定だとデフォルトで「/32」が設定されるようです。
ので「255.255.255.0」に対応した「/24」を指定します。
もし、ホストオンリーアダプタの設定を見直して問題がなければ、③へ
③ゲストOSのSELinux設定
getenforce で「Enforcing」と返ってきたら、SELinuxが起動しています。
個人の環境であれば、セキュリティレベルを下げる(無効か、違反があってもログだけ出して通す)
のが手っ取り早いです。
sudo vi /etc/selinux/config して
1 2 # This file controls the state of SELinux on the system. 3 # SELINUX= can take one of these three values: 4 # enforcing - SELinux security policy is enforced. 5 # permissive - SELinux prints warnings instead of enforcing. 6 # disabled - No SELinux policy is loaded. 7 SELINUX=enforcing 8 # SELINUXTYPE= can take one of three two values: 9 # targeted - Targeted processes are protected, 10 # minimum - Modification of targeted policy. Only selected processes are protected. 11 # mls - Multi Level Security protection. 12 SELINUXTYPE=targeted 13 14
7行目の「SELINUX=enforcing」のところを
無効…「SELINUX=disabled」
または
違反時ログのみ…「SELINUX=permissive」
に変更して、ゲストOSを再起動します。
本当は、ちゃんとターゲットの設定とかで対応したいところです。
早いところ、SELinux入門しなくては。。
④ ゲストOSのfirewalldの設定
firewalld も、まずは起動を確認します。
systemctl status firewalld で runnig と返ってきたら、起動中です。
こちらも、個人の環境ならOFFにしてしまってもよいです。
http、httpsを許可する手順は以下です。
(1)許可されているサービスを確認
sudo firewall-cmd --list-all すると、ネットワークゾーンに対して
許可されているサービスを確認できます。
私の環境では、以下のようになっていました。
public (active) target: default icmp-block-inversion: no interfaces: enp0s3 enp0s8 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:
一番上が、ネットワークゾーン名です(「public」は公開用のネットワークゾーン)。
servicesの項目にある、「dhcpv6-client ssh」のみが許可されています。
(2)http、httpsを永続的に許可する
sudo firewall-cmd --permanent --add-service=XXX(追加したいサービス)
を実行します。
逆に、許可を取り消したいときは、--add-serviceのところを、--remove-serviceで実行します。
許可の変更が全て終わったら
sudo firewall-cmd --reload します。
再度、(1)の確認を行い、変更が反映されていることを確認して完了。
ここまできたら、Web接続できるようになってるはず!