二层协议 — vxlan功能

说明:
  vxlan功能可以实现将相同网段的不同局域网之间进行隧道连接,站在用户角度来看就相当于两个不同的局域网被整合成了同一个局域网。
  实现原理是在OSI模型中的第二层数据链路层中将原始数据帧进行二次封装添加UDP包头。在两台能够相互访问的的设备上,R1将封装完的UDP数据发送给R2,R2接收到数据先解析UDP数据,发现是vxlan数据,将解析出来的原始数据帧,进行再次解析,将数据发送给原始数据帧的目的地址。(详情查找网络资料)
(补充:Linux内核从 Linux 3.7 版本开始支持VXLAN,到了内核3.12版本对VXLAN的支持已经完备,支持单播和组播,IPv4和IPv6。)

一、ubuntu 建立 vxlan隧道通信

  分别在同一局域网下的ubuntu1和ubuntu2上搭建vxlan隧道,上网地址分别是192.168.1.10和192.168.1.20,网口eth0;并都新建 vxlan0接口,地址分别是 10.0.0.10和 10.0.0.20,即VTEP地址。

1、点对点配置
【ubuntu1】
ip link add vxlan0 type vxlan id 10 remote 192.168.1.20 local 192.168.1.10 dstport 4789 dev eth0
ip addr add 10.0.0.10/24 dev vxlan0
ip link set vxlan0 up

【ubuntu2】
ip link add vxlan0 type vxlan id 10 remote 192.168.1.10 local 192.168.1.20 dstport 4789 dev eth0
ip addr add 10.0.0.20/24 dev vxlan0
ip link set vxlan0 up
2、多播配置
【ubuntu1】
ip link add vxlan0 type vxlan id 10  group 239.1.1.1 dstport 4789 dev eth0
ip addr add 10.0.0.10/24 dev vxlan0
ip link set vxlan0 up

【ubuntu2】
ip link add vxlan0 type vxlan id 10  group 239.1.1.1 dstport 4789 dev eth0
ip addr add 10.0.0.20/24 dev vxlan0
ip link set vxlan0 up
3、测试

  在ubuntu1上抓包,运行命令:tcpdump -i eth0 host 192.168.1.20 -s0 -v -w ./vxlan_1.pcap。 在ubuntu2上 ping 10.0.0.10 -c 4,可以ping通地址。将抓包文件导出放到软件“wireshare”上进行查看分析来自192.168.1.20的数据包,可以发现该数据包首先解析出来的是UDP协议数据,后再解析出ICMP数据,详细解析数据包结构可以确认该数据为vxlan格式数据包。

二、路由器上建立 vxlan隧道通信

  准备三台路由器R1、R2、R3,其中 wan接口eth0,lan接口br0,三台路由器在同一个局域网下,lan口下分别接PC1、PC2、PC3,IP地址分别为192.168.9.10、192.168.9.20、192.168.9.30。
  【R1】eth0: 192.168.1.1   br0: 192.168.9.1
  【R2】eth0: 192.168.1.2   br0: 192.168.9.2
  【R3】eth0: 192.168.1.3   br0: 192.168.9.3
  (备注:路由器的 lan口 br0相当于 vxlan的 vtep,故ip地址不能冲突)

1、内核vxlan配置
make menuconfig
	Kernel modules
		---> Network Support
			---> <*> kmod-vxlan
	Network
		---> <*> vxlan
		---> Routing and Redirection
			<*> ip-bridge
			<*> ip-full
2、点对点配置
【R1】
ip link add vxlan0 type vxlan id 10 remote 192.168.1.2 local 192.168.1.1 dstport 4789 dev eth0
ip link set vxlan0 up
brctl addif br0 vxlan0			// vxlan0桥接到br0上
【R2】
ip link add vxlan0 type vxlan id 10 remote 192.168.1.1 local 192.168.1.2 dstport 4789 dev eth0
ip link set vxlan0 up
brctl addif br0 vxlan0			// vxlan0桥接到br0上

  在PC1上 ping 192.168.9.20正常,在PC2上 ping 192.168.9.10正常。分别在R1和R2上抓包可以发现对端过来的数据包是vxlan格式数据包。
  命令 “ip -d link show dev vxlan0” 可以查看接口详细信息;命令“bridge fdb | grep vxlan0” 或者 “bridge fdb show dev vxlan0” 查看fdb表内容。

3、多播配置
【R1】【R1】【R1】
ip link add vxlan0 type vxlan id 10 group 239.1.1.1 dstport 4789 dev eth0
ip link set vxlan0 up
brctl addif br0 vxlan0			// vxlan0桥接到br0上

  多播配置完成后,可以在PC1、PC2、PC3上进行相互ping通,分别在R1、R2和 R3上进行抓包可以发现PC1、PC2和 PC3之间相互通信的包都为vxlan数据格式。

注意:R1、R2和 R3路由器上的lan口对应vxlan的 VTEP隧道终点,因此三个lan口ip不能冲突;vxlan建立后,PC1、PC2和 PC3相当于在同一个内网下,因此三台电脑的ip也不能发生冲突。

4、关闭vxlan
ip link del vxlan0			// 删除vxlan接口
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值