Ez×××根据easy ***的读音简写而来,是cisco的一个远程×××技术,他使用向客户端推送策略的方式大大减轻了客户端的配置,方便了管理。我最初学习这个技术的时候看的是cisco出的一本×××配置指南,记得那本书主要是拿图形化的软件工具来配的。这两天重学×××的拿到了在IOS上的配置指南,做了一个基础配置的小实验,配置命令还是挺多的,还要花点时间慢慢消化。

         拓扑:

 

         基本配置:

Client-A:

说明:Client-A在这里作为Ez×××背后的网络,使用loopback0模拟一台PC,一条默认路由指向Ez××× server

 

interface Loopback0

 ip address 1.1.1.1 255.255.255.0

!

interface Serial0/0

 ip address 12.1.1.1 255.255.255.0

 clock rate 2000000

!

ip route 0.0.0.0 0.0.0.0 Serial0/0 12.1.1.2

!

 

Ez×××-Server

Ez××× server   用户接收然后验证客户端发起的连接请求,客户端所需的策略都是在server上配置好后然后根据具体的条件推送给相应的客户。有一个小细节就是:Ez×××分为客户端模式和网络拓展模式(此基础之上又提出了网络拓展模式+)。这两者的一个明显区别就是客户端模式的IP地址由server端推送过来,网络拓展模式则不是这样,客户端自己决定网络编址。

!

hostname Ez×××-Server

!

aaa new-model  #启用3A实现认证功能

!

aaa authentication login LOCAL-DB local   #启用本地的数据库来认证,用于XAUTH

aaa authorization network BeiJing local   #启用组策略查找,使用组BeiJing

ip cef

!        

username cisco password 0 cisco  #本地认证数据库的一个条目,客户端发起连接时使用

!        

crypto isakmp policy 10  #建立ISAKMP策略

 hash md5

 authentication pre-share

 group 2   #DH只能是group 2,需要特别留意

!

crypto isakmp client configuration group BeiJing    #配置向客户推送的组策略,组名BeiJing

 key cisco   #密码,客户使用××× client客户端登录时选择对应的组输入密码

 dns 20.20.20.20 

 wins 20.20.20.20

 pool POOL-BJ  #使用client模式时客户使用的地址池

!

crypto ipsec transform-set BeiJing-Trans esp-des esp-md5-hmac  #定义转换集

!

crypto dynamic-map cisco 10  #Server端并不知道客户端,所以定义动态map

 set transform-set BeiJing-Trans   #调用前面定义的转换集

 reverse-route   #启用RRI,自动产生指向地址池的静态路由

!

crypto map cisco client authentication list LOCAL-DB    #XAUTH启用IKE查询

 crypto map cisco isakmp authorization list BeiJing     #为组策略查找启用IKE查询

crypto map cisco client configuration address respond   #配置路由器响应模式

crypto map cisco 10 ipsec-isakmp dynamic cisco    #静态map调用动态map

!

interface FastEthernet0/0

 ip address 192.168.1.2 255.255.255.0

 duplex auto

 speed auto

 crypto map cisco   #调用crypto map

!

interface Serial0/0

 ip address 12.1.1.2 255.255.255.0

 clock rate 2000000

!

ip local pool POOL-BJ 172.16.0.1 172.16.0.100    #定义本地地址池

!

ip route 1.1.1.0 255.255.255.0 Serial0/0 12.1.1.1  #指向client的路由

!

 

Ez×××-Client

客户端路由器与Server建立连接,他决定了加入那个组,然后从inside接口进入的流量默认情况下都作为×××流量进行加密(为开启分离隧道功能)。客户端路由器的配置相对于L2L的配置要简单很多。

!

hostname Ez×××-Client

!

ip cef

!      

crypto ipsec client ez*** NanJing

 connect manual  #手动发起连接

 group BeiJing key cisco  #这个组就是Ez×××-Server上定义的组策略的组名

 mode client   #使用client模式,还有network-extension等可选

 peer 192.168.1.2   #这个地址指向Ez×××-Client

 xauth userid mode interactive   #此句系统默认追加

!

interface Loopback0

 ip address 172.16.0.3 255.255.255.255

!

interface FastEthernet0/0

 ip address 192.168.1.3 255.255.255.0

 duplex auto

 speed auto

 crypto ipsec client ez*** NanJing    #调用,这里的接口是outside,输出时outside略去了

!

interface Serial0/2

 ip address 34.1.1.3 255.255.255.0

 clock rate 2000000

 crypto ipsec client ez*** NanJing inside  #很重要,指定×××的入口

!

ip route 1.1.1.0 255.255.255.0 FastEthernet0/0 192.168.1.2  #这个路由是必须的

!

 

Client-B

挂在Ez×××的背后的一个路由器,使用loopback接口模拟内网,然后用一条默认路由指向Ez×××-Client

hostname Client-B

!

ip cef

!

interface Loopback0

 ip address 4.4.4.4 255.255.255.0

!

interface Serial0/0

 ip address 34.1.1.4 255.255.255.0

 clock rate 2000000

!

ip route 0.0.0.0 0.0.0.0 Serial0/0 34.1.1.3

!

 

基本配置完成后下面测试连接。

1)         在客户端路由器发起连接

Ez×××-Client#crypto ipsec client ez*** connect

Ez×××-Client#

*Mar  1 02:22:47.979: EZ×××(NanJing): Pending XAuth Request, Please enter the following command:

*Mar  1 02:22:47.979: EZ×××: crypto ipsec client ez*** xauth

使用上面的命令后×××尚未完全建立起连接,server端还没有向客户端推送组策略,我们在Server端配置了XAUTH,此时我们还没有发起认证请求,系统提示了让我们发送命令crypto ipsec client ez*** xauth发起认证请求。

Ez×××-Client#sh crypto isakmp sa

dst             src             state          conn-id slot status

192.168.1.2     192.168.1.3     CONF_XAUTH           3    0 ACTIVE

 

Ez×××-Client#sh crypto ipsec client ez***

Easy ××× Remote Phase: 4   #进入到最后一个步骤,前面三个phase已经完成

Tunnel name : NanJing

Inside interface list: Serial0/2

Outside interface: FastEthernet0/0

Current State: XAUTH_REQ

Last Event: XAUTH_REQUEST

Save Password: Disallowed   #我们也可以在client端配置自动提交组名和密码

Current Ez××× Peer: 192.168.1.2

 

2)         发起XAUTH认证

Ez×××-Client#crypto ipsec client ez*** xauth

Username: cisco

Password:

Ez×××-Client#

*Mar  1 02:31:41.491: %CRYPTO-6-EZ×××_CONNECTION_UP: (Client)  User=  Group=BeiJing  Client_public_addr=192.168.1.3  Server_public_addr=192.168.1.2  Assigned_client_addr=172.16.0.4 

Ez×××-Client#

*Mar  1 02:31:42.607: %LINK-3-UPDOWN: Interface Loopback0, changed state to up

*Mar  1 02:31:43.607: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up

这里输入的就是在server端配置的user cisco pass cisco建立的数据库。认证成功后×××成功建立,组策略推送过来,接口再次UP

Ez×××-Client#sh crypto isakmp sa

dst             src             state          conn-id slot status

192.168.1.2     192.168.1.3     QM_IDLE              1    0 ACTIVE

查看推送过来的组策略。

Ez×××-Client#sh crypto ipsec client ez***

Easy ××× Remote Phase: 4

Tunnel name : NanJing

Inside interface list: Serial0/2

Outside interface: FastEthernet0/0

Current State: IPSEC_ACTIVE

Last Event: SOCKET_UP

Address: 172.16.0.4

Mask: 255.255.255.255

DNS Primary: 20.20.20.20

NBMS/WINS Primary: 20.20.20.20

Save Password: Disallowed

Current Ez××× Peer: 192.168.1.2

 

3)         测试连通性

Client-B#ping 1.1.1.1

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 80/156/376 ms

如果我们要查看加解密包的情况需要去server端看,client端是看不出来的。

Ez×××-Server#sh crypto engine connections active

 

  ID Interface       IP-Address   State  Algorithm               Encrypt   Decrypt

  1 FastEthernet0/0 192.168.1.2    set  HMAC_MD5+DES_56_CB        0        0

2001 FastEthernet0/0      192.168.1.2     set    DES+MD5           5        0

2002 FastEthernet0/0      192.168.1.2     set    DES+MD5           0        5

 

4)         验证地址转换

Client-A开启debug ip icmp后查看数据包的地址。

*Mar  1 02:36:27.447: ICMP: echo reply sent, src 1.1.1.1, dst 172.16.0.4

*Mar  1 02:36:27.567: ICMP: echo reply sent, src 1.1.1.1, dst 172.16.0.4

*Mar  1 02:36:27.719: ICMP: echo reply sent, src 1.1.1.1, dst 172.16.0.4

*Mar  1 02:36:27.835: ICMP: echo reply sent, src 1.1.1.1, dst 172.16.0.4

*Mar  1 02:36:27.951: ICMP: echo reply sent, src 1.1.1.1, dst 172.16.0.4

是我们定义的地址池的IP范围内(172.16.0.1----172.16.0.100),因为我测试过了几次,因此之类分配的是172.16.0.4而不是172.16.0.1

 

5)         验证RRI

Ez×××-Server#sh ip route static

     1.0.0.0/24 is subnetted, 1 subnets

S       1.1.1.0 [1/0] via 12.1.1.1, Serial0/0

     172.16.0.0/32 is subnetted, 1 subnets

S       172.16.0.4 [1/0] via 192.168.1.3

172.16.0.4的路由不是我们手动添加上去的,这个就是RRI作用的结果。

 

6)         问题:inside端口后接路由器下的网段无法联通。

前面定义了Client-B上的loopback 0端口,下面用loopback0作为源端口来发起ping

Client-B#ping 1.1.1.1 sou l0

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:

Packet sent with a source address of 4.4.4.4

.....

Success rate is 0 percent (0/5)

Ping不通。

R1上的debug输出如下所示:

*Mar  1 02:43:52.255: ICMP: echo reply sent, src 1.1.1.1, dst 4.4.4.4

*Mar  1 02:43:52.355: ICMP: dst (1.1.1.1) host unreachable rcv from 12.1.1.2

这就是client mode一个小特点,即client路由器后的直连网段可以成功连接,如果在跟一个路由器的话,就连不上了。

如何解决?

待解。

另外本实验还没有验证分离隧道的功能,有待研究。