はじめに
自宅サーバーで仮想マシンやコンテナのネットワークを構築していると、「NAT」「ブリッジ」「DHCP」という言葉が必ず登場します。それぞれ役割が異なる技術ですが、まとめて理解しておくとネットワーク設計の見通しが良くなります。
本記事では、この3つの基礎概念を整理します。
NAT(Network Address Translation)とは
NAT(Network Address Translation) は、プライベートIPアドレスとパブリック(グローバル)IPアドレスを相互に変換する技術です。
インターネットに直接接続できるグローバルIPアドレスは有限であり、家庭内のすべての端末に1つずつ割り当てることは現実的ではありません。そこでルーターがNATを使い、家庭内の複数端末が持つプライベートIPアドレス(192.168.x.x等)を、インターネットに出ていく際にルーター自身の1つのグローバルIPアドレスへと変換します。
動作の流れ
- 家庭内の端末(プライベートIP)が外部サーバーへ通信を送る
- ルーターがパケットの送信元アドレスを、自分のグローバルIPアドレスに書き換えて転送する
- 外部サーバーからの応答がルーターに届くと、ルーターは対応する内部端末のプライベートIPアドレスへ送信元を書き戻し、正しい端末に届ける
この対応関係をルーターが記憶しておくことで、複数端末が同時に1つのグローバルIPアドレスを共有しながら通信できます。
NATの種類
| 種類 | 内容 |
|---|---|
| 静的NAT | プライベートIPとグローバルIPを1対1で固定的に対応づける。外部から特定のサーバーへアクセスさせたい場合に使う |
| 動的NAT | あらかじめ用意されたグローバルIPアドレスのプールから、都度動的に割り当てる |
| PAT(NATオーバーロード) | ポート番号も組み合わせて、1つのグローバルIPアドレスに複数のプライベートIPアドレスを対応づける。家庭用ルーターで最も一般的な方式 |
NATには、グローバルIPアドレスの節約に加えて、内部ネットワークの構成を外部から隠す副次的なセキュリティ効果もあります。
MASQUERADE
Linuxのiptables(パケットフィルタリング機能)には、NATを実現するためのMASQUERADEというターゲット(処理内容)があります。これは、送信元アドレスを「その通信が出ていくネットワークインターフェースに割り当てられているIPアドレス」に自動的に書き換える設定で、ルーターや仮想ネットワークのゲートウェイ役のLinuxマシンで、内部ネットワークから外部への通信を成立させる際によく使われます。
# 例: 192.168.100.0/24からの通信を、外向きインターフェース(eth0)経由でMASQUERADEする
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE
Linuxブリッジとは
Linuxブリッジは、Linuxカーネルに組み込まれた仮想的なネットワークスイッチです。OSI参照モデルのデータリンク層(レイヤー2)で動作し、物理的なネットワークスイッチと同じように、MACアドレスを学習しながら複数のネットワークインターフェース間でイーサネットフレームを転送します。
仮想化基盤(Proxmox VE等)では、物理NICと仮想マシン・コンテナの仮想NICを1つのブリッジに接続することで、あたかも同じ物理スイッチに繋がっているかのように通信させることができます。
物理NIC ──┐
├── Linuxブリッジ(仮想スイッチ) ── 仮想マシンA
仮想NIC ──┘ └─ 仮想マシンB
複数のブリッジを用意し、それぞれ異なるゲスト群を接続することで、「外部と直接通信できるネットワーク」と「外部から隔離されたネットワーク」のようにセグメントを分離することも可能です。隔離したネットワークから外部への通信だけを許可したい場合に、前述のNAT(MASQUERADE)を組み合わせるという構成がよく使われます。
DHCP(Dynamic Host Configuration Protocol)とは
DHCPは、ネットワークに接続した端末に対して、IPアドレスやDNSサーバーの情報などを自動的に配布するプロトコルです。
DHCPが無い場合、ネットワークに接続するすべての端末に対して、管理者が手作業でIPアドレスを1つずつ設定する必要があります。DHCPサーバー(多くの場合、家庭用ルーターがこの役割を兼ねる)が「未使用のIPアドレスを一定期間貸し出す(リース)」という形で自動的に払い出すことで、この手間を省いています。
DHCPが配布する主な情報
- IPアドレス(貸し出し期間=リース期間つき)
- サブネットマスク
- デフォルトゲートウェイ(通常はルーター自身)
- DNSサーバーのアドレス
家庭内で自前のDNSサーバーを運用する場合、このDHCPが配布する「DNSサーバーのアドレス」をルーターの初期設定から変更することで、家庭内のすべての端末に対して、個別設定なしに自前のDNSサーバーを使わせることができます。
まとめ
| 用語 | 内容 |
|---|---|
| NAT | プライベートIPアドレスとグローバルIPアドレスを変換する技術 |
| MASQUERADE | LinuxのiptablesでNATを実現する仕組みの1つ。送信元アドレスを出口インターフェースのIPに自動変換する |
| Linuxブリッジ | カーネル内蔵の仮想スイッチ。複数のネットワークインターフェースをレイヤー2で接続する |
| DHCP | IPアドレスやDNSサーバー情報を端末に自動配布するプロトコル |