09 June 2014

Linux Network Namespaces

Linux kernel在2.6.29中加入了namespaces,用于支持网络的隔离,我们看一下namespace是如何使用的

创建与配置

创建一个名为blue的namespace

ip netns add blue

列出所有的namespace

ip netns list

分配网络接口到namespace上

我们可以将一对veth中的一个分配到namespace上,将另一个分配到另一个上。

veth的创建如下:

ip link add veth0 type veth peer name veth1

这样就创建了一对veth,veth0 和veth1。 veth的作用就像一根网线一样,从一端进入的数据会从另一端出来。 使用

ip link list

查看创建的veth设备。

如果我们想把刚创建的namaespace与global/default namespace连接,我们可以这样做:

ip link set veth1 netns blue

veth1 从global从消失了,因为这对veth的另一端veth0在default中,这样我们就可以将两个 namespace联系起来了。

使用如下命令查看blue namespace中的连接

ip netns exec blue ip link list

如何配置namespace中的接口呢?可以使用如下命令:

ip netns exec <network namespace> <command to run against that namespace>

连接到物理网络

可以使用linux bridge 或者 openvswith bridge。将物理接口和veth的一个加入到同一个bridge就可以了。



blog comments powered by Disqus