回顾GRE配置

 作者:网络之路一天  首发公众号:网络之路博客(ID:NetworkBlog)


当GRE遇上IPSec后,安全性终于有了保障_封装

BJ_FW身后有一个服务器,CS_FW与CD_R后面的client需要访问这个服务器,希望不把服务器暴露在公网上面,能实现的那就只有GRE与IPSec了,但是GRE没有安全性保障,IPSec有安全性,那能不能把GRE与IPSec结合起来一起使用呢?下面先回顾下GRE的配置,把各个点之前打通,然后在这个基础上面尝试下用IPSec部署,看看有什么样的效果。

配置要点

图里面BJ与CS是防火墙,而CD是一台路由器,配置方面没什么区别
BJ与CS需要考虑安全策略的放行,这个可以参考下29篇(这里为了简化策略全放)
各自可以通过静态或者动态路由来完成内网之间的互通。
基础接口对接配置这里就不在详细讲解了。
  • 1.
  • 2.
  • 3.
  • 4.


1、internet基础配置
#
interface
GigabitEthernet0/0/0
ip address 202.100.1.254 255.255.255.0
#
interface
GigabitEthernet0/0/1
ip address 61.128.1.254 255.255.255.0
#
interface
GigabitEthernet0/0/2
ip address 103.15.1.254 255.255.255.0
#
2、BJ_FW的基础配置
#
interface
GigabitEthernet1/0/0
undo shutdown
ip address 202.100.1.1 255.255.255.0
#
interface
GigabitEthernet1/0/1
undo shutdown
ip address 192.168.10.254 255.255.255.0
#
firewall zone trust
add interface GigabitEthernet1/0/1
#
firewall zone untrust
add interface GigabitEthernet1/0/0
#
ip route-static 0.0.0.0
0.0.0.0 202.100.1.254
#
nat-policy
rule name internet
 source-zone trust
 destination-zone untrust
 source-address 192.168.10.0 0.0.0.255
 action source-nat easy-ip
3、CS_FW的基础配置
#
interface
GigabitEthernet1/0/0
undo shutdown
ip address 61.128.1.1 255.255.255.0
#
interface
GigabitEthernet1/0/1
undo shutdown
ip address 192.168.20.254 255.255.255.0
#
firewall zone trust
add interface GigabitEthernet1/0/1
#
firewall zone untrust
add interface GigabitEthernet1/0/0
#
ip route-static 0.0.0.0
0.0.0.0 61.128.1.254
#
nat-policy
rule name internet
 source-zone trust
 destination-zone untrust
 source-address 192.168.20.0 0.0.0.255
 action source-nat easy-ip
4、CD_R的基础配置
#
interface
GigabitEthernet0/0/0
ip address 103.15.1.1 255.255.255.0
#
interface
GigabitEthernet0/0/1
ip address 192.168.30.254 255.255.255.0
#
ip route-static 0.0.0.0
0.0.0.0 103.15.1.254
#
acl number 3000 
rule 5 permit ip source 192.168.30.0 0.0.0.255
#
interface
GigabitEthernet0/0/0
ip address 103.15.1.1 255.255.255.0
nat outbound 3000
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.

(至此除了安全策略没展示,其余基础配置都完成了,安全策略参考下29篇,这里暂时全放) 异地局域网如何互通?(GRE篇)

5、GRE相关配置

当GRE遇上IPSec后,安全性终于有了保障_静态路由_02

总体下来BJ_FW创建了2个tunnel隧道,一个对接CS防火墙,一个对接CD路由器,然后加入了安全区域,CS防火墙这边也创建了一个对接BJ防火墙,注意的是路由器这边,路由器的tunnel接口是tunnel0/0/0,跟防火墙有点区别,其余的配置是一样的,然后不需要加入安全区域。


当GRE遇上IPSec后,安全性终于有了保障_封装_03

6、局域网之间互通

隧道已经通了 ,互通的话很简单,可以通过静态路由,或者是跑动态路由,这里简单点来跑个静态路由。
[BJ_FW]ip route-static
192.168.20.0 24 Tunnel 0
[BJ_FW]ip route-static
192.168.30.0 24 Tunnel 1
[CS_FW]ip route-static
192.168.10.0 24 Tunnel 0
[CD_R]ip route-static
192.168.10.0 24 Tunnel 0/0/0
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

7、实际测试

在测试之前记得检测客户端的地址是否都设置了,并且服务器开启了80服务


当GRE遇上IPSec后,安全性终于有了保障_服务器_04

当GRE遇上IPSec后,安全性终于有了保障_封装_05

访问没问题,GRE打通是没任何问题了,现在主要的是如何把IPSec融入进来。

GRE Over IPSec


当GRE遇上IPSec后,安全性终于有了保障_静态路由_06

上面GRE已经连通了,但是缺乏安全性,这个时候IPSec出现了,IPSec不单单可以自己建立隧道,还可以兼容GRE等协议,为他们提供保护,这种方式称为 GRE over IPSec,就是数据报文先通过GRE封装,然后在进行IPSec封装。为什么有这样的技术出现呢?第一个是可以兼容更多的协议来保护这些不支持安全加密的(比如GRE、L2TP等),第二个是IPSec本身它是不支持组播的,假设我们的站点之间想跑OSPF协议,如果单纯的IPSec则无法实现,有了GRE的帮忙,那么组播就能够轻松穿越了,所以GRE over IPSec会更加的灵活。

GRE与IPSec是如何封装的?

GRE与IPSec结合,这两种协议都是需要封装的,那么在IPSec里面有两种封装方式,一个是隧道、一个是传输模式,那么在GRE over IPSec中应该选择哪种呢?这就需要来了解下数据包的结构了。


当GRE遇上IPSec后,安全性终于有了保障_封装_07

在GRE OVER IPSec里面,传输模式跟隧道模式都能来保护私网的数据安全,但是仔细看其实可以发现隧道模式比传输模式多了一个IPSec的头部,这是加重了数据包的长度,会容易导致分片,所以在实际中比较推荐使用传输模式。(这个是GRE over IPSec,包括后面要讲解的L2TP over IPSec都会采用传输模式),因为GRE产生新的头部已经能够保证数据包穿越互联网了,而且里面的内容被ESP进行保护加密了,达到了最终的需求。

GRE over IPSec配置

GRE上面已经配置完毕了,这里来加入IPSec进来,看看IPSec这块有什么不一样的。


当GRE遇上IPSec后,安全性终于有了保障_服务器_08

当GRE遇上IPSec后,安全性终于有了保障_封装_09

配置里面几个不一样的地方,这里说明下

(1)ACL,平时的IPSec匹配的是双方的局域网之间的流量,但是这个是GRE over IPSec,IPSec保护GRE,而GRE里面包含了实际的数据,最终可以看到ACL匹配的各自公网地址的GRE流量。

(2)IKE提议与IPSec安全提议:会发现比之前的有点不一样,之前都是防火墙对接,所以可以用默认参数,但是有了路由器就不一样了,因为路由器的版本不一样,支持的算法强度不一样,很多没法支持最新的算法,所以要改成一致,否则会出现建立不起来的情况。


当GRE遇上IPSec后,安全性终于有了保障_服务器_10

(3)BJ_FW这边由于是同时跟CS与CD建立,所以需要两个IPSec policy策略,来各自匹配,但是也可以简化成一个。(视频会单独演示下)

实际测试

当GRE遇上IPSec后,安全性终于有了保障_静态路由_11


当GRE遇上IPSec后,安全性终于有了保障_服务器_12

问题出现了,CS_FW的建立成功了,但是CD_R却失败了,这里说下,并不是配置有问题,而是模拟器路由器与防火墙对接IPSec有这个问题,博主特意用debug看了下报错,提示是共享密钥不一致,我反复确认过,也重新输入过,确定是一致的。

当GRE遇上IPSec后,安全性终于有了保障_服务器_13

为了严谨性,我本想用真机AR系列路由器桥接到网络里面跟防火墙对接,结果发现桥接不起来,只好放弃了。

当GRE遇上IPSec后,安全性终于有了保障_服务器_14


当GRE遇上IPSec后,安全性终于有了保障_服务器_15

直连网关都不通,这台不通的只能用防火墙来代替了。

当GRE遇上IPSec后,安全性终于有了保障_服务器_16


当GRE遇上IPSec后,安全性终于有了保障_静态路由_17

当替换这套台路由器后,用防火墙就建立起来了。

当GRE遇上IPSec后,安全性终于有了保障_封装_18

BJ_FW这边有两对IKE的SA,一对是来自于CS的,一对来至于CD。


当GRE遇上IPSec后,安全性终于有了保障_服务器_19

两个IPSec SA里面有点特别就是在FLOW里面后面有个47,47表示协议号,就是GRE协议,说明保护的就是GRE,而且我们这里用的是隧道模式,并没有用传输模式,建立是可以建立的,但是会多出来20个字节。

当GRE遇上IPSec后,安全性终于有了保障_封装_20

当GRE遇上IPSec后,安全性终于有了保障_静态路由_21

抓包也可以看到,IPSec新头部后,就是ESP,然后里面的内容都被加密了,所以看不到,那么改成传输模式看看。

ipsec proposal 1
encapsulation-mode transport
  • 1.
  • 2.

(3个点都改成传输模式,然后要执行reset ike sa    reset ipsec sa,重新建立)

当GRE遇上IPSec后,安全性终于有了保障_服务器_22

重新建立后就变成传输模式了,这种会更加优化。

当GRE遇上IPSec后,安全性终于有了保障_静态路由_23

当GRE遇上IPSec后,安全性终于有了保障_静态路由_24

抓包看,用传输模式效果比隧道模式少了一个新的IPSec头部,而GRE新IP头部跟IPSec新IP头部生成的内容其实是一样的,所以在GRE over IPSec下面比较推荐用传输模式。(注意是标准的GRE over IPSec使用传输模式,在后面的案例里面会讲解利用GRE衍生出来的特殊方案,就不一定可以用传输了)

GRE over IPSec总结

  • 实际配置就是GRE+IPSec的配置,ACL与封装模式这里有点区别注意下
  • GRE over IPSec标准情况下,双方之间都是需要公网地址建立的,而且建议使用传输模式
  • 注意分片问题,建议把GRE的tunnel隧道MTU减少在1380~1400之间,尽量减少分片
  • 如果分支之间不需要互访,又跑动态路由协议,建议使用多个进程进行区分
  • 分支少的场景可以直接使用静态路由协议
  • GRE over IPSec 只要tunnel隧道不在NAT范围内,比如案例里面在GRE区域,则不需要做NONAT策略。

当GRE遇上IPSec后,安全性终于有了保障_封装_25

作者:网络之路一天  首发公众号:网络之路博客(ID:NetworkBlog)