一. IPSec 协议简介

IPSec 是一系列网络安全协议的总称,它是由IETF(Internet Engineering Task Force,Internet 工程任务组)开发的,可为通讯双方提供访问控制、无连接的完整性、数据来源认证、反重放、加密以及对数据流分类加密等服务。IPSec 是网络层的安全机制。通过对网络层包信息的保护,上层应用程序即使没有实现安全性,也能够自动从网络层提供的安全性中获益。这打消了人们对×××(Virtual Private Network,虚拟专用网络)安全性的顾虑,使得××× 得以广泛应
用。

二.与IPSec 相关的几个术语 
  数据流:在 IPSec 中,一组具有相同源地址/掩码、目的地址/掩码和上层协议的数据集称为数据流。通常,一个数据流采用一个访问控制列表(acl)来定义,所有为ACL 允许通过的报文在逻辑上作为一个数据流。为更容易理解,数据流可以比作是主机之间一个的TCP 连接。IPSec 能够对不同的数据流施加不同的安全保护,例如对不同的数据流使用不同的安全协议、算法或密钥。
  安全策略:由用户手工配置,规定对什么样的数据流采用什么样的安全措施。对数据流的定义是通过在一个访问控制列表中配置多条规则来实现,在安全策略中引用这个访问控制列表来确定需要进行保护的数据流。一条安全策略由“名字”和“顺序号”共同唯一确定。
  安全策略组:所有具有相同名字的安全策略的集合。在一个接口上,可应用或者取消一个安全策略组,使安全策略组中的多条安全策略同时应用在这个接口上,从而实现对不同的数据流进行不同的安全保护。在同一个安全策略组中,顺序号越小的安全策略,优先级越高。
  安全联盟(Security Association,简称SA):IPSec 对数据流提供的安全服务通过安全联盟SA 来实现,它包括协议、算法、密钥等内容,具体确定了如何对IP 报文进行处理。一个SA 就是两个IPSec 系统之间的一个单向逻辑连接,输入数据流和输出数据流由输入安全联盟与输出安全联盟分别处理。安全联盟由一个三元组(安全参数索引(SPI)、IP 目的地址、安全协议号(AH或ESP))来唯一标识。安全联盟可通过手工配置和自动协商两种方式建立。手工建立安全联盟的方式是指用户通过在两端手工设置一些参数,然后在接口上应用安全策略建立安全联盟。自动协商方式由IKE 生成和维护,通信双方基于各自的安全策略库经过匹配和协商,最终建立安全联盟而不需要用户的干预。
  安全联盟超时处理:安全联盟更新时间有“计时间”(即每隔定长的时间进行更新)和“计流量”(即每传输一定字节数量的信息就进行更新)两种方式。
  安全参数索引(SPI):是一个32 比特的数值,在每一个IPSec 报文中都携带该值。SPI、IP 目的地址、安全协议号三者结合起来共同构成三元组,来唯一标识一个特定的安全联盟。在手工配置安全联盟时,需要手工指定SPI 的取值。为保证安全联盟的唯一性,每个安全联盟需要指定不同的SPI 值;使用IKE协商产生安全联盟时,SPI 将随机生成。
   安全提议:包括安全协议、安全协议使用的算法、安全协议对报文的封装形式,规定了把普通的IP 报文转换成IPSec 报文的方式。在安全策略中,通过引用一个安全提议来规定该安全策略采用的协议、算法等。

三.路由器设备中配置***

1.路由器中的acl规则的设置(使用扩展的访问控制列表)

  添加两条acl 

acl 3000 match-order auto     //用于过滤出到达左边网络的流量。符合该acl的流量使用***传输数据流
    rule normal permit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0 0.0.0.255   //允许目的地址为192.168.2.0 网络的数据过滤到***通道中进行传输
    rule normal deny ip source any destination any    //其余数据均走其他的通道(NAT或代理)

acl 3001 match-order auto
    rule normal permit ip source 192.168.1.0 0.0.0.255 destination 192.168.3.0 0.0.0.255
    rule normal deny ip source any destination any

2.创建安全提议
      ①.定义安全提议     
       ipsec proposal proposal-name   
     ②.设置安全协议对 IP 报文的封装模式  

        encapsulation-mode { transport | tunnel }    //选择安全协议的封装模式,缺省值为:tunnel  隧道模式

    ③.选择安全协议

       transform { ah-new | ah-esp-new | esp-new }   //默认的安全协议为esp-new

   ④.选择加密算法

       esp-new encryption-algorithm { 3des | des | blowfish | cast | skipjack | aes }

      //针对安全协议选择加密算法,默认情况下ESP 协议采用des 加密算法与md5-hmac-96 认证算法;AH 协议采用md5-hmac-96 认证算法,AH不支持加密。

3.创建安全策略 (手工方式)
//安全策略一旦建立就不能再修改类型为。只能删除后重新建立新的安全策略,新的类型。
①.手工创建安全策略
     ipsec policy policy-name sequence-number manual
     修改安全策略
     ipsec policy policy-name sequence-number
②.配置安全策略引用的访问控制列表

     security   acl  acl-number    //应用安全策略的接口根据acl规则将特定的数据流传输到特定的***通道内会对应相对的方式。缺省情况下安全策略不引用任何加密访问控制列表。

③.指定安全隧道的起点与终点。
      tunnel local ip-address   //指定本地端的ip地址

      tunnel remote ip-address    //指定远端的ip地址,用于建立隧道,在缺省情况下,不指定安全隧道起点与终点。

④.配置安全策略中引用的安全提议
proposal proposal-name    //引用安全提议,确定封装形式,协议类型,加密算法。
⑤.配置安全策略联盟的SPI 及使用的密钥

sa inbound { ah | esp } spi spi-number   //  一端同种协议类型的入口处安全联盟spi和密钥必须与对端的出口spi与密钥保持一致。

sa outbound { ah | esp } spi spi-number // 一端同种协议类型的出口处安全联盟spi和密钥必须与对端的入口spi与密钥保持一致。

缺省情况下:未设置输出/输入安全联盟SPI值。
注意:在同一个端口上不能有相同的spi作用在同一个policy中。spi(安全联盟索引)
4.创建安全策略  (使用IKE 自动协商)
①.使用IKE创建安全策略联盟

ipsec policy policy-name sequence-number isakmp //  创建安全联盟格式为  “策略名+策略编号+类型”

ipsec policy policy-name sequence-number    //修改时为 “策略名+策略编号”

缺省情况下,不创建安全策略。
②.配置安全策略引用的访问控制列表
security acl access-list-number   //acl在***中用于进行包过滤
③.指定安全隧道的终点
//IKE方式在一个策略只有一个对端地址。修改方式为先删除旧的远端地址再添加。
tunnel remote ip-address   //此地址为目的网络的公网出口ip
缺省情况下,不指定安全策略的终点。
④.配置安全策略中引用的安全提议

proposal proposal-name1 [ proposal-name2...proposal-name6 ]

缺省情况下,安全策略不引用任何的安全提议。
通过IKE协商创建的安全联盟,一条安全策略最多可引用六个安全提议,IKE协商将在安全隧道的两端搜索能够完全匹配的安全协议。若没有完全匹配的安全协议,则安全联盟不能建立。
5.在接口上应用安全策略组
ipsec policy policy-name   //在接口模式下直接使用此命令在该接口上应用安全策略
缺省情况下,接口上没有。
上面为配置的全过程。***两端的配置基本相同。
四.案例一
1.实验目的
使得分支机构1与分支结构2分别通过由自动协商方式建立的***隧道进行私有地址间的无障碍访问。
2.实验设备:
类别        厂商    型号                   数量
路由器     华为    quidway 2600E   3台
防火墙     h3c     F100-C               1台
3.实验拓扑图

4.路由器R9的配置

[R9]int e 0   //配置网卡参数
[R9-Ethernet0]ip add 172.16.1.1 24
[R9-Ethernet0]int e 1
[R9-Ethernet1]ip add 192.168.1.1 24

[R9]acl 3000 //配置acl规则
[R9-acl-3000]rule permit ip source 192.168.1.0 0.0.0.255 des 192.168.2.0  0.0.0.255
  Rule has been added to normal packet-filtering rules
[R9-acl-3000]rule deny ip source any des any
  Rule has been added to normal packet-filtering rules

[R9]acl 3001  //配置acl规则
[R9-acl-3001]rule permit ip source 192.168.1.0 0.0.0.255 des 192.168.3.0  0.0.0.255
  Rule has been added to normal packet-filtering rules
[R9-acl-3001]rule deny ip sour any des any
  Rule has been added to normal packet-filtering rules

[R9]ipsec proposal tran1   //创建安全提议

[R9-ipsec-proposal-tran1]encap tunnel  //封装方式
[R9-ipsec-proposal-tran1]tran esp    //协议
[R9-ipsec-proposal-tran1]esp-new  encry des   //加密
[R9-ipsec-proposal-tran1]esp-new  auth sha   //验证

[R9]ipsec policy policy1 10 isakmp   //使用IKE自动协商安全策略
[R9-ipsec-policy-policy1-10]tunnel remote 172.16.2.1  //指定远端ip
[R9-ipsec-policy-policy1-10]secur acl 3000  //应用acl进行包过滤
[R9-ipsec-policy-policy1-10]proposal tran1  //引用安全提议

[R9]ike pre abcd remote 172.16.2.1  //使用 pre-sharekey 值“abcd” 与远端进行协商(两端的值必须一致)

[R9]ipsec policy policy1 11 isakmp 
[R9-ipsec-policy-policy1-11]secur acl 3001
[R9-ipsec-policy-policy1-11]tunnel remote 172.16.3.1
[R9-ipsec-policy-policy1-11]proposal tran1

[R9]ike pre abcde remote 172.16.3.1
[R9]ip route 0.0.0.0 0.0.0.0 172.16.1.2   //添加一条默认路由

[R9]int e 0
[R9-Ethernet0]ipsec policy policy1   //在接口模式下应用该安全策略
5.路由器R6的配置

[R6]int e 0
[R6-Ethernet0]ip add 172.16.2.1 24
[R6-Ethernet0]int e 1
[R6-Ethernet1]ip add 192.168.2.1 24
[R6]ip route 0.0.0.0 0.0.0.0 172.16.2.2 
[R6-acl-3000]rule permit ip source 192.168.2.0 0.0.0.255 des 192.168.1.0
0.0.0.255

[R6]ipsec proposal proposal1
[R6-ipsec-proposal-proposal1]encap  tunnel
[R6-ipsec-proposal-proposal1]transform esp-new
[R6-ipsec-proposal-proposal1]esp-new encry des
[R6-ipsec-proposal-proposal1]esp-new auth sha

[R6]ipsec policy policy1 10 isakmp
[R6-ipsec-policy-policy1-10]secur acl 3000

[R6-ipsec-policy-policy1-10]tunnel remote 172.16.1.1
[R6-ipsec-policy-policy1-10]proposal proposal1

[R6]int  e0
[R6-Ethernet0]ipsec policy policy1
[R6]ike pre-shared-key abcd remote 172.16.1.1

6.路由器R16的配置

[R6]int e 0
[R6-Ethernet0]ip add 172.16.2.1 24
[R6-Ethernet0]int e 1
[R6-Ethernet1]ip add 192.168.2.1 24
[R6]ip route 0.0.0.0 0.0.0.0 172.16.2.2 
[R6-acl-3000]rule permit ip source 192.168.2.0 0.0.0.255 des 192.168.1.0 
0.0.0.255

[R6]ipsec proposal proposal1
[R6-ipsec-proposal-proposal1]encap  tunnel
[R6-ipsec-proposal-proposal1]transform esp-new
[R6-ipsec-proposal-proposal1]esp-new encry des
[R6-ipsec-proposal-proposal1]esp-new auth sha

[R6]ipsec policy policy1 10 isakmp
[R6-ipsec-policy-policy1-10]secur acl 3000

[R6-ipsec-policy-policy1-10]tunnel remote 172.16.1.1
[R6-ipsec-policy-policy1-10]proposal proposal1

[R6]int  e0
[R6-Ethernet0]ipsec policy policy1
[R6]ike pre-shared-key abcd remote 172.16.1.1
[R6]

7.防火墙 firewall 的配置

interface Ethernet0/1       
ip address 172.16.1.2 255.255.255.0

interface Ethernet0/2
ip address 172.16.2.2 255.255.255.0

interface Ethernet0/3
ip address 172.16.3.2 255.255.255.0

firewall zone untrust
add interface Ethernet0/1
add interface Ethernet0/2
add interface Ethernet0/3
set priority 5

8.测试截图
测试两个私有网段之间可以实现跨越外网的互通
到分支机构1的***链路测试

到分支机构2的***链路测试

以上是此次案例的完整配置命令!!!有疑问请详细查看“三.路由器设备中配置***”。本人由于时间关系,嘿嘿,你懂得。。。
                     嗯,韩宇说的对!!!