,IKE协商.
IKE协商跟TCP三次握手相似.不过比TCP 三次握手复杂点.IKE协商过程需要经过9个报文的来回,才能建立通讯双方需要的IKE SA,然后利用该IKE SA进行数据的加密和解密.
IKE协商报文采用UDP格式,默认端口是500<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

,IKE 协商的第一阶段 : 也称为 IKE 的主模式 :

1,AB通讯,A作为发起方,第一个报文是A本地配置的policy(策略),policy包含:
,加密算法
,hash算法
,D-H
,认证方式
,SA生存时间
PS:  ,Policy可以配置多个,只要对端只要有任何一个与它匹配就行.
     ,五元素里最主要的是认证方式.目前主要分: 预共享 数字证书.一般采用预共享秘匙
2,第二个报文是B采用相同的policy发回.表明采用该policy作为后续通讯的保护.
3,第三和第四个报文是AB进行D-H交换的D-H公开值,这与具体配置关系不大.
在完成上面四个报文的交换后,利用D-H算法.AB就协商出一个共同的秘密.后续的密匙都是依靠这个秘密来衍生的.

4,第五和第六个报文是身份验证过程.A将自己的身份信息和其他信息发送给B.BA进行验证,然后发送自己的身份信息回去给A进行验证.
预共享方式主要有两种验证方法 :  A,IP 地址   B, 主机名 一般采用 IP 地址作为验证方法 .

 

完成上面六个报文的交换,IKE的第一阶段就已经完成.(IKE主模式协商完成),打开debug会看到IKE SA Establish (IKE SA已经建立)

 

,IKE 第二阶段 -----IKE 快速模式协商 .

上面6个报文之后,进入的就是第二阶段---快速模式.是依靠最后的三个报文来进行IPSec SA协商.利用第一阶段协商出来的共同的秘密来为这三个报文来进行加密.配置方面是以下三个
1, 数据流(access-list定义保护加密的数据流)
2, 交换集合transform-set (加密算法和安全协议)
3, 完美前向保护(PFS)
很多情况下,发现IKE SA已经建立,IPSec SA无法建立.很有可能就是因为这三点不一致造成.

 

IKE配置:
1,   Policy

包括hash算法,加密算法,D-H,生存时间,.认证方式是最重要的.
2,   预共享 (preshare)

验证方式一般采用预共享方式,又分为IP地址和主机名(hostname).一般采用IP地址验证.
3,   本端标识 (localID)

IP地址或主机名。一般采用IP地址.   如果发起方
以上三个步骤就完成 IKE SA 的配置 . 接下来的是 IPSec 的配置

1,  配置要保护(加密)的数据流(access-list)

部署任何×××都需要对数据流进行限制.不可能对所有的数据流进行加密(any to any ),Access-list在加密映射(map)里会被引用. 首先是在实际使用过程中,不会有这样的需求,其次,这样会让很多本来不需要加密的通信无法通信。比如广播被加密后大量丢弃,路由器无法工作.
2,  配置变换集合(transform-set)

变换集合是某个对等方能接受的密码学算法和安全协议(IPSec协议),双方需要一致.
3,  配置加密映射(map)

IPSec创建的加密映射条目,使IPSec联盟的各部件协调工作.包括以下部分:
, 欲保护(加密)的数据流 (引用access-list所定义)
, 对端的IP地址 (这个是必须的,除非是动态映射加密)
, 欲保护(加密)的数据流采用的加密算法和安全协议(引用transform-set定义)
, 是否需要PFS支持 (两端要一致)
,  SA的生存时间 (不配置的话有默认值)

 

特别鸣谢:灵溪金典网吧以及香香公主网吧提供×××100路由器以及线路,我才得以完成以下实现。(当然,他们不知道。让我们再次对他们的默默的无私奉献致敬)

Configuration

 

access-list 111 permit ip 192.168.1.0 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />0.0.0.255 192.168.16.0 0.0.0.255 ----定义保护的数据流

crypto isakmp policy 1  ----创建isakmp 策略
 authentication pre-share   ----认证方式
 hash md5              ----hash算法
 group 2                ---组号
!
!
crypto isakmp key 7 151b5f72467e7a address 60.190.90.66 -----pre-share密码
crypto ipsec transform-set myset  esp-des esp-md5-hmac -----定义交换集合加密和算法
crypto map mymap 1 ipsec-isakmp   ----定义加密映射
 set peer 60.190.90.66   ----对端的ip地址
 set transform-set myset  -----引用myset这个交换集合
 match address 111   -----引用access-list 111定义的保护数据流
!
interface FastEthernet 0/0
 ip nat inside
 ip access-group 120 in
 no ip redirects
 ip address 192.168.1.2 255.255.255.0
!
interface FastEthernet 1/0
 ip nat outside
 ip access-group 110 in
 ip address 60.190.94.84 255.255.255.248
 crypto map mymap    ----应用crypto map-
 duplex auto
 speed auto

 

对方配置同上。
#########################调试信息##############################
×××100#clear crypto isakmp   清除isakmp sa
×××100#clear crypto sa       清除所有sa包括isakmp saipsec sa
×××100#debug crypto isakmp  debug  isakmp 协商过程
×××100#ping
Protocol [ip]:
Target IP address: 192.168.1.2
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y  ---用扩展ping

Source address:192.168.16.254   ---定义源地址是为了能触发isakmp协商。因为我不能在任何一个路由器的内网。
Sending 5, 100-byte ICMP Echoes to 192.168.1.2, timeout is 2 seconds:
  < press Ctrl+C to break >
.....
Success rate is 0 percent (0/5)
×××100#sh log
Syslog logging: enabled
  Console logging: disabled
  Monitor logging: disabled
  Buffer logging: level debugging, 281 messages logged
  logging trace : disable
  Timestamp debug messages: uptime
  Timestamp log messages: disabled
  Sequence log messages: disable
  Trap logging: level informational, 0 message lines logged,0 reserved,0 fail
Log Buffer (Total 4096 Bytes) : have written 3499

 

Configured from console by vty0 (60.181.132.226)

 

14:1:54:29 ×××100: %7:Acqurire negociate with 60.190.94.84
14:1:54:29 ×××100: %7:(33) sending packet to 60.190.94.84 (I) MM_SI1_WR1, MM_SA_
SETUP

 

14:1:54:29 ×××100: %7:sendout main I1, and wait R1

 

14:1:54:29 ×××100: %7:Receive IKE message packet.
14:1:54:29 ×××100: %7:(33) received packet from 60.190.94.84, (I) MM_SI1_WR1, MM
_SA_SETUP
14:1:54:29 ×××100: %7:  Exchange type : 0x2<sa> <vendor ID>
14:1:54:29 ×××100: %7:main mode r1 process
14:1:54:29 ×××100: %7:(33) Checking ISAKMP transform 1 against priority 1 policy
14:1:54:29 ×××100: %7:    encryption DES-CBC
14:1:54:29 ×××100: %7:    hash MD5
14:1:54:29 ×××100: %7:    auth pre-share          -------policy内容
14:1:54:29 ×××100: %7:    group 2
14:1:54:29 ×××100: %7:    life type in seconds
14:1:54:29 ×××100: %7:life duration 86400 orginal:86400
14:1:54:29 ×××100: %7:(33) atts are acceptable
14:1:54:29 ×××100: %7:vendor_id=0xaf 0xca 0xd7 0x13 0x68 0xa1 0xf1 0xc9 0x6b 0x8
6 0x96 0xfc 0x77 0x57 0x1 0x0
14:1:54:29 ×××100: %7: dpd's vendor id is detected.
14:1:54:29 ×××100: %7:(33) sending packet to 60.190.94.84 (I) MM_SI2_WR2, MM_KEY
_EXCH
14:1:54:29 ×××100: %7:IKE message packet process over.
14:1:54:29 ×××100: %7:Receive IKE message packet.
14:1:54:29 ×××100: %7:(33) received packet from 60.190.94.84, (I) MM_SI2_WR2, MM
_KEY_EXCH
14:1:54:29 ×××100: %7:  Exchange type : 0x2<key> <nonce>
14:1:54:29 ×××100: %7:main mode process R2:(33) processing NONCE payload.
14:1:54:29 ×××100: %7:(33)main mode process R2:SKEYID state generated
14:1:54:29 ×××100: %7:(33) sending packet to 60.190.94.84 (I) MM_SI3_WR3, MM_VER
IFY
14:1:54:29 ×××100: %7:IKE message packet process over.
14:1:54:29 ×××100: %7:Receive IKE message packet.
14:1:54:29 ×××100: %7:(33) received packet from 60.190.94.84, (I) MM_SI3_WR3, MM
_VERIFY
14:1:54:29 ×××100: %7:  Exchange type : 0x2<id> <hash>
14:1:54:29 ×××100: %7:(33) (auth pre-share) processing ID payload. message ID =
0
14:1:54:29 ×××100: %7:(33) (auth pre-share) processing HASH payload. message ID
= 0
14:1:54:29 ×××100: %7:(33) (auth pre-share) SA has been authenticated with 60.19

0.94.84   

14:1:54:29 ×××100: %7:(main mode)(33) (I)Phase_1 negotiate complete! ---主模式成功建立
14:1:54:29 ×××100: %7:++++++++++++++Fill quick sa's dpd_mode(0).
上面为6个报文来IKE的主模式协商过程

下面开始IKE的快速模式(也就是ipsec sa)的协商过程

14:1:54:29 ×××100: %7:(33) Beginning Quick Mode exchange, M-ID of 2060103392
14:1:54:29 ×××100: %7:(33)(quick mode) sending packet to 60.190.94.84 (I) QM_SI1
_WR1
14:1:54:29 ×××100: %7:IKE message packet process over.
14:1:54:29 ×××100: %7:Receive IKE message packet.
14:1:54:29 ×××100: %7:find phase 2 quick sa!
14:1:54:29 ×××100: %7:(33) (2060103392)received packet from 60.190.94.84, (I) QM
_SI1_WR1
14:1:54:29 ×××100: %7:  Exchange type : 0x20<hash> <sa> <nonce> <id>
14:1:54:29 ×××100: %7:(quick mode)(isakmp_id---33) process r1:processing SA payl
oad. message ID = 2060103392
14:1:54:29 ×××100: %7: set->lifebak_sec=3600
14:1:54:29 ×××100: %7:(quick_mode)(I)phase 2 sa established,begining to update s
ab!
14:1:54:29 ×××100: %7:+++++++++++++Fill sab' dpd_mode(0)
14:1:54:29 ×××100: %7:add first sab into salink.
14:1:54:29 ×××100: %7: life_seconds=3600
14:1:54:29 ×××100: %7: life_back_seconds=3600
14:1:54:29 ×××100: %7:(quick mode)(isakmp_id---33) sending packet to 60.190.94.8
4 (I) QM_IDLE
14:1:54:29 ×××100: %7:(quick mode)(isakmp_id---33)process r1:Phase_2 negotiate c
omplete!
14:1:54:29 ×××100: %7:ike's tunnel (number=1)established.
14:1:54:29 ×××100: %7:IKE message packet process over.
×××100#debug crypto ipsec   ipsec sa的调试信息

14:2:13:16 ×××100: %7:Get acquire: 192.168.16.0/0.0.0.255 -> 192.168.1.0/0.0.0.2
55 , prot 0, port 0/0
14:2:13:16 ×××100: %7:Get acquire: negotiate source 60.190.90.66 -> dest 60.190.
94.84
14:2:13:17 ×××100: %7:(33) Creating IPSec SAs-esp.
14:2:13:17 ×××100: %7:    inbound SA has spi 276460337
14:2:13:17 ×××100: %7:    protocol esp, DES_CBC
14:2:13:17 ×××100: %7:    auth MD5
14:2:13:17 ×××100: %7: fill esp in success!
14:2:13:17 ×××100: %7:    outbound SA has spi 38689139
14:2:13:17 ×××100: %7:    protocol esp, DES_CBC
14:2:13:17 ×××100: %7:    auth MD5
14:2:13:17 ×××100: %7: fill esp out success!
14:2:13:17 ×××100: %7:^I lifetime of 3600 seconds, soft 3570 seconds
14:2:13:17 ×××100: %7:^I lifetime of 4607000 kilobytes, soft 256 kilobytes

 

 

下面命令可以看到isakmp sa已经建立
×××100#sh crypto isakmp sa

 destination       source            state                    conn-id
lifetime(second)
 60.190.94.84      60.190.90.66      QM_IDLE                  33
86323
  bc2ea01385f769db  7017b83ac843c486

 

IPSEC SA也已经成功建立

RouterA#show crypto  ipsec sa

Interface:Fastethernet 1/0
Crypto map tag:mymap, local addr  60.190.90.66
(目前的加密映射集名mymap,使用本地地址60.190.90.66

     media mtu 1500
     local  ident (addr/mask/prot/port): (192.168.16.0/0.0.0.255/0/0))
     remote  ident (addr/mask/prot/port): (192.168.1.0/0.0.0.255/0/0))
PERMIT
(保护192.168.16.0/24192.168.1.0/24之间的通信)

current_peer: 60.190.94.84
(对方对等体地址为60.190.94.84)

     #pkts encaps: 3, #pkts encrypt: 3, #pkts digest 3
     #pkts decaps: 3, #pkts decrypt: 3, #pkts verify 3
     #send errors 0, #recv errors 0
(统计数据,依次为:封装包数,加密包数,摘要包数,拆封包数,加密包数,验证包数,发送错误,接收错误)

     inbound esp sas: (进入包处理的安全联盟,协议为ESP
              spi:0x43D3C7 (4445127)spi的值为4445127
              transform: esp-des esp-md5-hmac(变换集合为esp-des-md5
              in use settings={Tunnel,} (通道模式)
sa timing: remaining key lifetime (k/sec): (4607999/3578) 
(离安全联盟的生命周期到期还有:4607999千字节/3578)

              IV size: 8 bytesIV向量长度为8
              Replay detection support:Y抗重播处理)
 
 
     outbound esp sas: (外出包处理的安全联盟,协议为ESP
              spi:0x106A0DFA (275385850) spi的值为275385850
              transform: esp-des esp-md5-hmac(变换集合为esp-des-md5
              in use settings={Tunnel,} (通道模式)
sa timing: remaining key lifetime (k/sec): (4607999/3577)
(离安全联盟的生命周期到期还有:4607999千字节/3577)

IV size: 8 bytesIV向量长度为8
              Replay detection support:Y(抗重播处理)
从统计数据可以看出,IPSec已经建立起来并有数据报得到保护

到此,×××就已经成功建立了。

 

常见问题:
1
现象:一端发起协商后,另一端没有任何响应。
可能的原因:
ü
检查发起协商的数据流是否匹配所定义的要保护的数据流;
ü
检查路由器上是否有默认路由或者到远端局域网段的路由;
ü
检查加密映射(map)是否已经应用到接口上去;
ü
检查两端的peer地址是否配置正确,确保两个×××网关本身能够互通;
ü
检查预共享密钥是否已经配置;

2
现象:IKE SA(又称第一阶段主模式)协商不成功
可能的原因:
ü
检查两端是否有一致的policy,如果规划使用预共享认证方式,确保双方一致的policy中的认证方式为预共享;
ü
预共享密钥是否配置是否一致;

3
现象:IKE SA协商成功了,但是快速模式协商不成功,IPSec SA无法建立
可能的原因:
ü
两端的是否有一致的变化集合;
ü
两端的所要保护的数据流是否相对应;
ü
两端的完美前向保护参数(pfs)是否一致;

4
现象:IPSec SA已经建立成功,但是两边的局域网中两台主机不通。
可能的原因:(这时候已经与IPSec本身没有多大关系了)
ü
主机上是否已经配置网关,该网关指向路由器的一个接口;
ü
检查两台主机上是否启用了防火墙过滤之类的软件;
ü
数据流在Internet上是否已经穿越了NAT(基本可以从路由器出口的地址是否为公网地址来确定)

 

 

 

 

第二章        动态对等体
动态获取IP端路由器配置与上面固定IP的一致。
主要是在固定IP端路由器配置部分不同:

 

!配置默认的预共享密钥,由于对端的ip地址是动态的,不能预先知道需要配置默认的 预共享密钥
crypto isakmp key 123456  address 0.0.0.0 0.0.0.0

 

!定义动态加密映射
crypto dynamic-map dymymap 1 
这部分不需要配置set peer ip-address 因为不能预知对方IP

 

添加一个动态的加密映射集到静态的加密映射集
crypto map mymap 10 ipsec-isakmp dynamic  dymymap
再把这个静态map的名字应用到接口,非应用动态map的名字,切记。