LoginSignup
1
5

More than 5 years have passed since last update.

メモ:ホスト OS Windows10 から VirtualBox のゲスト OS CentOS 7 上のサービスにアクセスする設定

Posted at

概要

タイトルのとおり。ホスト OS Windows10 から VirtualBox のゲスト OS CentOS 7 上のサービスにアクセスするための、ホスト OS 側、VirutualBox 自体、そしてゲスト OS 側の設定を自分のためにメモ。

前提

  • ホスト OS 「jnana」: Windows10
    • サブネットワーク blue、192.168.13.0/24 (*.blue.mato.me) に所属
      • gw を介してインターネットに接続
  • ゲスト OS のネットワーク割り当ては「NAT ネットワーク」で
    • ゲスト OS 同士が同じセグメントに入るように
    • サブネットワーク名 pink : 10.13.73.0/24 (*.pink.mato.me)
    • pink 内のゲスト OS からはホスト OS jnana を含めた blue 内のホスト、およびそこを経由してインターネットにもアクセス可能
  • ゲスト OS 上のサービスには VirtualBox のポートフォワーディングで対応
    • 必要に応じてフォワードするポートを追加していく
  • ゲスト OS 「jupiter」 : CentOS 7
    • jupiter 上の x 番ポートへはホスト OS の (20000 + x) 番ポートからフォワーディング
      • 例えば ssh なら jnana:20022 → jupiter:22 として、jnana 上のターミナルソフトから localhost:20022 に接続

具体的な設定

ホスト OS の Windows ファイアウォール

忘れがちだけど、ファイアウォールでポートフォワードするポートのパケット受信を許可しないといけない。
「受信の規則」はサービスごとに (すなわちフォワードするポート番号ごとに) 作ってもよいが、jupiter 上のサービス用に一括して作ると楽かもしれない。

ここでは、「ホスト OS 自身からの2万番台のポートに来たパケットはすべて pink サブネットワーク内にフォワード」という規則の設定方法をスクリーンキャプチャ画像で示す。「プログラム」として VBoxNetNAT.exe を指定し、TCP の「20000-29999」を許可。エッジトラバーサルはブロックし、「スコープ」の「ローカル IP アドレス」は「127.0.0.1」に限定する。規則名は「+port forwarding to jupiter」とする。

fw1.png

fw2.png

補足

  • 規則名は「+」などで始めるようにしておくと、規則の一覧のときに探しやすい。
  • もし、ホスト OS jnana 以外の blue サブネットワーク内のマシンからアクセスさせたい場合は「スコープ」で「ローカル IP アドレス」を指定しない ... のでいいのだが、「+port forwarding to jupiter」の制限を弱めるよりも、そのサービス、例えば http であれば「+port forwading to jupiter:80」とかの別規則を新たに作り、「ローカル IP アドレス」を指定しない代わりにポートを「20080」に限定する。
  • pink 内に複数のゲスト OS (あるいは同一 OS の別ネットワークアダプタ) がある場合は「20xxx」番ポートが jupiter 用、「21xxx」番ポートがまた別の OS 用、などとしてもよい。

ポートフォワーディング

ポートフォワーディングの設定は、「仮想マシン jupiter の [設定]」ではなく、「VirtualBox マネージャーの [ファイル]→[環境設定...]」から「ネットワーク」をたどって行う (かなりハマった)。スクリーンキャプチャ画像に示すとおり。ここでは
- ホスト OS から ssh 接続するためのルール : Rule 1
- ホスト OS jnana を含む blue サブネットワーク内から http 接続するためのルール : Rule 3, 4, 5
- blue ネットワークでは dhcp サーバで固定 IP を払い出しているが、jnana は有線でつなぐとき (192.168.13.73) と無線でつなぐとき (192.168.13.120) で IP アドレスが違うので両方登録してある
- ホスト OS からユーザレベルサービスに接続するためのルール : Rule 7, 8

ポートフォワーディング.png

ゲスト OS のファイアウォール

/usr/lib/firewalld/services/nodeapp.xml を作り、firewall-cmd --add-service する (xml ファイルは正しくは /usr/lib/ にではなく、/etc/ に、すなわち /etc/firewalld/services/nodeapp.xml に作るべきだったかもしれない)。

[takeyuki@jupiter ~]$ sudo vi /usr/lib/firewalld/services/nodeapp.xml
[takeyuki@jupiter ~]$ sudo cat /usr/lib/firewalld/services/nodeapp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>node app</short>
  <description>node app</description>
  <port protocol="tcp" port="3000"/>
  <port protocol="tcp" port="8080"/>
</service>
[takeyuki@jupiter ~]$ sudo firewall-cmd --add-service=py-app --zone=public --permanent                                                                                                                         
success
[takeyuki@jupiter ~]$ sudo firewall-cmd --reload
success
[takeyuki@jupiter ~]$ sudo firewall-cmd --list-services --zone=public  --permanent                                                                                                                      
dhcpv6-client http nodeapp ssh

enjoy !!

参考

-CentOS7のfirewalldをまじめに使うはじめの一歩(systemdも少し)

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5