Linux bridgeについて
Proxmox VEについて調べている際、Linux bridgeについて戸惑ったので、ここに記しておきます。
Linux bridgeはブリッジではない
結論から書くと、Linux bridgeはネットワークで言うところのブリッジではありません。もっと複雑なものです。Linux bridgeは、私が理解する限り次の3つの要素からなるソフトウェア・モジュールです。
- 物理ネットワーク・インターフェースとのブリッジ
- ハブ
- ホストLinuxとの接続インターフェース
「物理ネットワーク・インターフェースとのブリッジがあるのだから、Linux bridgeをブリッジと呼んでも間違ではない」と言う人もいるかもしれません。「タイヤがあるのだから、自動車をタイヤと呼んでも間違いではない」と言うのもまあ見識と言えるかもしれませんが、私は与しません(Linux bridgeの構造を説明せずにブリッジとだけ呼ぶWEBページが氾濫していてずいぶん時間を取られたので、かなり機嫌が悪いです)。
運用形態
こういった構造ですので、Linux bridgeにはいくつかの利用形態があります。
全部の機能を使う場合
この形態を理解すると、他の使い方の理解も簡単です。
まず、『物理ネットワーク・インターフェースとのブリッジ』を使って、ホストLinuxの物理ネットワーク・インターフェース(eth0など)と接続します。このとき、物理ネットワーク・インターフェースはIPアドレスを失います。最初のうちは、これが理解できなくて苦労しました。ネットワーク・ブリッジはレイヤー2で動作し、IPプロトコルよりも下の層のサービスです。したがって、IPアドレスを持ちません。ブリッジと接続されたネットワーク・インターフェースはブリッジの『口(くち)』でしかなく、結果的にIPアドレスを失うのです。
言いかえると、これまで物理ネットワーク・インターフェースのIPアドレスだと思っていたものは、実際には物理ネットワーク・インターフェースを通して外部と接続する通信スタックのIPアドレスだったということです。
そして、この失われたIPアドレスの行き場が『ホストLinuxとの接続インターフェース』です。これはその名の通り、Linux bridgeに対してホストの通信スタックが接続するインターフェースです。IPアドレスは使用する通信スタックに与えるのですが、ホストLinuxの構成上はこのIPアドレスを形式上Linux bridgeに与えることになります。そのため、よくわかっていないとまるで「レイヤー2機器であるブリッジがIPアドレスを持つ」ように見えるため混乱してしまいます。
『ハブ』は、『物理ネットワーク・インターフェースとのブリッジ』『ホストLinuxとの接続インターフェース』を繋げる役割をしており、その点で物理ハブと同じです。物理的なハブと同じように複数のネットワーク・インターフェースを持つことが可能で、それらのネットワーク・インターフェースにVMが接続されることになります。
物理ネットワーク・インターフェースとのブリッジを使わない場合
Linux bridgeを物理ネットワーク・インターフェースと接続して使わない場合、ハブに接続されているVM群は外部ネットワークとは通信できなくなります。Linuxとは接続できます。
ハブを使わない場合
ハブを使わないことはできないのですが、VMを1台の接続しない場合は見かけの上でハブを使っていないことになります。この場合、ホストLinuxが物理ネットワークにアクセスしますので、Linux bridgeは銅線のように見えます。
ホストLinuxとの接続ネットワーク・インターフェースを使わない場合
ホストLinux接続ネットワーク・インターフェースを使わない場合、VM群は外部ネットワークとのみ接続できます。この場合、ホストはLinux bridgeに接続された物理ネットワーク・インターフェースからは外部ネットワークに接続できません。
ハブしか使わない場合
ハブしか使わない場合は、VM群は互いにアクセスすることしかできず、外部ネットワークやホストLinuxと直接通信することはできません。ファイアーウォールで遮断されたサブネットワークがこの形態をとります。
この構成は、次の節で説明する構成のサブセットです。
複数のLinux bridgeがある場合
複数のLinux bridgeを使うと、「ルーター/ファイアーウォールで隔離されたVM群のネットワーク」を作ることができます。このルーター/ファイアーウォールもVMです。
Discussion