通过博文CIsco路由器实现IPSec 虚拟专用网原理及配置详解可以实现两个局域网之间建立虚拟专用网,但是在现实环境中,较为常用的还是Easy 虚拟专用网。它主要解决的就是出差员工通过虚拟专用网访问内网的问题。在路由器上实现Easy 虚拟专用网时,会涉及以下的基本概念:XAUTH、组策略、动态Crypto Map等概念!

博文大纲:
一、Easy 虚拟专用网需要解决的问题;
二、在路由器上实现Easy 虚拟专用网需要配置什么?
1.使用XAUTH做用户验证;
2.组策略;
3.动态 Crypto Map;
三、在Cisco路由器上配置Easy 虚拟专用网案例;

一、Easy 虚拟专用网需要解决的问题

通过CIsco路由器实现IPSec 虚拟专用网原理及配置详解了解到实现IPSec 虚拟专用网时,需要经历两个重要的阶段。

1.阶段1——建立管理连接

  • 协商采用何种方式建立管理连接;
  • 通过DH算法共享密钥信息;
  • 对等体彼此进行身份验证;

2.阶段2-建立数据连接

  • 定义对等体间保护何种流量;
  • 定义用来保护数据的安全协议;
  • 定义传输模式;

按照上述过程建立IPSec 虚拟专用网没有问题,但是如果使用上面的方法建立Easy 虚拟专用网就会出现很多问题。比如:

  • 远程访问虚拟专用网一般来说,这时一端为硬件设备,如路由器、防火墙等;另一端则为客户端设备,如笔记本电脑等。这时客户端一侧的安全性就会存在一定的问题。大家试想一下,公司网关级的设备与PC的安全管理级别肯定是不同的,更何况很多员工是通过互联网访问公司的资源,会带来很大的安全隐患。而建立IPSec 虚拟专用网加密的传输的根本就是事先配置在设备上的预共享密钥,一旦密钥泄露,整个IPSec 虚拟专用网就没有任何意义;
  • 建立IPSec 虚拟专用网时,双方都有固定的IP地址,这样我们才能配置ACL、对等体。很显然如果按照配置IPSec 虚拟专用网的思路来建立Easy 虚拟专用网是不可能的!

二、在路由器上实现Easy 虚拟专用网需要配置什么?

1.使用XAUTH做用户验证

(1)XAUTH

XAUTH是一个虚拟专用网网关的增强特性,提供用户名和密码的方式来验证用户身份。由于这个过程是在两个连接建立之间完成的,所以也被称为“阶段1.5”

提及用户验证自然就会涉及用户名和密码的存储方式,通常有两种情况:

  • 存储在虚拟专用网网关设备的内部数据库中;
  • 存储在第三方设备上,比如一台AAA服务器;

虽然增加了用户名和密码的验证过程,但如果远程访问虚拟专用网用户的笔记本电脑丢失,一些非法用户也可以通过这台笔记本电脑来获取公司内部的资料。解决这种问题的办法有:

  • 用户使用令牌卡,是每次输入用户名/口令都是不同的;
  • 虚拟专用网的管理员强制客户端不得在本地存储用户名/口令,用户每次登陆必须手动输入;

实际环境中一般都是采用第二种验证方式!

(2)AAA的定义

AAA是Authentication(验证)、Authorization(授权)和Accounting(统计)的缩写,它提供了在网络设备上配置访问控制的基本框架。

实现AAA服务器只要使用RADIUS协议和TACACS+协议:

  • RADIUS协议:是一个全开放的标准协议,任何厂商和用户可以灵活的修改RADIUS;
  • TACACS+协议:是Cisco设计的私有协议;

2.组策略

配置Easy 虚拟专用网一个关键的问题就是,由于与虚拟专用网连接的客户端由很多,所以Peer的IP地址就不会固定,Crypto ACL也不会唯一。最好的解决方法就是让虚拟专用网“主动推送”这些策略给客户端。但是很多情况下客户端的这些策略都是相同的,因此在Easy 虚拟专用网中引入组的概念,将具有相同策略的客户端划分到一个组中,在虚拟专用网网关上一次性地为一组客户端配置策略,这样在配置过程和管理过程中都将大大节省工作量。

组策略包含以下内容:

(1)地址池

远程访问虚拟专用网的客户端之所以很难与虚拟专用网的网关建立连接,就是因为客户端没有固定的IP地址,在这种“动态”的情况下,最好的办法就是让使虚拟专用网设备像DHCP服务器一样为每个通过验证的客户端“推送”IP地址。这样,由于客户端的IP地址是虚拟专用网网关动态分配的,虚拟专用网设备自然也就知道该与哪个IP建立虚拟专用网连接。

示意图如下:
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
当客户端通过了之前的AAA身份验证之后哦,为了与虚拟专用网网关建立IPSec 连接,虚拟专用网网关会从自身或第三方认证服务器中的地址池推送IP地址给客户端。

(2)DNS和网关

和DHCP服务器一样,除了给客户端分配IP地址以外,还要分配网关和DNS,这样客户端就拥有了内网的IP、网关及DNS等必备的资源,真正成为内网的一员。

示意图如下:
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
客户端通过虚拟专用网隧道接入公司内网,就好像虚拟成公司内部的一台客户机一样,这样就可以应用一些公网上被禁的协议。比如共享。

(3)共享密钥

在远程访问虚拟专用网中,虚拟专用网网关需要与多组客户端“共享密钥”,因此在配置虚拟专用网时需要为每组客户端设置不同的共享密钥,客户端的密钥并不是虚拟专用网网关推送的,而是需要用户通过客户端软件配置在主机上,而这个过程一般是由公司的网络管理员来实现的,那么这个密钥自然是保存在客户端主机本地了,因此才有了“阶段1.5”的存在。

示意图如下:
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)

(4)分离隧道

默认情况下,客户端与虚拟专用网网关建立隧道后,只能访问内网授权的资源,这是因为隧道会允许所有的流量,也就是说所有的流量必须经过隧道到达公司内网,自然也就不允许任何流量访问外网,而对于客户端而言,访问外网,再正常不过了,所以需要针对远程访问虚拟专用网配置ACL来分离隧道。

通过配置ACL,所有“permit”的流量都被加密传输,所有“deny”的流量都被明文传输,而加密的流量就是通过隧道访问公司内网的流量,明文的流量就是访问Internet的流量,将这个ACL应用到组策略中即可实现需求。

示意图如下:
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
客户端通过认证后,ACL将随其他组策略一同被推送到客户端主机,此时主机的网关将变成公网网关,查看主机的路由表会发现有一条明细路由指向虚拟专用网网关,这条明细的路由就是虚拟专用网客户端根据推送来的ACL生成的。

(5)分离DNS

当客户端主机通过远程访问虚拟专用网连接到公司内网,即使隧道分离后,客户端访问Internet的web服务器时,也需要使用公司内网的DNS解析,但这不是一个合理的过程,如果客户端每次访问百度,都要经过公司内网进行DNS解析,其实是没必要的,太浪费资源了,所以要实现客户端访问公司内网的web服务器时,使用公司内网的DNS解析,若访问百度,则使用外网的DNS,如果要实现不同的域名使用不同的DNS,就需要用到了分离DNS。

示意图如下:
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)

3.动态 Crypto Map

因为我们无法实现在虚拟专用网设备的静态crypto map中指定客户端的地址(客户端的地址由虚拟专用网的DHCP服务分发,不是固定的),所以需要将静态crypto map中需要的参数被动态填充,使用动态crypto map 必须采用ISAKMP/IKE发起协商,而且在实现远程访问虚拟专用网的时候通常在虚拟专用网网关上同时配置静态和动态的crypto map,因为只有一台具有静态配置的设备可以发起IPSec的隧道,也正是如此,动态的crypto map很少被用于L2L(局域网to局域网)会话建立。

在实现远程访问虚拟局域网的时候,一般会先配置transform-set,因为指定传输集与peer的IP地址无关,可以将传输集直接应用到动态crypto map;由于在接口上只能配置一个crypto map,且虚拟专用网网关上必须有静态crypto map,所以需将动态crypto map 应用到静态的crypto map中,再将静态crypto map应用到接口上,这就是配置crypto map的一般思路。

示意图如下:
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)

三、在Cisco路由器上配置Easy 虚拟专用网案例

(1)案例环境

Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)

(2)案例需求

(1)客户端通过Easy 虚拟专用网使用域名(www.yinuo.com) 正常访问内部网站;
(2)客户端使用域名(www.xiaojiang.com) 正常访问公网网站;
(3)按照拓补图中的IP地址进行配置,R1路由器需要配置一条默认路由到R2、R2只配置IP地址、并自行搭建相关的服务用于测试;
(4)客户端下载虚拟专用网软件 (仅用于Windows 7);

(3)案例实施

1.内部网关路由器R1的配置:

R1(config)#aaa new-model                           //启用AAA
R1(config)#aaa authentication login lv-authen local             //认证
R1(config)#aaa authorization network lv-author local          //授权
//“ lv-authen”是自定义的认证名称,“lv-author”是自定义的授权名称
//“local”表示本地认证方式,也可以使用“group radius”,路由器会转发给指定的RADIUS服务器进行验证
//实验环境,为了简单起见就使用local方式
R1(config)#username lv secret zhenjiang
//配置用于客户端连接的用户名及密码,“secret”表示加密该密码
//也可以配置多个用户名和密码,以供路由器与多组客户端进行身份验证
R1(config)#crypto isakmp policy 10
R1(config-isakmp)#encryption 3des
R1(config-isakmp)#hash sha
R1(config-isakmp)#authentication pre-share 
R1(config-isakmp)#group 2            //不可以使用DH密钥组号1
R1(config-isakmp)#exit  

阶段1配置完毕!

R1(config)#ip local pool lv-pool 192.168.2.10 192.168.2.50
//地址池的网段地址,池中的地址是向客户端分发的,不可以和内网使用同一网段,否则将会影响最终通信
R1(config)#ip access-list extended lv-acl
//创建一个命名的ACL
R1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 any
//这个ACL是允许192.168.1.0去往任何地址,当推送到客户端时,就会反过来。
//变成了允许任何IP地址访问192.168.1.0。因为这里的源地址是站在路由器的角度的。
R1(config)#crypto isakmp client configuration group lv-group
//创建用户组,组名为lv-group
R1(config-isakmp-group)#key lv-key           //用户组密钥为lv-key
R1(config-isakmp-group)#pool lv-pool         //调用刚才定义的地址池
R1(config-isakmp-group)#dns 192.168.1.100    
//为客户端指定内部的DNS服务器
R1(config-isakmp-group)#acl lv-acl       //调用刚才定义的ACL
R1(config-isakmp-group)#split-dns yinuo.com
//指定需要分离出来的域名(内网服务器的域名)

阶段1.5配置完毕!

R1(config)#crypto ipsec transform-set lv-set esp-3des esp-sha-hmac 
//指定传输集的加密、验证方式。不可以使用AH算法进行验证
R1(cfg-crypto-trans)#exit
R1(config)#crypto dynamic-map lv-dymap 1
//创建动态map,“1”表示序列号,用于定义优先级
R1(config-crypto-map)#set transform-set lv-set
//调用刚才定义的传输集
R1(config-crypto-map)#exit

阶段2配置完毕!

R1(config)#crypto map lv-stamap 1000 ipsec-isakmp dynamic lv-dymap
//创建一个静态map,序列号尽量靠后,优先匹配IPSec 虚拟专用网的专用静态map
//并且调用刚才定义的动态map
R1(config)#crypto map lv-stamap client authentication list lv-authen
R1(config)#crypto map lv-stamap isakmp authorization list lv-author
//调用刚才定义的AAA方式的认证和授权
R1(config)#crypto map lv-stamap client configuration address respond 
//用于客户端首先发起连接,响应客户端的请求
R1(config)#int f2/0
R1(config-if)#crypto map lv-stamap
//将定义的静态map应用到公司网关路由器的外网接口

2.客户端安装虚拟专用网的客户端软件

这里使用windows 7系统进行测试!如果使用windows 10系统的朋友,安装客户端工具时,会相对麻烦一些,可以参考博文Windows 10系统安装虚拟专用网客户端工具

Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
接下来无脑下一步即可!安装完成之后
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
连接成功后,查看生成的虚拟专用网的IP地址
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
访问公司内部、公网的服务器测试访问!
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
Cisco路由器实现远程访问虚拟专用网——Easy虚拟专用网(解决出差员工访问内网的问题)
访问成功!

———————— 本文至此结束,感谢阅读 ————————