回顾GRE配置
作者:网络之路一天 首发公众号:网络之路博客(ID:NetworkBlog)
BJ_FW身后有一个服务器,CS_FW与CD_R后面的client需要访问这个服务器,希望不把服务器暴露在公网上面,能实现的那就只有GRE与IPSec了,但是GRE没有安全性保障,IPSec有安全性,那能不能把GRE与IPSec结合起来一起使用呢?下面先回顾下GRE的配置,把各个点之前打通,然后在这个基础上面尝试下用IPSec部署,看看有什么样的效果。
配置要点
(至此除了安全策略没展示,其余基础配置都完成了,安全策略参考下29篇,这里暂时全放) 异地局域网如何互通?(GRE篇)
5、GRE相关配置
总体下来BJ_FW创建了2个tunnel隧道,一个对接CS防火墙,一个对接CD路由器,然后加入了安全区域,CS防火墙这边也创建了一个对接BJ防火墙,注意的是路由器这边,路由器的tunnel接口是tunnel0/0/0,跟防火墙有点区别,其余的配置是一样的,然后不需要加入安全区域。
6、局域网之间互通
7、实际测试
在测试之前记得检测客户端的地址是否都设置了,并且服务器开启了80服务
访问没问题,GRE打通是没任何问题了,现在主要的是如何把IPSec融入进来。
GRE Over IPSec
上面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 OVER IPSec里面,传输模式跟隧道模式都能来保护私网的数据安全,但是仔细看其实可以发现隧道模式比传输模式多了一个IPSec的头部,这是加重了数据包的长度,会容易导致分片,所以在实际中比较推荐使用传输模式。(这个是GRE over IPSec,包括后面要讲解的L2TP over IPSec都会采用传输模式),因为GRE产生新的头部已经能够保证数据包穿越互联网了,而且里面的内容被ESP进行保护加密了,达到了最终的需求。
GRE over IPSec配置
GRE上面已经配置完毕了,这里来加入IPSec进来,看看IPSec这块有什么不一样的。
配置里面几个不一样的地方,这里说明下
(1)ACL,平时的IPSec匹配的是双方的局域网之间的流量,但是这个是GRE over IPSec,IPSec保护GRE,而GRE里面包含了实际的数据,最终可以看到ACL匹配的各自公网地址的GRE流量。
(2)IKE提议与IPSec安全提议:会发现比之前的有点不一样,之前都是防火墙对接,所以可以用默认参数,但是有了路由器就不一样了,因为路由器的版本不一样,支持的算法强度不一样,很多没法支持最新的算法,所以要改成一致,否则会出现建立不起来的情况。
(3)BJ_FW这边由于是同时跟CS与CD建立,所以需要两个IPSec policy策略,来各自匹配,但是也可以简化成一个。(视频会单独演示下)
实际测试
问题出现了,CS_FW的建立成功了,但是CD_R却失败了,这里说下,并不是配置有问题,而是模拟器路由器与防火墙对接IPSec有这个问题,博主特意用debug看了下报错,提示是共享密钥不一致,我反复确认过,也重新输入过,确定是一致的。
为了严谨性,我本想用真机AR系列路由器桥接到网络里面跟防火墙对接,结果发现桥接不起来,只好放弃了。
直连网关都不通,这台不通的只能用防火墙来代替了。
当替换这套台路由器后,用防火墙就建立起来了。
BJ_FW这边有两对IKE的SA,一对是来自于CS的,一对来至于CD。
两个IPSec SA里面有点特别就是在FLOW里面后面有个47,47表示协议号,就是GRE协议,说明保护的就是GRE,而且我们这里用的是隧道模式,并没有用传输模式,建立是可以建立的,但是会多出来20个字节。
抓包也可以看到,IPSec新头部后,就是ESP,然后里面的内容都被加密了,所以看不到,那么改成传输模式看看。
(3个点都改成传输模式,然后要执行reset ike sa reset ipsec sa,重新建立)
重新建立后就变成传输模式了,这种会更加优化。
抓包看,用传输模式效果比隧道模式少了一个新的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策略。
作者:网络之路一天 首发公众号:网络之路博客(ID:NetworkBlog)