1. はじめに
VirtualBoxにゲストOSをインストールした後のネットワーク設定がうまくいかず、SSH接続やインターネット接続ができないという経験をしたことがある方は多いかと思います。安全にVirtualBox上の仮想サーバを運用するための適切なネットワーク設定をご説明するので、ぜひ参考にしていただければと思います。
2. 前提環境
<ホストOS>
・OSはWindows11
・VirtualBox バージョン 7.0.22 r165102をインストール済み
・無線LANによるインターネット接続
<ゲストOS>
・CentOS 8.5 インストール済み
3. ネットワーク構成図
ホストOSからゲストOSに対するSSH接続およびゲストOSからのインターネット接続を実現するため、ゲストOSに対してNATアダプタ、ホストオンリーアダプタを設定します。
NATアダプタ:ゲストOSがホストOSのネットワークを利用してインターネット接続などの外部接続を確立するためのアダプタです。ゲストOSに割り当てられているプライベートIPアドレスを変換することで外部接続を実現しています。
ホストオンリーアダプタ:その名の通り、ホストOSとゲストOS間の専用接続を確立するためのアダプタです。主にホストOSからゲストOSにSSH接続するために使用します。
ネットワーク構成図例を下記に記載します。
上記の方法以外にもブリッジアダプタを適用することで簡単にSSH接続およびインターネット接続を実現することは可能です。しかし、この方法だと仮想OSが物理ネットワークに直接アクセスするためネットワーク上の他のデバイスや外部からの攻撃を受ける可能性が高まります。少し手間ですが、上記のNATアダプタ+ホストオンリーアダプタを併用する方法を推奨します。
4. 設定方法
まず、VirtualBox上でNW設定を変更します。仮想マシンが起動している場合は停止させてください。VirtualBoxマネージャの画面にて「設定」ボタンを押下します。
下記の通りアダプター1にNATを設定します。
①「ネットワーク」を押下
②「アダプター1」を押下
③「割り当て(A)」の項目に「NAT」を選択
④「OK」を押下
続いて下記の通りアダプター2にホストオンリーアダプターを設定します。
①「アダプター2」を押下
②「ネットワークアダプターを有効化(E)」にチェックを入れる
③「割り当て(A)」の項目に「ホストオンリーアダプター」を選択
④「OK」を押下
上記設定が完了したらゲストOSの電源を入れて起動し、ゲストOS側で端末(Terminal)を起動してコマンド投入していきます。ルートユーザになってip aコマンドを実行して下さい。enp0s3にNATアダプタ、enp0s8にホストオンリーアダプターが割り当てられております。
まずはenp0s3(NATアダプタ)の設定を変更していきます。OS起動時のインターフェース起動設定(ONBOOT)がOFFになっているのでONに変更して起動します。プライベートIPアドレスは自動的に割り当てられますので特に設定は不要です。
enp0s3のネットワーク設定ファイルをバックアップします。
続いて設定ファイルをviで編集します。ONBOOTの項目をnoからyesに変更するだけです。
下記のコマンドを実行して、インターフェースenp0s3を有効化します。
ip aコマンドで状態を確認しましょう。下記の通りenp0s3にIPアドレスが割り当てられていればうまくいっています。
外部ネットワークに出れるか確認をしましょう。google.comに対してpingが通れば問題ありません。
続いてホストOSからゲストOSに対してSSH接続をできるようにするために、固定のIPアドレスを割り当てます。ゲストOSに設定するIPアドレスを決めるために、まずはホストOSのIPアドレスの設定を確認します。コマンドプロンプトを起動してipconfigコマンドを実行して下さい。
C:\Users\username>ipconfig
Windows IP 構成
イーサネット アダプター イーサネット 2:
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: fe80::9db3:3d63:1190:dbfe%13
IPv4 アドレス . . . . . . . . . . . .: 192.168.56.1
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
Wireless LAN adapter Wi-Fi:
接続固有の DNS サフィックス . . . . .: flets-east.jp
IPv6 アドレス . . . . . . . . . . . .: 240b:10:a840:4f00:dd93:c986:db06:ad65
一時 IPv6 アドレス. . . . . . . . . .: 240b:10:a840:4f00:5dd9:5de1:3308:b62c
リンクローカル IPv6 アドレス. . . . .: fe80::737f:798:ba45:56df%17
IPv4 アドレス . . . . . . . . . . . .: 192.168.10.108
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: fe80::fab7:97ff:fe71:58a0%17
192.168.10.1
イーサネットアダプタにIPv4アドレスに192.168.56.1、サブネットマスクに255.255.255.0が割り当てられています。このIPアドレスと同じセグメントのIPアドレスをゲストOSに設定することで、SSH接続が可能となります。今回は192.168.56.101をゲストOSに割り当てます。
設定ファイルifcfg-enp0s3をコピーしてifcfg-enp0s8を作成し、下記の通り設定を変更します。
BOOTPROTO:固定IPを振るために「static」を指定します。
NAME:enp0s8を指定します。
UUID:enp0s3とUUIDが重複しないように、#をつけてコメントアウトします。
DEVICE:enp0s8を指定します。
ONBOOT:起動時にインターフェースを起動するために「yes」を設定します。
IPADDR:192.168.56.101を指定します。
NETMASK:255.255.255.0を指定します。
設定を反映するためにNetworkManagerを再起動します。
ip aコマンドでIPアドレス192.168.56.101が割り当てられているか確認しましょう。
それではホストOSからSSH接続ができるかどうか確認してみましょう。TeraTermを起動して接続してみます。
ホストに設定したIPアドレスを入力して「OK」を押下します。
ユーザ名とパスワードを入力して「OK」を押下します。
下記の通り接続出来たら成功です。
5. まとめ
VirtualBox上の仮想OSのネットワーク設定は以上となります。いろいろネットワーク設定の選択肢があって迷う方がいるかと思いますが、まずは上記やり方を習得いただき、ゲストOS上の作業に専念してもらえればと思います。
コメント