配置GRE 隧道
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置GRE 隧道相关的知识,希望对你有一定的参考价值。
其中router1为总部路由 router2、router3为分部路由
要求使用静态路由的方式配置
结果:配置GRE隧道后,总部和各分部PC能够相互ping
网上看到有一个一样的,但是按照他的配置不成功
r1:
conf t
int f0/1
ip add 172.16.1.1 255.255.255.0
no sh
int f0/0
ip add 14.0.0.1 255.255.255.0
no sh
exit
router rip
ver 2
no au
net 14.0.0.0
exit
int tunnel 0
ip add 192.168.2.1 255.255.255.0
tunnel source 14.0.0.1
tunnel des 24.0.0.2
int tunnel 1
ip add 192.168.3.1 255.255.255.0
tunnel source 14.0.0.1
tunnel des 34.0.0.3
exit
router ospf 1
network 192.168.2.0 0.0.0.255 a 0
network 192.168.3.0 0.0.0.255 a 0
network 172.16.1.0 0.0.0.255 a 0
exit
R2:
conf t
int f0/1
ip add 172.16.2.1 255.255.255.0
no sh
int f0/0
ip add 24.0.0.2 255.255.255.0
no sh
exit
router rip
ver 2
no au
net 24.0.0.0
exit
int tunnel 0
ip add 192.168.2.2 255.255.255.0
tunnel source 24.0.0.2
tunnel des 14.0.0.1
exit
router ospf 1
network 192.168.2.0 0.0.0.255 a 0
network 172.16.2.0 0.0.0.255 a 0
exit
R3:
conf t
int f0/1
ip add 172.16.3.1 255.255.255.0
no sh
int f0/0
ip add 34.0.0.3 255.255.255.0
no sh
exit
router rip
ver 2
no au
net 34.0.0.0
exit
int tunnel 1
ip add 192.168.3.3 255.255.255.0
tunnel sou 34.0.0.3
tunnel des 14.0.0.1
exit
router ospf 1
network 192.168.3.0 0.0.0.255 a 0
network 172.16.3.0 0.0.0.255 a 0
R4:
conf t
int f0/1
ip add 14.0.0.4 255.255.255.0
no sh
int f0/2
ip add 24.0.0.4 255.255.255.0
no sh
int f0/3
ip add 34.0.0.4 255.255.255.0
no sh
exit
router rip
ver 2
no au
net 14.0.0.0
net 24.0.0.0
net 34.0.0.0
exit
OpenvSwitch的GRE隧道
此实验为sdnlab上Open vSwitch系列实验。
实验一 GRE隧道
一、实验目的
-
- 了解GRE协议及原理
- 理解 Open vSwitch如何配置GRE隧道
二、实验原理
Open vSwitch创建GRE原理很简单,就是把对GRE头和外部IP头的一些操作从原来的代码中抽象出来,做成内核“库函数”的形式,然后 Open vSwitch中就可以直接调用它们了。 Open vSwitch GRE tunnel没有注册网络设备,因此无法通过iplink看到它,它只是一个vport而已,所以能通过ovs-vsctl show可以看到。
三、实验步骤
1、配置mininet1
(1)创建br0,配置br0的IP地址为20.0.2.12,将端口eth0加入br0。
(2)创建br1,配置br1的IP地址为172.171.6.6。(ifconfig br1 172.171.6.6/24 up),并使用ifconfig查看网络配置信息。
2、配置mininet2
(1)创建br0,配置br0的IP地址为20.0.2.11,将端口eth0加入br0。
1 # ovs-vsctl add-br br0 2 # ovs-vsctl add-br br1 3 # ifconfig eth0 0 up 4 # ifconfig br0 20.0.2.11 netmask 255.255.255.248 5 # ovs-vsctl add-port br0 eth0
(2)创建br1,配置br1的IP地址为172.171.6.7,并使用ifconfig查看网络配置信息。
# ifconfig br1 172.171.6.7/24
3、测试mininet1 ping 20.0.2.11 ping成功。由于两台设备都有将eth0口加入br0,拥有实际链路,arp广播请求都能正常发送接受,所以能ping通。 (若ping不通,查错方法:IP掩码是否配置正确->br1、eth0是否都有启用->是否有将eth0加入br1)
用172.171.6.6 ping 172.171.6.7 ping失败。由于没有将实际链路的接口加入br1,所以无法成功。
4、配置GRE隧道
根据传统配置gre隧道方法,需要配置以下参数:
- 本端地址
- 对端地址
- 隧道类型
- 路由
我们使用命令给mininet1的br1加入一个gre1的接口,隧道类型为gre,对端IP地址为20.0.2.11,本端地址和路由确定方法见以下注意事项。
sudo ovs-vsctl add-port br1 gre1 -- set interface gre1 type=gre option:remote_ip = 20.0.2.11
对mininet2也进行上述同样的配置,只是将对端IP地址改为20.0.2.12。
配置完成后的ovs情况:
注意:
- 一个交换机下有多个隧道口时,它会按端口从上至下顺序开始匹配。比如有gre1和vxlan1两个port,通过ovs-vsctl查看gre1在上,最后封装时时候会按gre1的配置去匹配。
- 确定利用哪个隧道封装后,会根据remote_ip在路由表上按上至下顺序查找对应路由,以确定本端地址。
完整流程:
(1)mininet1 172.171.6.6 ping mininet2的172.171.6.7 由于172.171.6.6是br1的地址,查看br1交换机下的端口,使用所有端口广播发送ARP请求。
(2) 从port gre1发出的请求,利用gre封装ARP包,在广播域中收到应答(外层20.0.2.12地址,内层172.171.6.6地址,内层和对端的172.171.6.7同一网段,所以能收到应答)。若本端出现多个地址都能达到20.0.2.11(比如再有一个br2 地址20.0.2.13 也能到达20.0.2.11),那么查找路由表,找到目的地址为20.0.2.11(或其所在网段)的路由,由路由表从上到下顺序匹配,找到第一条符合的路由的Iface,将Iface的地址作为源地址。例如下图,第二、三条都能达到20.0.2.11,按顺序匹配应该优先匹配到第二条,Iface是br2 所以拿br2的地址作为gre封装的外层源地址。
(3)br1收到ARP应答。br1通过gre1口发收ICMP数据包。
5、利用wireshark抓包验证gre隧道
将源地址为172.171.6.7的ICMP包进行封装,在外部又套了一层源地址为20.0.2.11的ICMP包,由于交换机识别数据包是以外层包装来识别,而arp表又有20.0.2.11的的mac地址,所以能顺利将数据包送到对端,对端处理数据包时再剥离外层封装即可。数据包构造如下:
至此,OpenvSwitch的GRE隧道构建成功。
实验二 Vxlan隧道
一、实验目的
- 该实验通过Open vSwitch构建Overlay的VxLAN网络,更直观的展现VxLAN的优势。在实验过程中,可以了解如何建立VxLAN隧道并进行配置,并实现相同网段和不同网段之间的通信。
二、实验原理
VxLAN 是 Virtual eXtensible LANs 的缩写,它是对 VLAN 的一个扩展,是非常新的一个 tunnel 技术,在Open vSwitch中应用也非常多。从数量上讲,它把 12 bit 的 VLAN tag 扩展成了 24 bit。从实现上讲,它是 L2 over UDP,它利用了UDP 同时也是 IPv4 的单播和多播,可以跨 L3 边界,很巧妙地解决了 GRE tunnel 和 VLAN 存在的不足,让组网变得更加灵活。
三、实验步骤
1、配置mininet1,创建交换机br0(数据转发) br1(控制器),br0地址为30.0.0.1/8,br1的IP地址为20.0.4.196/29,将eth0接口加入br1。
2、配置mininet2,创建交换机br0(数据转发) br1(控制器),br0地址为30.0.0.2/8,br1的IP地址为20.0.4.195/29,将eth接口加入br1。
3、验证20.0.4.196 ping 20.0.4.195 成功。30.0.0.1 ping 30.0.0.2 失败。
4、在mininet1的br0上创建vxlan隧道
1 sudo ovs-vsctl add-port br0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip=20.0.4.195
5、给mininet2的br0上创建vxlan隧道
1 sudo ovs-vsctl add-port br0 vxlan0 -- set interface vxlan0 type=vxlan options:remote_ip=20.0.4.196
6、验证30.0.0.1 ping 30.0.0.2 能通,说明同网段通讯正常。
7、将mininet2的br0的IP地址更改为40.0.0.1/8,发现40.0.0.1和30.0.0.1通讯失败。此时要在mininet1加上一条路由:
route add -net 40.0.0.0 netmask 255.255.255.248 30.0.0.1 dev br0
同理,在mininet2加上
route add -net 30.0.0.0 netmask 255.255.255.248 40.0.0.1 dev br0
因为下一跳都是br0的地址,所以数据包在转发时就知道要发往隧道,通过隧道发给对端,再交给对端进行路由。
这样,不同网段之间也能正常通讯。
8、利用wireshark查看数据包:
以上是关于配置GRE 隧道的主要内容,如果未能解决你的问题,请参考以下文章