Linux虚拟网络之Network Namespace

Network Namespace提供了对网络资源的隔离,每一个Network Namespace都拥有独立的网络栈、网络设备、IP地址和端口号、IP路由表、防火墙规则、/proc/net目录。
创建Network Namespace需要用到ip命令,创建命令如下:

yehanlin@scratchlab:~$ sudo ip netns add ns1

ns1为新的Network Namespace的名字。通过ip命令也可以查看新建的Network Namespace,命令及结果如下:

yehanlin@scratchlab:~$ ip netns show
ns1

Network Namespace已经创建了,现在应该看看其中的网络设备了,在某个Network Namespace里面执行命令的格式如下:

ip netns exec netns-name command

查看一下新Network Namespace里面的网络设备,命令及结果如下:

yehanlin@scratchlab:~$ sudo ip netns exec ns1 ip link show
1: lo:  mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

从结果可以看出,每个新的Network Namespace里面有一个本地回环设备,该设备默认是关闭的。
如果我们将command指定为Shell,那么我么将得到一个默认使用该Network Namespace的Shell,在该Shell里面执行的网络命令只作用于所属的Network Namespace。命令及结果如下:

yehanlin@scratchlab:~$ sudo ip netns exec ns1 /bin/bash
root@scratchlab:~# ip link show
1: lo:  mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

你可能感兴趣的:(网络)