わたしの日記だよ

ー生きる厳しさと哀しさを鮮烈に謳うー

【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接続できるようになってるはず!