首先做个简介

 
GRE就是一个***,缺点是不支持认证和加密,优点是支持多种网络层协议(IPSEC只支持IP协议)
 
封装 NIP--GRE--IP--TCP/UDP--DATA(协议号:47)
 
 
OK,简介之所以为简介。。。因为它真的很简。。。。开始正题
 
还是先插个图吧,免得各位看官看的迷糊
 

地址规划:R1和R2之间就是12.1.1.0网段,R1就是12.1.1.1,R2就是12.1.1.2

R1和R5以此类推,R5起一个loopback口 地址为5.5.5.5/24,R2类似

 
第一步 :用GRE建立通道
 
R5(config)#int tunnel 1 创建一个tunnel 1接口(数字本地有效)
 
R5(config-if)#ip address 1.1.1.1 255.255.255.0 配置一个地址(此地址只是为了建立tunnel通道,产生路由表)
 
R5(config-if)#tunnel source s1/1 配置本端出口
 
R5(config-if)#tunnel destination 12.1.1.2 配置对端地址
 
R5(config)#ip route 2.2.2.0 255.255.255.0 tunnel 1 配置到分部私网为2.2.2.0的路由下一跳为 tunnel 1接口
 
--------------------------华丽的分割线----------------------------------------------
 
 
第二部:通道建立完成,就要用IPSEC来加密和验证了
 
over IPsec阶段
 
NewIP--ESP--GRE--IP--TCP/UDP--DATA
 
IPSEC转换模式使用transport mode(因为已经用tunnel打通两端了)
 
R5(config)#access-list 100 permit gre host 15.1.1.5 host 12.1.1.2 定义感兴趣流量(先查路由,发现是tunnel口,然后封装新IP,再触发map进行加密,所以抓取的是出口公网的地址)
 
然后配置IPSEC,这里贴出主要配置(中间有一个R1作为ISP)
 
中间R1(ISP)配置:
!
interface Serial1/0
 ip address 15.1.1.1 255.255.255.0
 serial restart-delay 0
 clock rate 64000
!
interface Serial1/1
 ip address 12.1.1.1 255.255.255.0
 serial restart-delay 0
 clock rate 64000
 !
 
 
 
-----------------------------华丽分割线------------------------------------
 
R5 配置:
crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key 123456 address 12.1.1.2
!
!
crypto ipsec transform-set set esp-des esp-md5-hmac 
 mode transport
!
crypto map map 10 ipsec-isakmp 
 set peer 12.1.1.2
 set transform-set set 
 match address 100
 !
interface Loopback0
 ip address 5.5.5.5 255.255.255.0
!
interface Tunnel1
 ip address 1.1.1.1 255.255.255.0
 tunnel source Serial1/1
 tunnel destination 12.1.1.2
!
!
interface Serial1/1
 ip address 15.1.1.5 255.255.255.0
 serial restart-delay 0
 crypto map map
!
ip route 0.0.0.0 0.0.0.0 Serial1/1
ip route 2.2.2.0 255.255.255.0 Tunnel1
!
!
access-list 100 permit gre host 15.1.1.5 host 12.1.1.2
 
 
 
--------------------------------华丽分割线----------------------------------
 
R2配置:
crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key 123456 address 15.1.1.5
!
!
crypto ipsec transform-set set esp-des esp-md5-hmac 
 mode transport
!
crypto map map 10 ipsec-isakmp 
 set peer 15.1.1.5
 set transform-set set 
 match address 100
!
!
!
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.0
!
interface Tunnel1
 ip address 1.1.1.2 255.255.255.0
 tunnel source Serial1/0
 tunnel destination 15.1.1.5
!
!
interface Serial1/0
 ip address 12.1.1.2 255.255.255.0
 serial restart-delay 0
 crypto map map
!
ip route 0.0.0.0 0.0.0.0 Serial1/0
ip route 5.5.5.0 255.255.255.0 Tunnel1
!
!
access-list 100 permit gre host 12.1.1.2 host 15.1.1.5
 
 
 
--------------------------------华丽分割线----------------------------------
 
第三部:通道打通,安全做好,现在开始要做优化了
 
因为ISAKMP开始需要几个包协商,不能自动触发通道。
解决方法:运行一种IGP的hello包来触发通道。
 
OK,let`s do it !
 
首先删掉之前下一跳的tunnel接口
R5(config)#no ip route 2.2.2.0 255.255.255.0 tunnel 1 
 
然后启用一种路由协议,这里使用OSPF
R5(config)#router ospf 1
R5(config-router)#network 5.5.5.0 0.0.0.255 a 0 宣告私网网段
R5(config-router)#network 1.1.1.0 0.0.0.255 a 0 宣告tunnel 1口的地址(关键!!千万不要去宣告外网接口的地址)
 
在R2上也如此做好ospf路由
 
宣告完后
*Mar  1 01:26:58.879: %OSPF-5-ADJCHG: Process 1, Nbr 5.5.5.5 on Tunnel1 from LOADING to FULL, Loading Done
成功获得对方的路由信息
 
现在查看下R5的路由表
     1.0.0.0/24 is subnetted, 1 subnets
C       1.1.1.0 is directly connected, Tunnel1
     2.0.0.0/32 is subnetted, 1 subnets
O       2.2.2.2 [110/11112] via 1.1.1.2, 00:01:47, Tunnel1
     5.0.0.0/24 is subnetted, 1 subnets
C       5.5.5.0 is directly connected, Loopback0
     15.0.0.0/24 is subnetted, 1 subnets
C       15.1.1.0 is directly connected, Serial1/1
S*   0.0.0.0/0 is directly connected, Serial1/1
R5#
 
确定去往5.5.5.0的路由是从ospf中学到的
 
至此。。。全部搞定。。。上床睡觉。。。。。