【ねっとわーくなまえくうかん】

ネットワーク名前空間 とは?

最終更新:
💡 一つのLinuxで、ネットワーク環境を分ける

Linuxでネットワークに関わる資源を分離する名前空間。共有するプロセスやPod、vethによる接続と分離の範囲を解説します。

📌 このページのポイント
ネットワーク名前空間:分離と共有一つのLinux名前空間Aプロセス1・2機器・経路・ポート等同じ環境を共有名前空間Bプロセス3機器・経路・ポート等Aとは別の環境vethペア等で接続を構成同じPod内のコンテナはネットワークを共有通信にはアドレス・経路・許可等も設定
内側の枠は別のネットワーク環境で、プロセス数と名前空間数は一致するとは限りません。接続線は処理順ではなく、全資源や本番への影響まで完全に分離する保証はしません。
ひよこ ひよこ
ネットワーク名前空間は、別のパソコンを作るの?
ペンギン先生 ペンギン先生
一つのLinuxの中で、ネットワークに関わる資源を分ける仕組みだよ。ネットワーク機器、IPの経路やファイアウォールの規則、ソケットのポート等を分離する。別の物理マシンを作るわけではないんだ。
ひよこ ひよこ
一つのプロセスに、一つずつある?
ペンギン先生 ペンギン先生
複数のプロセスが同じ名前空間を使えるよ。図のAでは二つのプロセスが同じネットワーク環境を共有する。分離の単位は名前空間であり、プロセスの個数と必ず一致するわけではないんだ。
ひよこ ひよこ
コンテナごとに、必ず違うIPなの?
ペンギン先生 ペンギン先生
構成によるよ。Kubernetesでは同じPodのコンテナがネットワーク名前空間を共有し、IPアドレスやポートも共有する。コンテナという名前だけで、いつも別々のネットワーク環境と決めつけないようにしよう。
ひよこ ひよこ
分けた名前空間同士は、通信できる?
ペンギン先生 ペンギン先生
vethという仮想ネットワーク機器のペア等で接続できるよ。一方から送ったパケットを、もう一方で受け取れる。両端を違う名前空間に配置する使い方があるけれど、アドレスや経路等も構成するんだ。
ひよこ ひよこ
分離したら、どんな実験も安全?
ペンギン先生 ペンギン先生
分けるのはネットワークに関わる資源だよ。ホストへつながる構成や、権限等にも注意が必要。名前空間があるだけで、本番へ影響がないとか、すべての資源が完全に分離されると保証するものではないんだ。
もっと詳しく知りたい人へ

同じPodのコンテナはlocalhostで通信する?

同じPod内のコンテナはネットワーク名前空間を共有し、localhostで相互に通信できます。ポートも共有するので、待ち受けるポートの使い方を調整します。別Podへの通信とは区別します。

vethは、片方だけ作る仮想ケーブル?

vethは接続されたペアとして作られます。片方から送信したパケットをもう片方が受信します。ペアを作っただけで任意の通信先への経路や許可がすべて整うわけではありません。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ネットワーク名前空間」って出てきたら「Linuxの中で、ネットワーク環境を分ける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Network Namespace」 = ネットワーク資源の名前空間
💬 Linuxの資源分離に関わる名前空間の一つです。名前空間はプロセス一つごとの専用ネットワークを必ず作る意味ではなく、複数のプロセスが同じ環境を共有できます。

参考資料

← 用語集にもどる