Virtual BoxのNATとポートフォワーディングについて
第5話で仮想環境であるVirtual Boxのインストールを行いました。その際、ネットワーク設定関連で理解が曖昧な部分があったので、ここで少し調べてみました。
デフォルトのNATのみの構成
デフォルトでは「NAT」のみが設定されています。この状態では、Virtual Box上の仮想サーバーで動作しているUbuntuからはホストOS(作業PCのOS)やこれとローカルエリアネットワークで接続されるRaspberry Pi、さらにルータの先のインターネットへのアクセスが可能ですが、逆方向からのアクセスはできません。
これはVirtual Box上のNATが動作している仮想ルータの外側のNIC(ネットワークインタフェースカード)が作業PCのNICとなっており、そのIPアドレスが作業PCと同じ(以下の例だと192.168.1.4)となる為、このIPアドレスにローカルネットワーク内の機器やインターネットからアクセスしても作業PCへのアクセスとなってしまう為のようです。ホストOSからのアクセスさえもできません。
ホストオンリーアダプタの追加
第5話では、仮想サーバー上のUbuntuにホストOS(作業PCのOS)からTeratermでリモートアクセスをしたかったので、これが可能となるように「ホストオンリーアダプタ」というものを追加しました。
これは、ホストOSと仮想サーバーに「仮想NIC」を追加することで、以下の図のオレンジの点線のように仮想的なローカルネットワークを構築し、このIPアドレスを使ってホストOSから仮想サーバーにリモートアクセスしました。
しかし、まだ仮想サーバーから見て外部のネットワーク機器であるRaspberry Piやインターネットからのアクセスはできません。
NATへのポートフォワーディング設定
そこで、NATの「ポートフォワーディング」という機能を使って仮想サーバーへ外部ネットワークからSSHでアクセス可能となるように設定を行う。
まずは仮想サーバーをシャットダウンした状態で、Virtual Boxの「設定(S)」メニューをクリック。
上記のウィンドウの左側のメニューから「ネットワーク」をクリックし、右側の「高度(D)」の左側の「▷」マークをクリック。
右側の「ポートフォファーディング(P)」をクリック。
右上の緑色のアイコンをクリック。
「ホストポート」にTCPポートの空ポート番号(7122や2222などが使われるようだが、ここでは7122を使用)を入力。「ゲストポート」には「22」を入力し「OK」をクリック。これで設定は完了。仮想サーバーを起動。
ここで、Windows8.1の私のPCでは上記のウィンドウが表示されたので「アクセスを許可する(A)」をクリック。ちなみに、デフォルトのチェックを外し、「プライベートネットワーク」のみにチェックを入れた場合は外部からのアクセスができなかった。
これで下記のようなネットワーク構成となった。
これは、例えば右側のローカルネットワーク内の機器から「192.168.1.4:7122」でアクセスされたものは、ポートフォワーディング機能により仮想サーバー側へ転送されるような構成である。
仮想サーバーへ外部ネットワークからアクセス可能かどうかを確認する為に、右側のRaspberry Piから左側の仮想サーバーにSCPコマンドによりファイルを転送してみる。
上記の上がRaspberry Piのホームディレクトリ、下が仮想サーバーのホームディレクトリ。以下のコマンドにより「test」という名前のファイルを転送
scp -P 7122 test ta@192.168.1.4:~/
「-P」オプションによりポートの指定を行う。
仮想サーバーに「test」というファイルが転送されていることが分かる。
コメント