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就可以了。