【入門編】 ネットワーク仮想化の基礎:ブリッジ接続とNAT接続の挙動 – クラウドインフラと仮想化ネットワーク実践ガイド

こんにちは!SRE兼クラウドアーキテクトの私です。普段はAWSやGCP、そしてKubernetesの巨大な仮想ネットワークの海を泳ぎながら、日々システムの安定稼働と格闘しています。

インフラの世界へ足を踏み入れたばかりの頃、「仮想マシン(VM)」や「コンテナ」を動かすときに必ずぶ walls(壁)がありますよね。そう、「ネットワークの設定」です。

「あれ? ブリッジ接続ってなに?」
「NATにすると、なんで外のインターネットと繋がるの?」

教科書を開くと、専門用語のオンパレードで頭がクラクラしてしまいますよね。一歩ずつ、しっかりと理解していけば怖くありません!
今回は、私たちが普段使っている身近な仕組みに例えながら、仮想化ネットワークの基本である「ブリッジ接続」と「NAT接続」のパケットの旅を紐解いていきましょう。

—

1. 仮想化ネットワークって、現実世界で言うとどういうこと?

まずは、ホストOS(あなたのパソコンや物理サーバー)の上で動くゲストOS(仮想マシン)が、どのように外の世界と繋がっているのかをイメージしてみましょう。

現実世界に置き換えるなら、ホストOSは「大きなマンションの管理人室」、仮想マシンはそのマンションの一室に住んでいる「住人」です。

住人が外の世界(インターネット)と手紙(データパケット)のやり取りをするには、どうすればよいでしょうか?
この「マンションと外の世界をどう繋ぐか」のルールを担うのが、仮想ブリッジとNATという仕組みなんです。

—

2. ブリッジ接続:仮想マシンが「同じフロアの住人」になる方法

ブリッジ接続の正体

ブリッジ接続は、一言で言うと「仮想マシンを、物理的なネットワークに直接ケーブルでぶら下げる」ような仕組みです。

現実世界で例えるなら、マンションの各部屋に直接、外の道路から専用の郵便受けをドーンと直結させるようなイメージです。

ホストOSが持っている物理NIC(実際のLANケーブルが刺さるポート)の前に、ソフトウェア上の「仮想的なハブ(スイッチングハブ)」を作ります。仮想マシンはこの仮想ハブに接続されるため、まるで物理的なLANケーブルがもう一本伸びてきたかのように振る舞います。

ブリッジ接続のメリット・デメリット

  • メリット: 会社のネットワークや自宅のルーターから見ると、仮想マシンは「もう一台の独立した実物のパソコン」に見えます。そのため、ルーターから直接IPアドレス(192.168.1.50 など)をもらうことができ、外部から直接アクセスしてもらうのが非常に得意です。
  • デメリット: 自宅やオフィスのネットワーク管理者が割り当てているIPアドレスのルール(DHCP)に依存するため、ネットワーク環境が変わると仮想マシンの設定も変えなければならないことがあります。

—

3. NAT接続:仮想マシンを「秘密基地」で守る方法

NAT接続の正体

一方のNAT(Network Address Translation)接続は、仮想マシンを外の世界からすっぽりと隔離する仕組みです。

現実世界に例えるなら、仮想マシンは「外の道路からは存在が見えない秘密基地(マンションの内部)」に住んでいます。秘密基地の中の住人たちは、自分たちだけの内輪のIPアドレス(10.0.2.15 など)を持っています。

外の世界へ手紙を出したいときはどうするでしょうか?
秘密基地の窓口係(NATルーター)が、住人の手紙を一度受け取り、「あ、これ私が外に出しておきますね。返事はいったん私宛にください」と言って、自分の住所(ホストのIPアドレス)に書き換えてから外へ送り出します。そして、外から返事が返ってきたら、窓口係が元の住人に手紙を届けます。

これがNATの仕組みです。

NAT接続のメリット・デメリット

  • メリット: 外の世界からは仮想マシンの存在が見えないため、セキュリティ面で非常に安全です。また、ホストOSさえインターネットに繋がっていれば、仮想マシンの側で面倒なネットワーク設定をしなくても自動的に外へ飛び出せます。
  • デメリット: 外の世界(例えば、同じネットワークにいる別のパソコン)から、直接こちらの仮想マシンに話しかけることができません(窓口係がブロックしてしまうため)。

—

4. 実務で触れる設定ファイルを見てみよう!

言葉だけではイメージしにくいので、Linuxの仮想化環境(KVMやlibvirtなど)でよく使われるネットワーク定義(XML形式の設定ファイル)を覗いてみましょう。

実務では、このような設定を書いて仮想スイッチやNATを作ります。

① ブリッジ接続のネットワーク設定例

物理NIC(ここでは eth0 とします)と仮想マシンをブリッジで直結する設定です。

<network>
  <!-- ネットワークの名前 -->
  <name>bridge-network</name>
  <!-- 「bridge」モードを指定。物理NICと仮想スイッチを直結します -->
  <bridge name='br0' stp='on' delay='0'/>
  <!-- ホスト側の物理インターフェースを指定して外の世界と繋げます -->
  <forward mode='bridge'/>
  <interface dev='eth0'/>
</network>

この設定を行うと、br0 という仮想のスイッチが作成され、そこに参加した仮想マシンは物理ルーターから直接IPアドレスをもらいに行けるようになります。

② NAT接続のネットワーク設定例

仮想マシン専用のプライベート空間を作り、ホストが代理で通信(NAT)を行う設定です。

<network>
  <!-- ネットワークの名前 -->
  <name>nat-network</name>
  <!-- 仮想空間内で使うルーターのIPアドレスとDHCPの範囲 -->
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <!-- 仮想マシンに自動割り当てするIPアドレスの範囲 -->
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
  <!-- 「nat」モードを指定。外へ出る通信はすべてホスト経由に変換されます -->
  <forward mode='nat'/>
</network>

ここでは、仮想マシンたちは 192.168.122.0/24 という安全なプライベートネットワークに配置され、外に出るときはルーター役(192.168.122.1)を経由して外の世界へ冒険に出かけることになります。

—

5. トラブルシューティングの現場から:どっちを選ぶべき?

現場でインフラの設計をしていると、よく「どっちのモードにすればいいですか?」と相談を受けます。SREとしての判断基準はシンプルです。

  • 開発用のテストサーバーや、安全にインターネットのパッケージ(apt や yum)をダウンロードしたいだけの場合
  • 👉 NAT接続が圧倒的に楽で安全です。余計なIPアドレスを消費せず、ホストの環境に依存しづらいためです。
  • 仮想マシン上にWebサーバーを立てて、社内の他のメンバーにもすぐに動作確認してもらいたい場合
  • 👉 ブリッジ接続を選びましょう。直接IPアドレスが振られるため、他のPCからブラウザでアクセスできるようになります。

—

まとめ:ネットワークの仕組みを味方に付けよう

今回は、仮想化ネットワークの基本である「ブリッジ接続」と「NAT接続」の挙動を、郵便配達や秘密基地に例えて解説しました。

  • ブリッジ接続:物理ネットワークの延長線。仮想マシンも「一人の独立した住人」になる。
  • NAT接続:安全な秘密基地。窓口係(ホスト)が外との通信を代行してくれる。

インフラの世界は一見すると複雑に見えますが、現実世界のルールを少しデジタルに置き換えてみると、スッと頭に入ってきます。
今回の知識をベースに、ぜひご自身の環境でも仮想マシンやコンテナのネットワーク設定を触ってみてくださいね。

それでは、素晴らしいクラウドライフを!

コメント

タイトルとURLをコピーしました