ブロードコム社による VMWare のライセンス変更の影響もあって、なんとなく「仮想環境として VMWare を選びにくい」心理になっているのは自分だけじゃないと思ってます。事実、自分は昨年のプロジェクトにおける検証環境として仮想環境が必要だったのですが、自社も扱っている VMWare を選ぶことに躊躇して、結局使いませんでした。。

問題は「VMWare を使わないとして、じゃあ何を使う?」です。もちろん VMWare の便利さ(複数サーバーで1つの環境を構築できるのはリソース管理の視点で便利ですよね)も理解しているし、「使う側の慣れ(別の環境だと慣れるまでが不安)」の問題もあるので、なんでもいいというわけにはいかないことは理解しています。

そこまで理解した上で、自分は昨年1年間を通じて Oracle の VirtualBox を使う機会が数度ありました。もともと個人所有の(PC-DOS や OS/2 資産を残しておくための)仮想環境として使っていたこともあったのですが、単に「VM を起動するだけ」の使い方しかしていませんでした(ネットワーク周りなどは全然・・)。そんな自分も業務を通じて1年間使ってきたこともあり、ある程度理解が深まったと思うので、今年はそのアウトプットを行っていこうと思います:
2025012101


まず最初は「VirtualBox 内で VPC(Virtual Private Cloud) っぽい環境を作る」手順を数度に分けて紹介していこうと考えています。VPN などで外部からアクセスできるような所までは想定しませんが、原則的にはインターネット接続のない閉じたネットワークを作って、その上で複数の VM を動かしたり、インターネット接続のためのルータを作った上でデフォルトゲートウェイとして指定することでアウトバウント・インターネット接続を実現する、といった内容を紹介していく予定です。

というわけで、今回は VirtualBox でインターネット接続のないネットワークを作って、その中で VM を動かすまでの手順を紹介します。


【VirtualBox で外部とは繋がらないネットワークに VM を配置する】
まず VirtualBox のネットワークにはどんな種類があるのか調べてみます。適当な VM を選択して設定を開き、ネットワーク項目を確認します。有効化されているアダプターを見つけ(あるいは適当なアダプターを選んで有効化し)、割り当てボックスを開きます:
2025013101


私の環境は VirtualBox 7.0.12 なのですが、その場合はこのような選択肢が表示されました。これだけの種類のネットワークがあり、VirtualBox で指定できます:
2025013102


「NAT」や「ブリッジアダプター」は比較的わかりやすいのではないかと思ってます(ホスト PC がインターネットに繋がっていれば、どちらも外部接続可能です)。外部につながらないネットワークという意味では「内部ネットワーク」と「ホストオンリーアダプター」がありますが、後者はどちらかというと単体、他の VM との通信を行うネットワークに接続させたい場合は前者の「内部ネットワーク」を選択することになるようです。

「内部ネットワーク」を選ぶと、画面はこのようになります:
2025013103


この「名前」の値(上図では "intnet" となっている部分)が「内部ネットワークの名前」に相当するもので、デフォルト値は "intnet" です。複数の VM が同じ名前の内部ネットワークに接続されたアダプターを持っていれば、それらの VM は(同じネットワークアドレスの IP アドレスが割り当てられていれば)通信できることになります。2つ以上の異なる内部ネットワークを定義したい場合は、この "intnet" と書かれている部分を別の名前に書き換えることで「別のネットワーク」扱いになり、通信はできなくなります。

というわけで、VirtualBox で外部に繋がらないネットワーク上に VM を配置したい場合はネットワークアダプタの種類を「内部ネットワーク」に指定して VM を作ればよいことになります。

その上で VM を作成・起動し、まずは VirtualBox の OS 内でのネットワークインターフェース名を確認するため、以下のコマンドを入力します:
# nmcli device

この結果、例えばネットワークインターフェース名が eth0 であれば(CentOS や RHEL であれば)以下のような設定を実施します(赤字はコメントです):
# nmcli con add ifname eth0 con-name eth0 type ethernet eth0 をインターフェースとして追加

# nmcli con mod eth0 connection.autoconnect yes OS起動時に自動接続

# nmcli con mod eth0 ipv4.addresses 10.10.0.10/24 IPv4アドレスとネットマスク

# nmcli con mod eth0 ipv4.method manual 手動設定であることを明示

# nmcli con mod eth0 ipv4.dns 10.10.0.10 DNSサーバー

# nmcli con up eth0 ここまでの設定を有効化

これでインターネットには接続できないネットワーク 10.10.0.0/24 内に IP アドレス 10.10.0.10 で接続されたサーバーを作ることができます。

図で示すとこんな感じの VM1 に相当するサーバーを作ることができます:
2025020101


注意が必要な点として、オフライン(インターネット接続がない)なので、インストール時のネットワーク経由でのユーザー登録やサブスクリプション登録もできない、という点です。オフラインインストール方法は OS ごとに異なるはずですが、RHEL 9 の場合は過去に調べてまとめたことがあるので、(超面倒ですが)必要な方はこちらも参照ください:
RHEL 9.x のオフラインインストール


次回はこのエアギャップ(インターネット非接続)ネットワーク上に、インターネットとのデフォルトゲートウェイになるようなルータを構築する手順を紹介する予定です。こちらも図で示すとこちらの VM0 に相当するサーバーを作って、閉域ネットワークである intnet に接続したサーバー(VM1 など)がインターネット接続できるようにします:
2025020102