VMネットワーキング
作成日:
VM network infrastructure
概要
仮想マシン(VM)のネットワーク設定に関する知識とメモ。
ネットワークモードの種類
仮想マシンには主に3つのネットワークモードがある。
| モード | 外部からのアクセス | インターネット接続 | ホストとの通信 | 使用例 |
|---|---|---|---|---|
| NAT | ❌ 不可 | ✅ 可能 | ❌ 制限あり | 一般的なWeb閲覧、開発 |
| ブリッジ | ✅ 可能 | ✅ 可能 | ✅ 可能 | サーバー公開、ネットワークテスト |
| ホストオンリー | ❌ 不可 | ❌ 不可 | ✅ 可能 | 隔離されたテスト環境 |
NAT(Network Address Translation)
NATとは
VMがホストマシンのIPアドレスを共有してインターネットにアクセスする方式。
動作の仕組み
[インターネット]
↑
↓ (ホストのIPアドレスを使用)
[ホストマシン] ← 192.168.1.100(外部から見えるIP)
↑
↓ NAT変換
[仮想マシン] ← 10.0.2.15(内部プライベートIP)
- 送信時: VMからの通信は、ホストのIPアドレスに変換されてインターネットに出ていく
- 受信時: 外部からの応答は、ホストがNATテーブルを参照してVMに転送
NATのメリット
- セキュリティ: 外部から直接アクセスできない
- 簡単な設定: ネットワーク設定が不要
- IPアドレス節約: ホストのIPを共有
NATのデメリット
- 外部アクセス制限: ポートフォワーディングが必要
- VM間通信制限: 他のVMやホストからの直接通信が制限される
ポートフォワーディング
外部からVMにアクセスするには、ホストのポートをVMのポートに転送する設定が必要。
[外部クライアント] → [ホスト:8080] → [VM:80]
VirtualBoxでの設定例:
- VM設定 → ネットワーク → 高度な設定 → ポートフォワーディング
- ホストポート: 8080、ゲストポート: 80 を設定
ブリッジモード
ブリッジとは
VMが物理ネットワークに直接接続され、独立したIPアドレスを持つ方式。
動作の仕組み
[インターネット]
↑
↓
[ルーター/DHCP]
↑
┌───┴───┐
↓ ↓
[ホスト] [VM]
192.168.1.100 192.168.1.101
- VMは物理ネットワーク上の独立したデバイスとして認識される
- DHCPから独自のIPアドレスを取得
ブリッジのメリット
- 完全なネットワークアクセス: 外部から直接アクセス可能
- VM間通信: 他のVMやホストと自由に通信
- サーバー公開: Webサーバーなどの公開に適している
ブリッジのデメリット
- IPアドレス消費: VMごとにIPアドレスが必要
- セキュリティリスク: 外部から直接アクセス可能
- ネットワーク依存: 物理ネットワークの影響を受ける
ホストオンリーモード
ホストオンリーとは
VMがホストマシンとのみ通信できる隔離されたネットワーク。
動作の仕組み
[インターネット]
↑
↓
[ホストマシン] ← 192.168.1.100(外部ネットワーク)
↑ 192.168.56.1(ホストオンリーネットワーク)
↓
[仮想マシン] ← 192.168.56.101(ホストオンリーネットワーク)
ホストオンリーのメリット
- 完全な隔離: 外部ネットワークから完全に分離
- 安全なテスト環境: マルウェア解析などに適している
- ホストとの通信: ファイル共有やSSH接続が可能
ホストオンリーのデメリット
- インターネット不可: パッケージのダウンロードなどができない
- 外部サービス利用不可: API連携などのテストが制限される
モード選択の指針
| ユースケース | 推奨モード |
|---|---|
| 一般的な開発・Web閲覧 | NAT |
| サーバー公開・外部からのアクセス | ブリッジ |
| セキュリティテスト・隔離環境 | ホストオンリー |
| 複数VMのクラスター構築 | ブリッジ または 内部ネットワーク |
Docker DesktopとNAT
macOS/WindowsのDocker Desktopでは、内部でLinux VMが動作しており、このVMはNATモードでホストと接続されている。
# ポートフォワーディングでコンテナを公開
docker run -p 8080:80 nginx
# → ホストの8080ポートへのアクセスがコンテナの80ポートに転送される
関連: Docker