在Linux虚拟化技术中,网络级别上最重要的三项技术是网络名称空间、线对和Veth桥接器或虚拟交换机技术。
今天,我们将指导您学习Linux网络虚拟化技术。
我们首先了解下Network
Namespace,它是由Linux内核提供,是实现网络虚拟化的重要功能。通过创建多个隔离的网络空间,实现网络资源的隔离。
不同的Network Namespace的资源互相不可见,彼此之间无法通信。如下图所示:
Network Namespace
ip netns命令
Network
Namespace是Linux内核提供的功能,本文借助ip命令来完成各种操作。ip命令来自于iproute2安装包,一般系统默认安装,如果没有的话,读者可自行安装。
ip命令管理的功能很多,和Network Namespace有关的操作都在其子命令ip netns下进行的,可以通过ip netns
help查询命令帮助信息
[root@qll253 ~]# ip netns helpUsage: ip netns list
ip netns add NAME
ip netns set NAME NETNSID
ip [-all] netns delete [NAME]
ip netns identify [PID]
ip netns pids NAME
ip [-all] netns exec [NAME] cmd ...
ip netns monitor
ip netns list-id
创建Network Namespace
1、通过 ip netns add 命令创建一个名为ns0的网络命名空间:
[root@1ll253 ~]# ip netns add ns02、查询命名空间
[root@1ll253 ~]# ip netns listns0
3、命名空间所在目录
[root@1ll253 ~]# ls /var/run/netns/ns0
注意:新创建的 Network Namespace 会出现在/var/run/netns/目录下。如果需要管理其他不是 ip netns 创建的
network namespace,只要在这个目录下创建一个指向对应 network namespace 文件的链接即可。
操作Network Namespace
对于每个 Network Namespace 来说,它会有自己独立的网卡、路由表、ARP 表、iptables 等和网络相关的资源。ip命令提供了ip
netns exec命令可以在对应的 Network Namespace 中执行命令。
1、查看网络命名空间 ns0 的网卡信息
[root@1ll253 ~]# ip netns exec ns0 ip addr1: lo:mtu 65536 qdisc
noop state DOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd
00:00:00:00:00:00
每个 namespace
在创建时会自动创建一个回环接口lo,默认不启用。它的作用和Linux系统中默认看到的lo一样,都是为了实现loopback通信