GRE VPN(H3C)
GRE 通用路由封装协议
- 最简单的三层隧道技术
- 以IP协议作为传输协议,GRE的IP协议号为47
- 优点
- 支持组播和广播(IPsec不支持)
- 有验证功能(用于隧道建立的验证,而不是对流量进行验证)
- 缺点
- 没有加密功能
- 不能分隔地址空间(MPLS可以分隔)
- 无法真实反映tunnel隧道的状态(需要配置keepalive保活)
- GRE MUT为1476(其中IP头部占20字节,GRE头部占4字节)
实验
需求分析:总部为192.168.10.0网段,分部为172.16.10.0网段,现要求在总部出口和分部出口之上建立GRE隧道,总部和分部之间通过隧道通信。
拓扑图
第一步:配置设备IP地址并重命名 略
第二步:打通公网部分,这是建立隧道的前提
RT1
[RT1]ip route-static 200.1.1.0 30 100.1.1.2 公网互通的方法有很多,这里我采用的静态路由,只要目的达到即可
RT3
[RT3]ip route-static 100.1.1.0 30 200.1.1.1
###测试公网之间连通性
第三步:建立GRE隧道
RT1
[RT1]int Tunnel0 mode gre 采用tunnel接口建立gre隧道
[RT1-Tunnel0]ip add 1.1.1.1 30 只有源和目的之间可达tunnel接口才能建立成功
[RT1-Tunnel0]source 100.1.1.1
[RT1-Tunnel0]destination 200.1.1.2
[RT1-Tunnel0]%Oct 26 13:18:55:968 2024 RT1 IFNET/3/PHY_UPDOWN: Physical state on the interface Tunnel0 changed to up.
%Oct 26 13:18:55:968 2024 RT1 IFNET/5/LINK_UPDOWN: Line protocol state on the interface Tunnel0 changed to up.
###这里发现,刚配置完一端tunnel隧道就up了,连对端RT3还没配置就up了,说明这是虚假的状态,需要配置keepalive保活
[RT1-Tunnel0]keepalive 10 3 每十秒发一次,一共发三次,如果三十秒了还没收到对端发来的保活报文,这认为隧道中断,这只是保活不影响实验可以不配置
RT3
[RT3]int Tunnel0 mode gre
[RT3-Tunnel0]ip add 1.1.1.2 30
[RT3-Tunnel0]source 200.1.1.2
[RT3-Tunnel0]destination 100.1.1.1
[RT3-Tunnel0]%Oct 26 13:23:52:894 2024 RT3 IFNET/3/PHY_UPDOWN: Physical state on the interface Tunnel0 changed to up.
%Oct 26 13:23:52:894 2024 RT3 IFNET/5/LINK_UPDOWN: Line protocol state on the interface Tunnel0 changed to up.
[RT3-Tunnel0]keepalive 10 3
通过命令dis ip int b查看隧道状态
第四步:如何将私网路由引入到GRE隧道
###方法有很多,比如静态,ospf,rip等
这里采用ospf演示
RT1
[RT1]ospf 1
[RT1-ospf-1]area 0
[RT1-ospf-1-area-0.0.0.0]network 192.168.10.0 0.0.0.255
[RT1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.3
RT3
[RT3]ospf
[RT3-ospf-1]area 0
[RT3-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.3
[RT3-ospf-1-area-0.0.0.0]%Oct 26 13:26:30:030 2024 RT3 OSPF/5/OSPF_NBR_CHG: OSPF 1 Neighbor 1.1.1.1(Tunnel0) changed from LOADING to FULL.
[RT3-ospf-1-area-0.0.0.0]network 172.16.10.0 0.0.0.255
验证:总部与分部的连通性
通过查看RT1和RT3的路由表和抓包分析隧道封装的过程
当总部要访问172.16.10.0网段时,下一跳为tunnel0口,则会进入GRE隧道然后被封装上公网地址(源100.1.1.1,目的200.1.1.2)继续查路由表转发,到了RT3上面再进入解封装
抓包(抓100.1.1.0网段)
在ping之前,可以看见网络中一直留GRE的报文传输,可以推断是keepalive保活报文
进一步查看发现确实是keepalive保活报文,是从100.1.1.1发给200.1.1.2的
查看ICMP包(ping包)可以发现源IP192.168.10.1的上面封装了GRE的头部,而最外层封装的是公网地址
由此可以得出数据流量是经过GRE隧道进行转发的