背景
在linux系统中通过netns创建虚拟主机,作用同VM,相比于VM其优势是随时创建,随时删除,操作方便
第一步:创建ns
-
增加虚拟网络命名空间vm,vm是命名空间的名字,可以随意起,就创建了一台虚拟ns
ip netns add vm -
显示物理机里的命名空间,加不加list都行,显示刚创建的vm
ip netns (list)
vm -
进入netns,也可以不进入但执行每一个ip link都需要在前面加上ip netns exec vm
ip netns exec vm bash
第二步:为ns创建网卡,打通物理机
-
在物理机和netns上添加一对veth设备,veth设备是成对出现的,两个设备之间的数据是相互贯通的,这样两个设备间数据就是互通的,其中nc-netns建立在ns上,nc-host建立在br-int网桥
ip link add nc-host type veth peer name nc-netns
-
启动物理机上网卡
ip link set nc-host up -
将nc-netns的网卡添加到vm的空间,但是在本地网络中无法查看到,exec进入vm,可以看到nc-netns这个网卡
ip link set nc-netns netns vm -
启动netns上网卡
ip link set nc-netns up -
启动物理机上环回口
ip link set l0 up -
修改vm中网卡的名字为eth0
ip link set nc-netns name eth0
第三步:给虚拟网卡分配ip地址
-
给netns的虚拟网卡增加ip地址
ip addr add dev nc-netns 192.168.1.0/16 -
给netns的虚拟网卡增加mac地址
ip link set nc-netns add fe:80:fe:00:89 -
测试连通性
此时在本地ping 192.168.1.100通了,我们在物理机通过网桥的形式把ns-host这个网卡添加到br-int里,利用veth相互之间数据贯通的特性实现网络互通 -
删除netns
ip netns del vm