VirtualBox(CentOS6.8)でNAT＋ポートフォワーディング

■概要
いちいちVirtualBoxのCentOS上のターミナルやブラウザから操作するのが面倒なので、
WindowsマシンからVirtualBox側のCentOSに立てたWebサーバーまたはSSH接続するための設定メモ。

設定したIPアドレスとポートでホストOS(WIndows)のブラウザやSSHソフトからアクセスすると
VirtualBox!?がゲストOS側で設定したIPアドレスへ転送してくれるらしい(要調査)

NAT＋ポートフォワーディングでできることは、
WindowsとゲストOS間の通信、ゲストOSから外部へのアクセスが可能

設定は３種類あり今回はNAT＋ポートフォワーディング編メモ

■ホストOS側の設定(Windows)

　▲Windowsの設定
　　・コントロールパネルを開く
　　・ネットワークと共有センター
　　・アクティブなネットワークの表示のイーサネットを選択
　　・プロパティを選択
　　・共有タブを選択
　　・「ネットワークのほかのユーザー、このコンピュータのインターネット接続をとおしての接続を許可する」のチェックを外す
　　・「ネットワークのほかのユーザーに、共有インターネット接続の制御や無効化を許可する」のチェックはどちらでもOK
　　　　(デフォルトのままだとチェックが入っている)

　▲Virtual Box側の設定
　　・VM VirtualBox マネージャーの「設定」を選択

　　・画面が起動するので左側の「ネットワーク」を選択

　　・アダプター1のタブの割り当てを「NAT」に設定

　　・「高度」を選択し「ケーブル接続」にチェックが入っていることを確認し、「ポートフォワーディング」を選択

　　・ポートフォワーディングルールを追加する
　　　　名前　　　　⇒デフォルトのまま(Rule1)
　　　　プロトコル　⇒TCP
　　　　ホストIP(WIndows側のIP)
　　　　　　コマンドプロンプトを開き、ipconfigコマンドを実行し「イーサネット アダプター イーサネット」の項目にある
　　　　　　自分のWindowsマシンのIPアドレス(IPv4アドレス)を設定する(自分のマシンは192.168.0.86だった)

　　　　　　ホストポート　⇒8080(ポート番号は任意に決められるらしいが8080にした)
　　　　　　ゲストIP　　　⇒ゲストOSでifconfigで調べたIPアドレスを設定(今回だと10.0.2.15)
　　　　　　ゲストポート　⇒8080(ゲストOSでsudo vi /etc/sysconfig/iptablesで設定したときのポートを指定)

		例：
		ブラウザ用	⇒Rule1	TCP	192.168.0.86	8080	10.0.2.15	8080
		SSH接続用	⇒Rule2	TCP	192.168.0.86	22	10.0.2.15	22


■ゲストOS側の設定(CentOS)

　▲ifconfigでアドレス確認
　　コマンド実行結果からゲストOS側のIPは10.0.2.15となる

eth0　Link encap:Ethernet  HWaddr 08:00:27:7E:A0:6A
　　　inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
　　　inet6 addr: fe80::a00:27ff:fe7e:a06a/64 Scope:Link
　　　UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
　　　RX packets:857 errors:0 dropped:0 overruns:0 frame:0
　　　TX packets:1581 errors:0 dropped:0 overruns:0 carrier:0
　　　collisions:0 txqueuelen:1000 
　　　RX bytes:81412 (79.5 KiB)  TX bytes:882169 (861.4 KiB)

lo　　Link encap:Local Loopback
　　　inet addr:127.0.0.1  Mask:255.0.0.0
　　　inet6 addr: ::1/128 Scope:Host
　　　UP LOOPBACK RUNNING  MTU:65536  Metric:1
　　　RX packets:430 errors:0 dropped:0 overruns:0 frame:0
　　　TX packets:430 errors:0 dropped:0 overruns:0 carrier:0
　　　collisions:0 txqueuelen:0 
　　　RX bytes:130001 (126.9 KiB)  TX bytes:130001 (126.9 KiB)

　▲IPアドレス設定
　　sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=08:00:27:7E:A0:6A
TYPE=Ethernet
UUID=bb1cb85c-5e85-4966-bd3b-1ca109497c1a
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

　▲ネットワーク再起動
　　sudo service network restart

　▲iptablesを使ってポートの制御をする
　　sudo vi /etc/sysconfig/iptables

　下記を追加
　-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
　-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
　-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
　-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
　-A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT

　　sudo /etc/init.d/iptables restart


■設定後の用途

　▲WindowsのブラウザからVirtualBoxのゲストOSのWebサーバーへアクセス
　　ブラウザでアクセスする場合はWindowsのコマンドプロンプトのipconfigで実行して確認したIPアドレスを
　　アドレスバーにhttp://192.168.0.86:8080 を入力すればOK(IPアドレスが192.168.0.86の場合)
　　(ゲストOS側でWebサーバーが起動されていることが前提です)

　▲WindowsのSSHソフトからVirtualBoxのゲストOSへアクセス
　　SSHで接続する場合はサーバーIPを192.168.0.86(IPアドレスが192.168.0.86の場合)、
　　ユーザーID/パスワードがサーバーへアクセスするときのアカウント情報、
　　ポート番号が指定できるSSHソフトの場合はポート番号を指定、
　　自分はputtyで接続のためポート番号が指定できないのでポートフォワーディングのポートの指定を22に設定しました。