虚拟专用网项目启动
一.前提知识:
概念:
1.sdn:软件定义网络:
2.vxlan:基于ip层上的局域网,数目无限制;vxlan的header8个字节,8 bit作为flag,24bit 作为vni(该设备在vxlan网络中的id);注意这里设置包长度比普通mtu少点,因为加了包头
3.net namespace:linux系统,网络虚拟空间,相当于一个小的linux系统,里面只有网络接口;
4.veth:虚拟网口,VETH 设备是一种成对出现的点对点网络设备,从一段输入的数据会从另一端改变方向输出,通常用于改变数据方向,或连接其它网络设备。虚拟网线,连接两个虚拟网络空间
5.linux的命名空间:为虚拟化提供支持,linux支持六种命名空间,mount命名空间、UTS命名空间、IPC命名空间、用户命名空间、PID命名空间、网络命名空间,参考:http://blog.csdn.net/mrpre/article/details/25385891
6.隧道网络:通过一种协议来支持另外一种协议;二层网络协议只在局域网中使用,对二层网络包封装ip包,使得二层网络能够跨越局域网,这样就叫做隧道。vlan(是二层对二层封装,不跨边界),vpn(ip三层对传输层封装,可跨越边界),vxlan(是ip层对二层包封装)
实验:
1.两虚拟网互通:
ubuntu机器一台,建立网络192.168.56.0/24,192.168.50.0/24; 建立虚拟机192.168.56.57,192.168.56.58,虚拟机 192.168.50.2;本机有两个网桥,分别对应192.168.56.0/24,192.168.100.0/24,本机的ip为192.168.56.1,192.168.56.1
本机添加路由功能,是的两个网络能够ping通;
开启本机forward(路由转发功能)
$echo "1">/proc/sys/net/ipv4/ip_forward ###临时开启路由转发功能 $vi /etc/sysctl.conf ###永久开启转发将net.ipv4.ip_forward= 1 前注释除掉
添加路由指令:所有50网段转向50.1接口,56网络转向56.1接口
$ip ro add 192.168.50.0/24 via 192.168.50.1 $ip ro add 192.168.56.0/24 via 192.168.56.1
使用ping指令看192.168.50.2与192.168.56.57是否互通,tcpdump命令查看包;两个网段并不能互通
192.168.50.2$ping 192.168.56.57 localhost$tcpdump -i virbr1 localhost$tcpdump -i virbr2
经过网络搜索解决问题,由于本机只有一块单网卡,所有转发必须开通单网卡转发;参考:http://bbs.chinaunix.net/thread-4158409-2-1.html
localhost$iptables -I FORWARD -i virbr1 -o virbr2 -j ACCEPT
localhost$iptables -I FORWARD -i virbr2 -o virbr1 -j ACCEPT
在虚拟机上设置路由,经过以上配置可以互通
192.168.50.2$ip ro add 192.168.56.0/24 via 192.168.50.1 192.168.56.57$ip ro add 192.168.50.0/24 via 192.168.56.1
2.ip指令:比ifconfig功能更加强大
在机器192.168.50.1上建立
$ip netns add test1 ###添加网络命名空间
$ip li add br1 type bridge ###添加网桥设备
创建veth网口,veth0,veth1
$ ip link add veth0 type veth peer name veth1
$ ip li
添加vxlan
192.168.50.2$ip li add vxlan1 type vxlan id 518 group 192.168.120.1 local 192.168.50.2 mtu 1500 dev eth0 192.168.56.57$ip li add vxlan1 type vxlan id 518 group 192.168.120.1 local 192.168.56.57 mtu 1500 dev eth0