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
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路由器后的直连网段可以成功连接,如果在跟一个路由器的话,就连不上了。
如何解决?
待解。
另外本实验还没有验证分离隧道的功能,有待研究。
转载于:https://blog.51cto.com/edges/408959