eric.sd
驱动牛犊
驱动牛犊
  • 注册日期2003-11-03
  • 最后登录2004-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2636回复:13

VPN状态一致性问题

楼主#
更多 发布于:2003-11-11 16:46
是否可以使用Isakmp 消息猪主动同步vpn状态的问题

比如, VPNa 和 VPNb通讯;两者建立连接后。

VPNa因为设备重启等原因/或者系统异常,导致
VPNa在没有发送出删除载荷时。

VPNb如何主动同步这一状态?

可否使用Isakmp doi里介绍的notification information /或者别的消息来实现?

当然 有别的方法能解决vpn状态一致性问题,也欢迎
介绍。
Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-11-13 16:37
据我所知FREESWAN是这样做的:
设定4个值:IKE生存期(好象和这里说的没有关系)
           SA生存期 T1
           SA到期前的一定长度的时间 T2
           一个百分数 X%

由于网络上不可能做到完全同步,所以FREESWAN采取了一个比较聪明的办法,SA的删除由本机根据T1自己删除,
为了不使连接断开,在自己的机器检测到SA时间已经到了(T1-T2*X%)了,就会在到达T1时间的这段时间里发起协商新SA。那么原来的SA怎么办呢?不用管它,让它呆在SAD中,等T1到了,再删它。现在使用的是新协商出来的SA!!!

解决问题是最关键的,我想,即使有冗余也可以承受。

RACOON的代码我没有看过,没有调查没有发言权,呵呵
eric.sd
驱动牛犊
驱动牛犊
  • 注册日期2003-11-03
  • 最后登录2004-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-11-17 15:15
我知道你说的是soft expiry/hard expiry问题。

但是就你说的这种方法也无法保持两个vpn设备的状态一致。

就SA来说存在Soft expiry(软过期问题)和hard expiry(硬过期)问题。在SA到达软过期时,应该重新协商IPSEC session,这时原来的Session只能用在inbound,而不能在outbound使用,这样就可以保证一般情况下的vpn状态同步。

但是在一些特殊情况下,比如,vpn设备的一方出现异常(crash 重启),假设重启的是vpn_a.那么vpn_b还没有到达软过期。如果vpn_a这时没有outbound数据,vpn_b有outbound数据,因为vpn_b Session是完整的,所以从b发出的数据不会发起IKE协商。

twofish
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2008-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-11-17 17:45
有一个freeswan的patch叫Dead Peer Detection (draft-ietf-ipsec-dpd-02) Support主要用来当对端vpn失效后删除本地sa。
Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-17 17:47
我知道你说的是soft expiry/hard expiry问题。

但是在一些特殊情况下,比如,vpn设备的一方出现异常(crash 重启),假设重启的是vpn_a.那么vpn_b还没有到达软过期。如果vpn_a这时没有outbound数据,vpn_b有outbound数据,因为vpn_b Session是完整的,所以从b发出的数据不会发起IKE协商。

 



vpn_a重启,那么vpn_a启动完成它会主动发起IKE协商的(不需要A---》B的数据,A的PLUTO会检查,如果这个连接没有建立SA,他会主动发协商数据的),那么在A,B之间通信就使用的是这次协商出的SA,
B的老的SA就等它硬到期吧!
twofish
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2008-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-11-17 17:55
对于出发IKE协商有(前提已经add)三个途径:1。使用up手工发起协商。2。当有外出数据是查找spd发现需用ipsec处理但是又没有相应的SA,这是内核放出消息触发IKE协商相应的SA.3。当软过期后(时间,流量)。

[编辑 -  11/17/03 by  twofish]
eric.sd
驱动牛犊
驱动牛犊
  • 注册日期2003-11-03
  • 最后登录2004-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-11-17 18:44
vpn_a重启,那么vpn_a启动完成它会主动发起IKE协商的(不需要A---》B的数据,A的PLUTO会检查,如果这个连接没有建立SA,他会主动发协商数据的),那么在A,B之间通信就使用的是这次协商出的SA,
B的老的SA就等它硬到期吧!

这个方法可以避免状态不一致。
但是没有数据流主动发起协商,是否合适?

这样同步也太简单了。
我记得ipsec doi里有维护session的消息。
不知道可否用消息来维护vpn状态一致。
eric.sd
驱动牛犊
驱动牛犊
  • 注册日期2003-11-03
  • 最后登录2004-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-11-17 18:45
对于出发IKE协商有(前提已经add)三个途径:1。使用up手工发起协商。2。当有外出数据是查找spd发现需用ipsec处理但是又没有相应的SA,这是内核放出消息触发IKE协商相应的SA.3。当软过期后(时间,流量)。

[编辑 -  11/17/03 by  twofish]


你说的不能避免状态不一致。
twofish
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2008-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-11-18 09:15
对,单纯靠这套协议本身不能避免状态不一致。所以才有Dead Peer Detection (draft-ietf-ipsec-dpd-02)这个草案来解决这个问题。
Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-11-18 09:16
vpn_a重启,那么vpn_a启动完成它会主动发起IKE协商的(不需要A---》B的数据,A的PLUTO会检查,如果这个连接没有建立SA,他会主动发协商数据的),那么在A,B之间通信就使用的是这次协商出的SA,
B的老的SA就等它硬到期吧!

这个方法可以避免状态不一致。
但是没有数据流主动发起协商,是否合适?

这样同步也太简单了。
我记得ipsec doi里有维护session的消息。
不知道可否用消息来维护vpn状态一致。
 



其实我没有说我采用的方案,我说的是现在FREESWAN所采用的做法,早期版本的FREESWAN采用的方法也是当有数据发出去,当还没有SA就发起协商,后来改了。发起协商这些代码,现在的代码里还留着,没有删除呢!函数名是pfkey_acquire,自己看看吧
eric.sd
驱动牛犊
驱动牛犊
  • 注册日期2003-11-03
  • 最后登录2004-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-11-18 09:58
对,单纯靠这套协议本身不能避免状态不一致。所以才有Dead Peer Detection (draft-ietf-ipsec-dpd-02)这个草案来解决这个问题。
 



谢谢,正在研究这个草案
eric.sd
驱动牛犊
驱动牛犊
  • 注册日期2003-11-03
  • 最后登录2004-11-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-11-18 10:00


其实我没有说我采用的方案,我说的是现在FREESWAN所采用的做法,早期版本的FREESWAN采用的方法也是当有数据发出去,当还没有SA就发起协商,后来改了。发起协商这些代码,现在的代码里还留着,没有删除呢!函数名是pfkey_acquire,自己看看吧


可以说说你的方法么
Quakexg
驱动小牛
驱动小牛
  • 注册日期2001-11-21
  • 最后登录2012-02-29
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望56点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-11-19 09:04
[quote]

其实我没有说我采用的方案,我说的是现在FREESWAN所采用的做法,早期版本的FREESWAN采用的方法也是当有数据发出去,当还没有SA就发起协商,后来改了。发起协商这些代码,现在的代码里还留着,没有删除呢!函数名是pfkey_acquire,自己看看吧


可以说说你的方法么 [/quote]

你在做客户端吗?如果是的话,我也许可以给你参考。说实话,我对LINUX不熟,只是看了这部分代码而已。
另:你在哪里(城市)?
fatpig
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2004-04-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-02-11 17:03
DPD 草案
Fatpig问猪曰: 世间谤你,欺你,辱你,笑你,轻你,贱你,厌你,骗你,如何处治乎? 猪云: 只是忍他,让他,由他,避他,耐他,敬他,不要理他,再待几年,你且看他。
游客

返回顶部