VMware Workstationで効率的な仮想ネットワークラボを構築する:複数のVMを構成し、ネットワークトポロジーをシミュレートする
IT業界に足を踏み入れたばかりの方、あるいはインフラ、ネットワーク、システム分野への転向を考えている方にとって、実習用のハードウェア機器の不足は大きな障壁となるでしょう。物理的なスイッチ、ルーター、あるいは専用のラボを構築するためのPC一式をすべて揃える余裕がある人は多くありません。この状況では、理論ばかりを学び、実践的な経験を積んだり、システムの動作を実感したりすることが難しくなりがちです。
経験上、ネットワークの構成スキルやトラブルシューティングスキルは、実際に自分で展開し、観察し、デバッグすることで初めて強固なものになります。では、費用をかけずにこの問題を解決するにはどうすればよいでしょうか?心配はいりません。最適な解決策は、仮想ネットワークラボを構築することです。
この記事では、おなじみの仮想化ソフトウェアであるVMware Workstationを活用する方法を説明します。多仮想マシンネットワークラボをセットアップし、複雑なネットワークトポロジーを効果的に実習できるようになります。
中核となる概念:仮想ネットワークラボとVMware Workstationの役割
仮想ネットワークラボは、仮想化技術を用いて、お使いの物理PC上にコンピュータネットワークをシミュレートする環境です。物理機器の代わりに、仮想マシン(VMs)や、仮想化ソフトウェアが提供する仮想ネットワークアダプター、仮想スイッチを使用します。
VMware WorkstationはType 2ハイパーバイザーであり、ホストオペレーティングシステム(Windows、Linux)上で動作します。これにより、インストールと使用が簡単であるため、個人ラボにとって最適な選択肢です。仮想化について学び始めた頃、私もVMware Workstationを長期間使用していたことを覚えています。
その後、個人的なラボのためにProxmox VEのようなベアメタルソリューションに移行しました。どちらのプラットフォームにも独自の利点があります。しかし、VMware Workstationは、ネットワークの学習と実践にとって本当に理想的な出発点です。直感的なインターフェースと柔軟な仮想ネットワーク構成機能は大きな利点です。
仮想ネットワークラボにおいて、私たちが最も頻繁に操作する3つの主要コンポーネントは以下の通りです。
- 仮想マシン (Virtual Machines – VMs): ネットワーク内のサーバー、ワークステーション、ルーター、ファイアウォールなどです。
- 仮想ネットワークアダプター (Virtual Network Adapters): 各仮想マシンには複数のネットワークカードを搭載でき、異なる仮想ネットワークセグメントに接続するために使用されます。
- 仮想スイッチ (Virtual Switches – VMnets): これらはVMware Workstationの仮想ネットワークの「心臓部」です。これらのVMnetは物理スイッチのように機能し、仮想マシン同士、または仮想マシンとホストPCや外部の物理ネットワークとの接続を助けます。VMwareはVMnet0 (Bridge)、VMnet1 (Host-only)、VMnet8 (NAT)をデフォルトで提供しており、カスタムVMnetを追加することも可能です。
詳細な実践:多仮想マシンネットワークラボの構築
開始するにあたり、VMware Workstationがお使いのPCにインストールされていることを前提とします。まだインストールしていない場合は、基本的なインストールガイドを参照してください。
1. リソースの準備
- オペレーティングシステム: 使用したいOSのISOイメージ。例:Windows Server (Domain Controller、Web Server用)、Ubuntu Server/CentOS (Router、Firewall、Linux Client用)。
- システムリソース: ホストPCが複数の仮想マシンを同時に実行するのに十分なRAMとCPUを備えていることを確認してください(例:3~5台の仮想マシンをスムーズに実行するには、最低8GBのRAM、4コア以上のCPU)。
2. 基本的な仮想マシンの作成
ここでは、シンプルなネットワークをシミュレートするために、少なくとも3台の仮想マシンを作成します。サーバー、クライアント、ルーター/ファイアウォールです。
VMを作成する際、ネットワークカードの構成に注意してください。最初はNATまたはHost-onlyモードにしておいても構いません。詳細は後で調整します。
3. 仮想ネットワークの構成 (Virtual Network Editor)
これは、ネットワークトポロジーを「構築」する上で非常に重要なステップです。VMware WorkstationでEdit > Virtual Network Editor...にアクセスします。
このウィンドウには、デフォルトのVMnetが表示されます。新しいVMnetを追加し、必要に応じて構成できます。
- VMnet0 (Bridged): VMをホストPCの物理ネットワークに直接接続します。仮想マシンは物理DHCPサーバーからIPアドレスを取得するか(存在する場合)、ホストPCと同じサブネット内で静的IPアドレスを手動で構成できます。このタイプは、VMがインターネットにアクセスしたり、LAN内の他の物理デバイスと通信したりしたい場合に非常に便利です。
- VMnet1 (Host-only): VMとホストPC間に独立したネットワークを作成します。VMnet1内のVMは互いに、またホストPCと通信できますが、インターネットにはアクセスできません。VMwareのDHCPがこの範囲内でIPアドレスを割り当てます。完全に分離された内部ネットワークによく使用されます。
- VMnet8 (NAT): 仮想マシンはホストPCのネットワークカードを介してインターネットにアクセスできます。逆に、外部から直接仮想マシンにアクセスすることはできません。VMwareのDHCPがIPを割り当て、NATを実行します。このタイプは、公開IPアドレスを必要とせずにインターネットにアクセスする必要があるクライアントマシンに適しています。
カスタムVMnetの作成: Add Network...をクリックして新しいVMnet(例:VMnet2、VMnet3)を追加します。これらのVMnetにはHost-onlyタイプを選択して独立して動作させます。すべての仮想マシンに静的IPアドレスを手動で構成したい場合は、IP範囲を自分で設定し、DHCPを無効にできます。
# 例:VMnet2をHost-only、範囲192.168.10.0/24で構成する
# 仮想マシンに静的IPを割り当てたい場合はDHCPを無効にする
4. シンプルなネットワークトポロジーの構築:LANとルーター
2つの個別のLANがルーターを介して接続されており、そのルーターを介して一方のLANがインターネットにアクセスできるモデルを構築するとします。
モデル:
[Client1 (LAN1)] --- [Router_VM] -- [Server1 (LAN2)]
|
| (NAT/Bridged)
|
[Internet]
実行手順:
-
Router_VM (例: Ubuntu Server):
- Router_VM (例: Ubuntu Server)には、3つの仮想ネットワークカードを追加する必要があります。
- カード1:
VMnet8 (NAT)– Router_VMがインターネットに接続できるようにします。 - カード2:
VMnet2 (Host-only)– Client1 (LAN1)に接続するため。 - カード3:
VMnet3 (Host-only)– Server1 (LAN2)に接続するため。 - Router_VMの各ネットワークカードに静的IPアドレスを構成します。例:
# Router_VMのネットワークカードを構成する (例: /etc/netplan/01-netcfg.yaml または /etc/network/interfaces ファイル) # eth0 (NAT): VMwareのDHCPから動的IPを取得 # eth1 (VMnet2): 192.168.10.1/24 # eth2 (VMnet3): 192.168.20.1/24 # netplanの例 (Ubuntu Server 18.04+) network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true eth1: addresses: [192.168.10.1/24] eth2: addresses: [192.168.20.1/24]- 次に、Router_VMでIP転送を有効にする必要があります。これにより、ネットワーク間でパケットを転送できます。
sudo sysctl -w net.ipv4.ip_forward=1 sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sudo sysctl -p- Client1とServer1がRouter_VMを介してインターネットにアクセスできるようにするには、Router_VMでNATを次のように構成します。
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT sudo iptables -A FORWARD -i eth0 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT # 再起動時にiptablesルールが失われないように保存する sudo apt-get install iptables-persistent sudo netfilter-persistent save -
Client1_VM (例: Ubuntu Desktop/Client):
- Client1_VM (例: Ubuntu Desktop/Client)には、
VMnet2 (Host-only)という1つの仮想ネットワークカードのみが必要です。 - 静的IPアドレスを
192.168.10.10/24に設定します。ゲートウェイはVMnet2上のRouter_VMのIPアドレス(192.168.10.1)です。DNSサーバーにはGoogleの8.8.8.8を使用できます。
- Client1_VM (例: Ubuntu Desktop/Client)には、
-
Server1_VM (例: Windows Server):
- Server1_VM (例: Windows Server)にも、
VMnet3 (Host-only)という1つの仮想ネットワークカードのみが必要です。 - 静的IPアドレスを
192.168.20.10/24に設定します。ゲートウェイはVMnet3上のRouter_VMのIPアドレス(192.168.20.1)です。DNSサーバーには8.8.8.8を使用できます。
- Server1_VM (例: Windows Server)にも、
5. より複雑なネットワークトポロジーの構築:DMZを持つ小規模企業ネットワーク
より現実的な環境をシミュレートするために、Webサーバー用のDMZ (非武装地帯) を追加してみましょう。この領域は内部ネットワークおよびインターネットから完全に分離されます。
モデル:
[Internet] -- (VMnet8/NAT) -- [Firewall_Router_VM] -- (VMnet4/DMZ) -- [Web_Server_VM]
|
| (VMnet2/Internal LAN)
|
[Client_VMs]
追加の実行手順:
-
新しいVMnetの追加: DMZ用に
VMnet4 (Host-only)を、独自のIPアドレス範囲(例:192.168.30.0/24)で追加作成します。 -
Firewall_Router_VM (例: pfSense、OPNsenseまたはLinux Router):
- このとき、Firewall_Router_VMには3つの仮想ネットワークカードが必要です。
- カード1:
VMnet8 (NAT)(WAN/Internet) - カード2:
VMnet2 (Host-only)(内部LAN) - カード3:
VMnet4 (Host-only)(DMZ) - 定義したネットワーク範囲に合わせて、Firewall_Router_VMの各インターフェースに静的IPアドレスを構成してください。
- 最後に、WAN、LAN、DMZ間のトラフィックを厳密に制御するためのファイアウォールルール (ACLs) を設定します。例:
- WANからDMZ内のWeb_Server_VMへのHTTP/HTTPSアクセスのみを許可する (例: ポート80、443)。
- LAN内のClient_VMsがWeb_Server_VMにアクセスすることを許可する。
- LAN内のClient_VMsがWANに直接アクセスすることを制限する (セキュリティ強化のためにファイアウォールのNATを介して強制する)。
- DMZが内部LANに直接アクセスすることを絶対に阻止する。これは重要なセキュリティ原則です。
-
Web_Server_VM:
- Web_Server_VMには、
VMnet4 (Host-only)という1つの仮想ネットワークカードのみが必要です。 - DMZ範囲内の静的IPアドレス(例:192.168.30.10/24)を構成し、ゲートウェイはVMnet4上のFirewall_Router_VMのIPアドレス(
192.168.30.1)です。
- Web_Server_VMには、
-
Client_VMs:
- Client_VMsは
VMnet2 (Host-only)に接続されます。 - 内部LAN範囲内の静的IPアドレス(例:192.168.20.10/24)を構成し、ゲートウェイはVMnet2上のFirewall_Router_VMのIPアドレス(
192.168.20.1)です。
- Client_VMsは
6. 確認とトラブルシューティング (Troubleshooting)
設定後、必ず接続を確認してください。
- 各仮想マシンから
pingコマンドを使用して、互いに通信できるか確認します。 traceroute(Linux) またはtracert(Windows) を使用して、パケットの経路を追跡します。- IP構成 (Linuxでは
ip addr show、Windowsではipconfig /all) とルーティングテーブル (Linuxではip route show、Windowsではroute print) を確認し、正確であることを確認します。 - 各仮想マシン上のファイアウォール (Windows Defender Firewall、LinuxのUFWなど) が、必要な接続をブロックしていないことを確認してください。
- Virtual Network EditorのVMnet設定を常に再確認してください。
# Linux VMで役立ついくつかのテストコマンド
ip a # 各インターフェースのIP設定を表示
ip r # ルーティングテーブルを表示
ping 192.168.10.1 # ゲートウェイにping
ping google.com # DNSとインターネット接続をテスト
traceroute google.com # パケットの経路を追跡
結論
VMware Workstationで仮想ネットワークラボを構築することは、コスト削減ソリューションであるだけでなく、ネットワークスキルを磨くための非常に柔軟で強力なツールです。分離された環境を作成し、構成を簡単に変更、展開、削除できることで、実際のシステムに影響を与えることを心配せずに、さまざまなシナリオを自由に試すことができます。
基本的な仮想マシンの構成から、DMZを持つ企業ネットワークのような複雑なネットワークモデルのシミュレートまで、VMware Workstationは必要なすべてのツールを提供します。さあ、もうためらうことはありません。今日から実践を開始し、退屈な理論を貴重な実践経験に変えましょう!
