linux:kernel:namespace:network_namespaces

文書の過去の版を表示しています。


名前空間の操作,その7: ネットワーク名前空間

Linux 名前空間について最後に見てからしばらく時間が経った.このシリーズには最後に埋めなければいけない欠けたピースがあった.それはネットワーク名前空間である.名前が示すように,ネットワーク名前空間はネットワークのデバイス,アドレス,ポート,ルーティング,ファイアウォールのルール等を分割する.本質的に,稼働中の単一のカーネルインスタンス内でネットワークを仮想化する.ネットワーク名前空間は 2.6.24 で導入された.ほとんど丁度 5 年前の事である.それ以来,この機能は多数のデベロッパーからは大部分無視されてきたように見える.

他のネットワーク名前空間と同様に,ネットワーク名前空間は clone() システムコールのフラグ CLONE_NEWNET を与えることによって作成する.コマンドラインからは,ip コマンドを使ってセットアップを行い,ネットワーク名前空間を扱うのが便利である.例えば,

    # ip netns add netns1

このコマンドは netns1 という名前のネットワーク名前空間を新たに作る.ip コマンドがネットワーク名前空間を作成した時,その名前空間に対する bind mount を /var/run/netns 以下に作成する.これにより,名前空間内でプロセスが実行されていない場合でもネットワーク名前空間が持続でき,名前空間の操作もそれを通して可能になる.ネットワーク名前空間は,使用可能になるまでにかなりの設定が必要となるので,この機能はシステム管理者にとっては重宝する.

“ip netns exec” コマンドで名前空間内でネットワーク管理コマンドを実行可能である.

    # ip netns exec netns1 ip link list
    1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

このコマンドは名前空間内のインターフェースを表示する.

    # ip netns delete netns1

このコマンドは指定したネットワーク名前空間を参照している bind mount を除去する.しかし,名前空間自身は,内部でプロセスが動いている限りは持続する.

  • linux/kernel/namespace/network_namespaces.1391503409.txt.gz
  • 最終更新: 2014/02/04 08:43
  • by tenforward