【防火墙技术连载31】强叔侃墙 VPN篇 对等体检测洞察先机,双链路备份有备无患

digest [复制链接]
发表于 : 2014-8-27 09:14:26 最新回复:2017-02-20 16:07:55
12507 8
强叔侃墙
强叔侃墙 官方号

天地会应用了IPSec后,通信安全得到保障。当网络上突发问题时,比如路由问题、对端设备重启等,会导致IPSec通信中断或时断时续,那么如何才能快速的检测到故障并迅速恢复IPSec通信呢?这就需要用到IKE对等体检测机制和IPSec可靠性了。

对等体检测洞察先机

当两个对等体之间采用IKE和IPSec进行通信时,对等体之间可能会由于路由问题、IPSec对等体设备重启或其他原因导致连接断开。由于IKE协议本身没有提供对等体状态检测机制,一旦发生对等体不可达的情况,只能等待安全联盟老化。只有快速检测到对等体的状态变化,才可以尽快恢复IPSec通信。
现在强叔给大家展示一下由于对端设备重启导致IPSec中断的情况。

 

 

网关FW_A跟网关FW_B之间采用IPSec进行通信。重启网关FW_B后,查看两端IPSec隧道情况。

  • 发现网关FW_A上的IPSec隧道还在。

<FW_A> display ike sa

current ike sa number: 2
---------------------------------------------------------------------
conn-id    peer                    flag          phase vpn
---------------------------------------------------------------------
40015      2.2.3.2                 RD            v1:2  public
40014      2.2.3.2                 RD            v1:1  public

  • 发现网关FW_B重启后其上的IPSec隧道不在了。

<FW_B> display ike sa
current sa Num :0

这就会导致如下的问题:

  • 总舵的PC1先访问分舵的PC2,无法通信。
    原因就在于FW_A上的安全联盟还存在,但FW_B上的安全联盟已经没有了。从PC1访问PC2会采用原有的安全联盟,而无法触发FW_A与FW_B之间建立新的安全联盟。从而导致访问失败。
  • 分舵的PC2先访问总舵的PC1,可以正常通信。
    因为FW_B上不存在安全联盟,因此可以触发建立安全联盟。安全联盟建立后,双方可以正常通信。

针对这种问题的解决办法就是需要开启IPSec检测机制。开启IPSec检测机制后,当一端设备故障后,另一端设备的安全联盟也同时删除。
USG系列防火墙支持两种IPSec检测机制:

  • Keepalive机制
    Keepalive机制通过IKE对等体周期性发送Hello消息来告诉对方自己处于活动状态。若在超时时间内没有收到Hello报文,则认为对端不可达。此时将删除该IKE SA及由它协商的IPSec SA。
    Keepalive机制默认关闭。配置相应参数后,keepalive机制生效。
  • DPD机制
    DPD(Dead Peer Detection)机制不用周期性发送Hello消息,而是通过使用IPSec流量来最小化对等体状态检测所需消息报文的数量。若可以收到对端发来的流量,则认为对方处于活动状态;只有当一定时间间隔内没有收到对端发来的流量时,才会发送DPD报文探测对端的状态。若发送几次DPD报文后一直没有收到对端的回应,则认为对端不可达,此时将删除该IKE SA及由它协商的IPSec SA。
    •  IKEv1时配置DPD机制
      IKEv1默认不支持DPD。需要在隧道两端同时配置。两端配置的DPD参数彼此独立,不需要匹配。
    • IKEv2时配置DPD机制
      IKEv2默认支持DPD。只要在隧道一端配置DPD,另一端就可以响应DPD报文。

实际应用中keepalive很少使用。主要原因是keepalive存在如下两个方面的缺陷:

  1. Keepalive机制周期性发送Hello报文将消耗大量的CPU资源,会限制可建立的IPSec会话的数量。
  2. Keepalive没有统一标准,各厂商的设备可能无法对接。

说明:对等体检测机制虽然不是必配项,但对IPSec故障恢复有益,推荐大家配置IPSec时配置DPD检测机制。
下面以配置DPD机制为例,说明FW_B发生故障后FW_A上的变化。

配置

总舵

分舵

配置DPD

ike dpd interval 10 2

ike dpd interval 10 2

说明:采用IKEv2是只要一端配置就可以了。
配置完成后,设备检测到链路状态的变化。此时查看IKE SA和IPSec SA的情况,发现FW_A上的安全联盟已经删除了。
<FW_A> display ike sa
current sa Num :0
此时可以正常建立IPSec隧道了。

双链路备份有备无患

IPSec可靠性可以分为设备可靠性和链路可靠性。设备可靠性主要是双机热备,由于双机热备非常复杂,不是一句两句可以说清的,强叔将在后面专门讲解。本次讲解的重点是链路可靠性。
由于天地会的发展壮大,总舵要与所有分舵进行通信,网络带宽倍感压力。一旦网络出问题,就完全不能通信了。为避免此等悲剧,陈总舵主决定为总舵再购买一条链路,既可缓解带宽压力,又可以双链路备份。针对双链路的场景可以采用如下两种方案进行配置:

方案一:IPSec主备链路备份

总舵采用双链路与分舵通信,采用IPSec主备链路备份方式的典型组网如下图所示。
 

 

FW_B上配置两个Tunnel接口(借用GE1/0/0的IP地址)分别于FW_A的主链路接口GE1/0/0和备链路接口GE1/0/1进行IPSec对接。其配置的关键在于必须配置IP-Link,并采用IP-Link检测主链路的状态。

  • 不配置IP-Link时,当FW_A的主链路故障时,FW_B无法感知。因此FW_B上的路由表不会变化,其出接口仍然是与主链路对接的Tunnel1。这会导致IPSec隧道建立失败。

 

 

  • 配置IP-Link时,FW_B上可以感知FW_A上的主链路状态的变化。当FW_A的主链路故障时,FW_B上的路由表也会同步发生改变。此时可以通过备链路建立IPSec隧道,恢复通信。

 

 

总舵和分舵网关的关键配置如下:

关键配置

总舵

分舵

IP-Link

//用于监控主链路的情况

ip-link check enable

ip-link 1 destination 2.2.2.2 interface GigabitEthernet1/0/0 mode icmp next-hop 202.38.163.2

ip-link check enable

ip-link 1 destination 202.38.163.1 interface GigabitEthernet1/0/0 mode icmp next-hop 2.2.2.1

路由配置

ip route-static 10.2.1.0 24 202.38.163.2 preference 10 track ip-link 1 //到分支的路由,GE1/0/0出口的链路为主链路

ip route-static 10.2.1.0 24 202.38.164.2 preference 20 //到分支的路由,GE1/0/1出口的链路为备链路

ip route-static 0.0.0.0 0.0.0.0 202.38.163.2 preference 10 track ip-link 1 //缺省路由,GE1/0/0出口的链路为主链路

ip route-static 0.0.0.0 0.0.0.0 202.38.164.2 preference 20//缺省路由,GE1/0/1出口的链路为备链路

ip route-static 10.1.1.0 255.255.255.0 Tunnel 1 preference 10 track ip-link 1 //Tunnel1跟主链路对接

ip route-static 10.1.1.0 255.255.255.0 Tunnel 2 preference 20 //Tunnel2跟备链路对接

ip route-static 0.0.0.0 0.0.0.0 2.2.2.1 //配置缺省路由,下一跳为2.2.2.1

定义被保护的数据流

acl 3000

 rule 5 permit ip source 10.1.1.0 0.0.0.255 destiantion 10.2.1.0 0.0.0.255

acl 3001

 rule 5 permit ip source 10.1.1.0 0.0.0.255 destiantion 10.2.1.0 0.0.0.255


acl 3000

 rule 5 permit ip source 10.2.1.0 0.0.0.255 destiantion 10.1.1.0 0.0.0.255

acl 3001

 rule 5 permit ip source 10.2.1.0 0.0.0.255 destiantion 10.1.1.0 0.0.0.255

配置IPSec安全提议

ipsec proposal pro1

ipsec proposal pro1

配置IKE安全提议

ike proposal 10

ike proposal 10

IKE对等体

ike peer fenduo

 pre-shared-key tiandihui1

 ike-proposal 10

ike peer a1

 pre-shared-key tiandihui1

 ike-proposal 10

 remote-address 202.38.163.1//原有链路的出接口IP地址

ike peer a2

 pre-shared-key tiandihui1

ike-proposal 10

remote-address 202.38.164.1//原有链路的出接口IP地址

IPSec安全策略
//创建两条IPSec安全策略

ipsec policy-template tem1 1

 security acl 3000

 proposal pro1

 ike-peer fenduo

ipsec policy policy1 1 isakmp template tem1

ipsec policy-template tem2 1

 security acl 3001

 proposal pro1

 ike-peer fenduo

ipsec policy policy2 1 isakmp template tem2

ipsec policy policy1 1 isakmp

 security acl 3000

 proposal pro1

 ike-peer a1

ipsec policy policy1 1 isakmp

 security acl 3001

 proposal pro1

 ike-peer a2

应用IPSec安全策略

interface GigabitEthernet1/0/0

 ip address 202.38.163.1 24

 ipsec policy policy1

interface GigabitEthernet1/0/1

 ip address 202.38.164.1 24

 ipsec policy policy2


interface Tunnel1

 ip address unnumbered interface GigabitEthernet1/0/0 //借用物理口GE1/0/0IP地址

 tunnel-protocol ipsec

 ipsec policy policy1

interface Tunnel2

 ip address unnumbered interface GigabitEthernet1/0/0//借用物理口GE1/0/0IP地址

 tunnel-protocol ipsec

 ipsec policy policy2

配置完成后,建立IPSec VPN。从PC2 ping PC1,可以ping通。查看IKE SA的建立情况如下:
<FW_B> display ike sa
current ike sa number: 2
---------------------------------------------------------------------
conn-id    peer                    flag                    phase vpn
---------------------------------------------------------------------
40003      202.38.163.1           RD|ST         v2:2  public
3              202.38.163.1           RD|ST         v2:1  public

断开主链路(shutdown GE1/0/0接口)后,可以使用备链路建立IPSec VPN。从分舵PC ping总舵PC,可以ping通。查看IKE SA建立情况如下:
<FW_B> display ike sa
current ike sa number: 2
---------------------------------------------------------------------
conn-id    peer                              flag          phase vpn
---------------------------------------------------------------------
40009      202.38.164.1            RD|ST         v2:2  public
9              202.38.164.1            RD|ST         v2:1  public

说明IP-Link检测到主链路的接口故障后,修改了FW_A上和FW_B上使用的路由。
主链路正常情况下FW_B上的路由表(只给出静态路由):

<FW_B> display ip routing-table

Route Flags: R - relay, D - download to fib

---------------------------------------------------------------------

Routing Tables: Public

Destinations : 10  Routes : 12

Destination/Mask    Proto  Pre  Cost     Flags NextHop         Interface

0.0.0.0/0          Static 60   0       RD  2.2.2.1         GigabitEthernet1/0/0

   10.1.1.0/24        Static 10   0       D   2.2.2.2          Tunnel1

主链路断开后FW_B上的路由表(只给出静态路由):
<FW_B> display ip routing-table

Route Flags: R - relay, D - download to fib

---------------------------------------------------------------------

Routing Tables: Public

Destinations : 10  Routes : 12

Destination/Mask    Proto  Pre  Cost     Flags NextHop         Interface

0.0.0.0/0          Static 60   0       RD  2.2.2.1         GigabitEthernet1/0/0

   10.1.1.0/24        Static 20   0       D   2.2.2.2         Tunnel2

方案二:IPSec隧道化链路备份

IPSec主备链路备份需要分别在两个物理接口上应用IPSec策略,配置复杂;且需要通过IP-Link跟踪路由状态,以便正确的进行IPSec隧道切换。那能否不直接在物理接口上应用IPSec策略呢,这样是否就可以避免隧道切换的问题呢?
当然是可以的。方法就是将IPSec策略应用到一个虚拟的Tunnel接口上。由于策略不是应用到实际物理接口,那么IPSec并不关心有几条链路可以到达对端,也不关心哪条链路发生故障,只有可以查找到可以到达对端的路由,IPSec通信就不会中断。
总舵采用双链路与分舵通信,采用IPSec隧道化链路备份方式组网如下图所示。

 

 

下面强叔就讲一下IPSec隧道化链路备份时报文是如何封装和解封装的。

FW_A上报文加封装的过程如下图所示:

 

 

(1) FW_A收到需要进行IPSec处理的报文后,将收到的IP明文送到转发模块进行处理。
(2) 转发模块通过查找路由,发现路由出接口为Tunnel接口。转发模块依据路由查询结果将IP明文发送到Tunnel接口。
(3) 由于Tunnel接口应用了IPSec策略,报文在Tunnel接口上进行IPSec加封装。封装后的报文的源IP和目的IP分别为两端隧道接口(应用IPSec策略的接口)的IP地址。
(4) 封装后的IP报文被送到转发模块进行处理。转发模块再次对密文查找路由。
(5) 转发模块通过查找路由,发现路由下一跳为物理接口的路由。根据路由的优先级等选择合适的路由,将IP密文从设备的某个实际物理接口转发出去。
FW_A上报文解封装的过程如下图所示:

 


(1) FW_A收到加密后的IPSec报文后,将收到的IP密文送到转发模块进行处理。
(2) 转发模块识别到此IP密文的目的地址为本设备Tunnel接口的IP地址且IP协议号为AH或ESP,将IP密文发送到Tunnel接口进行解封装。
(3) IPSec报文在Tunnel接口上进行解封装。
(4) 解封装后的IP明文被再次送到转发模块进行处理。转发模块再次对明文查找路由。
(5) 转发模块通过查找路由,将IP明文从隧道的实际物理接口转发出去。
总舵和分舵网关的关键配置如下:

关键配置

总舵

分舵

路由配置

ip route-static 10.2.1.0 24 tunnel1//到分舵的路由

ip route-static 2.2.2.2 32 202.38.163.2//到分舵网关的路由

ip route-static 2.2.2.2 32 202.38.164.2//到分舵网关的路由

ip route-static 10.1.1.0 255.255.255.0 2.2.2.1//到总舵的路由

ip route-static 1.1.1.2 255.255.255.0 2.2.2.1//到总舵网关Tunnel1接口的路由

定义被保护的数据流

acl 3000

 rule 5 permit ip source 10.1.1.0 0.0.0.255 destiantion 10.2.1.0 0.0.0.255

acl 3000

 rule 5 permit ip source 10.2.1.0 0.0.0.255 destiantion 10.1.1.0 0.0.0.255

配置IPSec安全提议

ipsec proposal pro1

ipsec proposal pro1

配置IKE安全提议

ike proposal 10

ike proposal 10

IKE对等体

ike peer fenduo

 pre-shared-key tiandihui1

 ike-proposal 10

ike peer zongduo

 pre-shared-key tiandihui1

 ike-proposal 10

 remote-address 1.1.1.2//Tunnel接口的IP地址

IPSec安全策略

ipsec policy-template tem1 1 //配置模板方式

 security acl 3000

 proposal pro1

 ike-peer fenduo

ipsec policy policy1 1 isakmp template tem1

ipsec policy policy1 1 isakmp

 security acl 3000

 proposal pro1

 ike-peer zongduo

应用IPSec安全策略

interface Tunnel1

 ip address 1.1.1.2 24

 tunnel-protocol ipsec

 ipsec policy policy1

interface GigabitEthernet0/0/0

 ip address 2.2.2.2 24

 ipsec policy policy1

配置完成后,建立IPSec VPN。从分舵PC ping 总舵PC,可以ping通。查看IKE SA的建立情况如下:
<FW_B> display ike sa
current ike sa number: 2
---------------------------------------------------------------------
conn-id    peer                 flag          phase  vpn
---------------------------------------------------------------------
40003      1.1.1.2         RD|ST          v2:2  public
3              1.1.1.2         RD|ST          v2:1  public

主链路正常情况下FW_A上的路由表(只给出静态路由):

<FW_B> display ip routing-table

Route Flags: R - relay, D - download to fib                                    

------------------------------------------------------------------------------ 

Routing Tables: Public                                                         

        Destinations : 17       Routes : 18       

Destination/Mask    Proto  Pre  Cost     Flags NextHop         Interface                                                             

    2.2.2.2/0         Static 60   0         RD    202.38.163.1  GigabitEthernet1/0/0

2.2.2.2/0         Static 60   0         RD    202.38.164.2  GigabitEthernet1/0/1

    10.2.1.0/24       Static 60   0         D     1.1.1.2        Tunnel1

主链路中断情况下FW_A上的路由表(只给出静态路由):

<FW_B> display ip routing-table

Route Flags: R - relay, D - download to fib                                    

------------------------------------------------------------------------------ 

Routing Tables: Public                                                         

        Destinations : 17       Routes : 18                                                                                 

Destination/Mask    Proto  Pre  Cost     Flags NextHop         Interface  

   2.2.2.2/0         Static 60   0         RD    202.38.164.2  GigabitEthernet1/0/1

10.2.1.0/24       Static 60   0         D     1.1.1.2        Tunnel1

由于分舵是与总舵Tunnel接口的IP地址建立IPSec隧道,所以在总舵FW_A上断开GE1/0/0接口所属链路后,分舵PC ping 总舵PC的业务流量不会中断。在FW_B上查看IKE SA,可以看到对端的IP地址还是1.1.1.2。
IPSec隧道化链路备份跟IPSec主备链路备份相比有如下优势,推荐采用IPSec隧道化备份。

IPSec链路备份方案

IPSec主备链路备份

IPSec隧道化链路备份

配置

复杂

简单

平滑切换

IPSec隧道切换,需重新协商隧道

不需要隧道切换

适用场景

双链路

双链路或多链路

 

至此IPSec专题就讲完了。接下来强叔将介绍另一种安全的VPN:SSL VPN。由于SSL VPN配置简单,且通信安全,一经问世就开始攻城掠地,抢占L2TP和IPSec的市场,大有后生可畏的劲头。那么SSL VPN跟前面讲的几种VPN有什么差别,适用于哪些场景,又该如何配置呢? 敬请关注下期的强叔侃墙。

 

 

上一篇 VPN篇 IPSec兼容并济吸纳百家,GRE和L2TP改头换面深藏不漏

下一篇 VPN篇 远程接入IPSec现短板,SSL VPN登上历史舞台

汇总贴

本帖被以下专题推荐:

  • x
  • 常规:

点评 回复

跳转到指定楼层
DoubleDong
DoubleDong   发表于 2014-9-15 22:48:16 已赞(0) 赞(0)

看完标记一下!支持强叔!

  • x
  • 常规:

点评 回复

NARIWU
NARIWU 发表于 2016-7-24 15:06
支持 
Y_GH
Y_GH   发表于 2014-8-27 09:39:01 已赞(0) 赞(0)

先抢沙发,后看帖!

  • x
  • 常规:

点评 回复

shadowboy
shadowboy   发表于 2014-8-27 10:07:12 已赞(0) 赞(0)

顶一个。。。。。。。。。。。。。。。。。
  • x
  • 常规:

点评 回复

wangbenlie
wangbenlie   发表于 2014-8-27 20:22:22 已赞(0) 赞(0)

感谢分享!
  • x
  • 常规:

点评 回复

user_145445
user_145445   发表于 2014-8-28 20:05:16 已赞(0) 赞(0)

求解。b199麦芒。触摸屏不灵

刚刚买的电话才3个月!在通话中出现屏幕触摸不灵!当事正在通话中,对方需要接其他电话,我当时就发现挂不了电话!然后等到自己断线才得以挂掉电话,后面想打电话解不了锁,电话也接不起来。开关机都试过了不行!晚上充电,第二天发现整个屏幕都失灵了!然后去找售后,售后经过检测,不是摔坏的也不是进液体。有没有友友知道是什么原因呢??

  • x
  • 常规:

点评 回复

周中斌
周中斌   发表于 2014-10-9 15:48:31 已赞(0) 赞(0)

感谢分享!

  • x
  • 常规:

点评 回复

莫高雷的春天
莫高雷的春天   发表于 2016-10-8 10:12:33 已赞(0) 赞(0)

隧道化IPSec主备双链路是不是主站端需要3个公网IP,一个是给Tunnel接口的,另外两个是物理接口的。求指点。
  • x
  • 常规:

点评 回复

我就不设置
我就不设置   发表于 2017-2-20 16:07:55 已赞(0) 赞(0)

强叔,Keepalive或者DPD报文也是加密后通过隧道传输的吗?是不是抓包是看不到的
  • x
  • 常规:

点评 回复

发表回复
您需要登录后才可以回帖 登录 | 注册

警告 内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“隐私声明
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
登录参与交流分享

登录参与交流分享

登录