VirtualBoxでSSH・インターネット接続する方法|NAT+ホストオンリー【RHEL/AlmaLinux】

はじめに

VirtualBoxでゲストOSをインストールした後、ネットワーク設定が原因でSSH接続やインターネット接続ができないという経験をした方も多いのではないでしょうか。この記事では、本記事では、ホストOSからゲストOSへのSSH接続とゲストOSからインターネットへの接続を両立する、検証・学習環境向けのネットワーク構成をわかりやすく解説します。

前提環境

ホストOS(PC側)

  • Windows 11
  • VirtualBox 7.0.22 r165102 インストール済み
  • 無線LAN(Wi-Fi)でインターネット接続

ゲストOS(仮想マシン側)

  • AlmaLinux 9.6 インストール済み

ネットワーク構成図

VirtualBoxでゲストOSを運用する際に、ホストOSからのSSH接続とゲストOSからのインターネット接続を両立させるため、以下の2つのネットワークアダプタを設定します。

  • NATアダプタ
    ゲストOSからインターネットなどの外部ネットワークへ通信するために使用します。VirtualBoxのNAT機能を介して外部通信が可能になります。通常のNAT構成ではホストOSからゲストOSへ直接接続する用途には向かないため、本記事ではSSH接続用に別途ホストオンリーアダプタを使用します。
  • ホストオンリーアダプタ
    ホストOSとゲストOS、および同じHost-onlyネットワークに接続したVM間の通信に利用できる仮想ネットワークです。本記事では主にホストOSからゲストOSへのSSH接続に使用します。

この設定により、ゲストOSは外部通信とホストOSからのアクセスを同時に実現できます。ネットワーク構成図の例を以下に示します。

ブリッジアダプタを使用すれば、1つのNICでSSH接続とインターネット接続を同時に実現することも可能です。ブリッジアダプタではゲストOSがホストOSと同じ物理ネットワークに直接参加します。そのため、ネットワークやゲストOS側のファイアウォール設定によっては、同一LAN上の他の端末からゲストOSへアクセスできる状態になります。なお、ブリッジ接続しただけで直ちにインターネットへ直接公開されるわけではありません。

検証用VMをホストPC内に閉じた形で利用しつつインターネット接続も確保したい場合は、NATアダプタとホストオンリーアダプタの併用が扱いやすい構成です。外部通信用と管理用の通信経路を分けて考えられます。

設定方法

まず、VirtualBox上でネットワーク設定を変更します。仮想マシンが起動している場合は、設定変更が反映されないため必ず停止させてください。

次に、VirtualBoxマネージャの画面で対象の仮想マシンを選択し、「設定」ボタンをクリックします。ここからネットワークアダプタの追加や変更が可能です。

下記の通りアダプター1にNATを設定します。
①「ネットワーク」を押下
②「アダプター1」を押下
③「割り当て(A)」の項目に「NAT」を選択
④「OK」を押下

続いて下記の通りアダプター2にホストオンリーアダプターを設定します。
①「アダプター2」を押下
②「ネットワークアダプターを有効化(E)」にチェックを入れる
③「割り当て(A)」の項目に「ホストオンリーアダプター」を選択
④「OK」を押下

※仮想マシンが起動中だとアダプター2の追加はできませんので、停止中に作業してください。

上記のネットワーク設定が完了したら、ゲストOSの電源を入れて起動します。

次に、ゲストOS側で端末(Terminal)を開き、ip a コマンドを実行してください。ここでは、enp0s3にNATアダプタ、enp0s8にホストオンリーアダプタが割り当てられていることを確認します。IPアドレスの確認だけであればrootユーザへ切り替える必要はありません。

外部ネットワークに接続できるか確認しましょう。まず ip route でDefault RouteがNAT側に設定されていることを確認します。次に ping 8.8.8.8 でIPレベルの外部疎通、ping google.com でDNS名前解決を含む疎通を確認すると、問題発生時の切り分けがしやすくなります。

続いて、ホストOSからゲストOSへのSSH接続を可能にするため、ゲストOSに固定IPアドレスを割り当てます。

まず、ゲストOSのホストオンリーアダプタに設定するIPアドレスを決めるため、Windows側のHost-onlyネットワークを確認します。Windowsの場合はコマンドプロンプトで ipconfig を実行します。
Wi-Fi側ではなく、VirtualBoxのHost-onlyアダプタに割り当てられたIPアドレスとサブネットを確認することがポイントです。

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

この例では、VirtualBoxのHost-only側に 192.168.56.1/24 が割り当てられています。ゲストOSのホストオンリー側にも同じサブネットの 192.168.56.101/24 を設定します。固定IPは、Host-only DHCPの払い出し範囲や他のVMで使用しているIPアドレスと重複しないことを確認してください。

また、ホストオンリー側は管理通信用なので、通常はデフォルトゲートウェイを設定しません。インターネット向けのDefault RouteはNAT側を利用します。

enp0s3(NAT): DHCP / Default Routeあり
enp0s8(Host-only): 192.168.56.101/24 / Gatewayなし

ip aコマンドでIPアドレス192.168.56.101が割り当てられているか確認しましょう。

それではホストOSからSSH接続ができるかどうか確認してみましょう。TeraTermを起動して接続してみます。ホストに設定したIPアドレスを入力して「OK」を押下します。

ユーザ名とパスワードを入力して「OK」を押下します。

※SSH接続には一般ユーザを使用することを推奨します。rootユーザのSSHログイン可否はOpenSSHの設定や認証方式によって異なります。通常は一般ユーザでログインし、必要に応じて sudo を利用するとよいでしょう。

下記の通り接続出来たら成功です。

まとめ

本記事では、VirtualBox上のAlmaLinuxで、ゲストOSからのインターネット接続とWindowsホストからのSSH接続を両立する構成を紹介しました。

  • NAT:ゲストOSからインターネットへの通信に利用
  • Host-only:WindowsホストからゲストOSへのSSH接続に利用
  • Default Route:NAT側を利用し、Host-only側には通常デフォルトゲートウェイを設定しない
  • 固定IP:Host-only側と同じサブネットで、DHCP範囲や他VMと重複しないアドレスを設定

ブリッジアダプタでもSSH接続とインターネット接続を両立できますが、ゲストOSが物理LANへ直接参加します。検証・学習用途で通信経路を分けたい場合は、NAT+ホストオンリー構成が分かりやすく扱いやすいでしょう。

参考文献

Virtualbox NAT and host-only connection
Because I'm working on multiple locations, I experience problems with my development servers. Because work on a variety ...

コメント