前言
企业分支与企业总部都是处于自己的内网中,通过出口防火墙和路由器进行外联,如果他们之间想要通信,那么问题就来了,私网的数据包是无法在公网上进行传播的,那有什么办法可以使两台处于内网环境中的主机跨越公网进行通信呢?
答案是使用GRE通信协议,本篇阐述了GRE的基本原理以及基本配置,相信你看了之后会有很多的收获。
一、GRE概述
- GRE就像是一辆火车,报文可以比作乘客,报文装上火车之后,GRE会载着报文通过建立的隧道跨越公网传输到想去的网络。
- 设备从连接私网的接口接收到报文后,检查报文头中的目的IP地址字段,在路由表查找出接口,如果发现出接口是隧道接口,则将报文发送给隧道模块进行处理,给报文添加上IP报文头,源地址就是隧道地址,目的地址就是隧道目的地址。
- 报文到达目的之后,检查协议类型字段,如果是GRE,就去掉IP报文头和GRE报文头,把承载的东西交给私网中的协议处理,乘客安全抵达目的地。
- GRE使用Keepalive检测功能检测隧道对端是否可达。如果对端不可达,隧道连接就会及时关闭,避免形成数据空洞。
二、GRE配置
- 图中显示的就是今天的实验拓扑,192.168.1.0网段模拟企业分支,通过出口路由器AR1连接运营商网络;172.16.1.0网段模拟企业总部,通过出口路由器AR2连接运营商网络;ISP路由器模拟运营商网络,回环口模拟公网中的一个地址。
基础网络配置
AR1:
interface GigabitEthernet0/0/0
ip address 192.168.1.254 255.255.255.0
interface GigabitEthernet0/0/1
ip address 10.1.1.1 255.255.255.0
ip route-static 0.0.0.0 0.0.0.0 10.1.1.2 //配置默认路由,企业内需要访问公网的路由全部指向ISP路由器
//配置Easy-IP地址转换,将报文的源地址由私网地址转换成公网,因为私网地址不能在公网上转发
acl number 2000
rule 5 permit source 192.168.1.0 0.0.0.255
interface GigabitEthernet0/0/1
nat outbound 2000
AR2:
interface GigabitEthernet0/0/0
ip address 20.1.1.1 255.255.255.0
interface GigabitEthernet0/0/1
ip address 172.16.1.254 255.255.255.0
ip route-static 0.0.0.0 0.0.0.0 20.1.1.2
acl number 2000
rule 5 permit source 172.16.1.0 0.0.0.255
interface GigabitEthernet0/0/0
nat outbound 2000
ISP:
interface GigabitEthernet0/0/0
ip address 10.1.1.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 20.1.1.2 255.255.255.0
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
- 验证内网主机可以连通公网地址
GRE隧道配置
- 在AR1和AR2之间创建一个GRE隧道,实现两个内网跨越公网进行通信。
AR1:
interface Tunnel0/0/1 //创建隧道接口
ip address 40.1.1.1 255.255.255.0 //配置隧道接口地址
tunnel-protocol gre //配置隧道协议为gre
source 10.1.1.1 //配置出口路由器源地址
destination 20.1.1.1 //配置对端出口路由器的地址
ip route-static 172.16.1.0 255.255.255.0 Tunnel0/0/1 //配置静态路由,让通向对端内网的路由都走这个隧道
AR2:
interface Tunnel0/0/1
ip address 40.1.1.2 255.255.255.0
tunnel-protocol gre
source 20.1.1.1
destination 10.1.1.1
ip route-static 192.168.1.0 255.255.255.0 Tunnel0/0/1
- 验证GRE隧道创建成功
配置Keepalive检测
两端路由器都需要配置:
interface Tunnel0/0/1
keepalive period 3 retry-times 3//指定Keepalive检测报文的发送周期,默认值为5秒, retry-times参数指定Keepalive检测报文的重传次数,默认值为3
总结
使用GRE创建隧道的方法可以实现两个内网之间的通信,也不需要增加很多的成本,是一种很好的解决方案。