net namespace:可以在单机上面创建相互隔离开的网络环境,步骤如下:
第一步:创建网络空间。工具:ip netns
1.介绍:ip netns是进程网络空间管理
2.用法:ip netns {list | add delete | exec | identify | pids | monitor等}
3.创建两个网络空间ns1和ns2,互不干扰,有独立的网络环境如:ip、网管、掩码等
ip netns add ns1
ip netns add ns2
第二步:如果没有多个网卡,需要创建虚拟网卡设配。工具ip link add XXX type veth peer name XXX.
1.介绍:虚拟网络创建的时候都是成对出现,一端接受信息一端发送信息,创建成对的虚拟网卡可以放到不同的network namespace里面去从而达到network namespace之间互相通信。
2.用法:ip [{-s | -v 等等}] link [ {add | delete | set | show} ] type [{bridge| bond | can | vcan | veth | vlan 等}]
3.创建一对虚拟网卡tap1和tap2
ip link add tap1 type veth peer name tap2
第三步:把两个虚拟网卡move到两个network namespace中去。工具:ip link set 网络空间的名字 netns 虚拟网卡的名字
1.介绍:把创建好的一对虚拟网卡分别移到不同的网络 空间中去。
2.用法ip link set {DEVICE | group GROUP} {up | down | arp {on | off}} | promisc {on | off} | mtu MTU | netns NAME等
3.把tap1、tap2 move到ns1 和 ns2中去。
ip link set tap1 netns ns1
ip link set tap2 netns ns2
第四步:可以查看不同的network namespace 中的网络设备、IP情况。工具:ip netns exec ns1 comman
1.ip netns exec ns1 查看ns1这个网络空间的情况。comman是在 ns1 空间中要执行的关于网络的命令,用法和真是的机器一样
2.用法:略
3.给ns1空间中的stap1网卡设置IP,子网掩码并且开启
1)ip netns exec ns1 ip link show|list :查看ns1空间中网卡情况
2)ip netns exec ns1 ip link set dev tap1 down :关闭ns1空间中的tap1网卡
3)ip netns exec ns1 ip address add 192.68.102.40/24 broadcast + dev tap1:给ns1空间中的tap1网卡设置IP和掩码相关信息
4)ip netns exec ns1 ip link set dev tap1 up 开启ns1空间中的tap1网卡
ns2同样操作,略;
第二种模拟案例:多个network namespace和物理主机之间互相通信,既ns1和ns2和eth0之间通信。需要桥工具,bridge-utils
第一步:创建桥
1.brctl 用来创建管理桥的工具,和 ip link add xxx type bridge 一样功能
2.创建br0-test桥,类似交换机,把多个网卡绑定到br0-test上面,类似VLAN功能。br0-test就是交换机/VLAN的名字,类似把网线插到交换机上面一样
1).brctl addbr br0-test 创建一个桥
2)brctl stp br0-test off 关闭stp功能,减少网络传输过程中数据”变脏“
3)ip link set dev br0-test up 开启网桥
第二步:创建network namespace
1.ip netns add ns1/ns2
第三步创建虚拟网卡
1.创建两队虚拟网卡
1) ip link add tap1 type veth peer name br-tap1 创建一对虚拟网卡,tap1(网络空间中)和br-tap1(网桥端)
2)brctl addif addif br0-test br-tap1 把”网线br-tap1“插到”交换机“br0-test上面。
3)ip link set tap1 netns ns1 把虚拟网卡tap1move到ns1网络环境中去。
4)ip netns exec ip link set dev tap1 up 开启ns1空间中的网卡
5)ip link set dev br-tap1 up 开启虚拟网卡的另一端br-tap1
ns2中通ns1一样。略
其余同上