博文目录
1、Easy 虚拟化专用网须要解决的问题是什么?
2、如何在路由器上实现Easy 虚拟专用网?
3、配置路由器上实现Easy 虚拟专用网web
因为“Virtual Private Network”(请看首字母,就知道是什么咯)是敏\感词汇,因此在博文中使用它的中文名字“虚拟专用网”来代替。算法
在以前写过了Cisco路由器IPSec 虚拟专用网原理与详细配置;Cisco的ASA防火墙和路由器上实现IPSec虚拟专用网。这两篇博文都是用于实现总公司和分公司之间创建虚拟专用网的,那么还有一种使用不少的状况,就是出差人员想要访问公司内网的资源呢?因为出差人员只是单一的一个客户端,因此和前两篇博文不同,前两篇博文搭建虚拟专用网,两端设备都是路由器或防火墙,有固定的IP地址,因此呢,并不能实现出差人员访问,这篇博文的目的,就是实现出差人员能够访问公司内网资源的,这个技术被称之为——Easy 虚拟专用网。数据库
以下图所示,当两台路由器之间通讯的流量出现匹配Crypto ACL的流量时,就会触发IPSec 虚拟专用网的链接。在L2L的IPSec 虚拟专用网创建过程当中,链接创建经历两个阶段。windows
协商采用何种方式创建管理链接。安全
经过DH算法共享密钥信息。服务器
- 对等体彼此进行身份验证。
定义了对等体间保护何种流量。网络
定义用来保护数据的安全协议。框架
- 定义传输模式。
按照上述过程创建链接对于远程访问虚拟专用网而言就会存在一些问题。远程访问虚拟专用网通常来讲,一端是硬件设备,如路由器、防火墙等;另外一端则是客户端设备,如台式机、笔记本电脑等。这时客户端一侧的安全性就会存在必定的问题。能够试想一下,公司网关级的设备与PC的安全管理级别确定是不一样的,更况且不少员工可能须要从家里访问公司的资源,加用的计算机就会存在更多的安全隐患。而整个IPSec 虚拟专用网加密传输的根本就是事先配置在设备上的预共享密钥,一旦密钥外泄,整个IPSec 虚拟专用网所作的努力全都会付之东流。而IPSec只是考虑经过隧道传输提供一种安全的机制,并无引入任何的用户名/密码的验证机制,因此当IPSec被应用于远程虚拟专用网的时候,将在安全问题上存在很大的隐患。dom
另外一个问题就是,创建L2L IPSec 虚拟专用网时,双方都有固定的IP地址,这样咱们才能有可能在配置crypto map的时候指定对方的peer,才有可能配置crypto ACL来定义哪些流量将触发链接的创建。可是对于远程访问 虚拟专用网而言,客户端一侧的IP是不可能固定的,所以,若是咱们依然按照L2L的思路来创建链接是不可能的。ide
IPSec协议最初的设计并未考虑用户验证的问题。因此IETF(Internet Engineering Task Force,因特尔网工工程任务部)引入了一个RFC的草案——XAUTH。它是一个虚拟专用网网关的加强特性,提供用户名和密码的方式来验证用户身份。因为这个过程是在两个链接创建之间完成的,因此被戏称为“阶段1.5”。(关于两个阶段的介绍,能够参考Cisco路由器IPSec 虚拟专用网原理与详细配置,有详细的介绍)。
谈到用户验证天然就会涉及用户名和密码的存储方式 ,一般状况下有两种方式:
存储在虚拟专用网网关设备的内部数据库中。
- 存储在第三方设备上,如一台AAA服务器。
AAA是Authentication(验证)、Authorization(受权)和Accounting(统计)的缩写,提供了在网络设备上配置访问控制的基本框架。
1)验证:用户是谁?
对用户的合法性进行验证,包括用户名、密码等信息的验证。
2)受权:用户能够作什么?
在用户经过验证后,为用户指定其可以使用的服务等权限。
3)统计:用户作过什么?
在用户验证、受权成功后,记录用户的操做等信息,以便于记帐、审计和报告。
实现AAA服务器主要 使用RADIUS协议和TACACS+协议。
RADIUS(Remote Authentication Dial In User Service,远程验证拨入用户服务)是一个全开放的标准协议,厂商或用户能够灵活地修改RADIUS。
- TACACS+(Terminal Access Controller System,终端访问控制器访问控制系统)是Cisco设计的私有协议。基本再也不使用。
因为与虚拟专用网网关创建链接的客户端可能会不少,因此peer的IP地址就不会固定,crypto acl也不会惟一。最好的解决办法就是让虚拟专用网网关“推送”这些策略给客户端。可是不少状况下客户端的这些策略多是相同的,所以在远程访问虚拟专用网中引入组的概念,将这些具备相同策略的客户端划分在一个组里,在虚拟专用网网关上一次性地为一组客户端配置策略,这样在配置过程和管理过程当中都将大大节省工做量。
1)地址池
可使虚拟专用网设备像DHCP服务器同样为每一个经过验证的客户端“推送”IP地址。这样,因为客户端的IP地址是虚拟专用网网关动态分配的,虚拟专用网设备天然也就知道该与哪一个IP创建虚拟专用网链接。以下图所示:
2)DNS和网关
正像DHCP服务器同样,除了给客户端分配IP地址之外,还会分配网关和DNS,虚拟专用网网关也会给客户端推送网关和DNS,这样客户端就拥有了内网的IP、网关及DNS等必备的资源,真正成为内网的一员,以下图所示:
3)共享密钥
在L2L的过程当中,须要根据预共享密钥演算出用于加密、身份验证、完整性验证的密钥,支持后续虚拟专用网链接的创建及数据通讯。在远程访问虚拟专用网中,虚拟专用网网关须要与多组客户端“共享密钥”,所以在配置虚拟专用网网关时须要为每组客户端设置不一样的共享密钥,客户端的密钥并非虚拟专用网网关推送的,而是须要用户经过客户端软件配置在主机上,而这个过程通常是由公司的网络管理员来实现的,那么这个密钥天然是保存在客户端主机本地了,所以才有了“阶段1.5”的存在,以下图所示:
4)分离隧道
默认状况下,客户端与虚拟专用网网关创建隧道后,只能访问内网受权的资源,这是由于隧道会容许全部的流量,也就是说全部的流量必须通过隧道到达公司内网,天然也就不容许任何流量访问外网,但对于客户端而言,访问外网,是再正常不过的需求了,因此须要针对远程访问虚拟专用网配置ACL来分离隧道。
经过配置ACL,全部“permit”的流量都被加密传输,全部“deny”的流量都被明文传输,而加密的流量就是经过隧道访问公司内网的流量,明文的流量就是访问Internet的流量,将这个ACL应用到组策略中便可实现需求,以下图所示:
5)分离DNS
当客户端主机经过远程访问虚拟专用网链接到公司内网,即便隧道分离后,客户端访问Internet的web服务器时,也须要使用公司内网的DNS解析,但这不是一个合理的过程,细想一下,客户端每次访问外网的某一个域名,都须要不一样地区公司内部进行DNS解析,实际上是没有必要的;但若是客户端访问的是公司内网的Web服务器就须要经过内网的NDS解析。若要实现访问不一样的域名使用不一样的DNS,使用的最佳方案是分离DNS。以下图所示:
由于咱们没法实如今虚拟专用网设备的静态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的通常思路,以下图所示:
1)在公司网关路由器上配置虚拟专用网,客户端(出差人员)能够链接到虚拟专用网,并访问内网提供的DNS服务,使用该域名访问,内网中的DNS负责解析该域名)。
2)客户端链接到虚拟专用网后,还要实现出差员工能够访问ISP路由器的loop back 0接口(模拟Internet网)和访问R1的loop back 0接口(模拟HTTP服务)。
3)R4上要开启DHCP服务,给客户端自动下发IP地址网关及DNS。
3)自行配置正确的路由器接口及各个服务器的IP、网关、路由(服务器配置相应的网关,路由器R1只需配置接口IP及一条默认路由指向R2路由器便可,R2路由器除了接口IP之外什么都不要配置,尤为是路由表,不然可能测试不出来虚拟专用网的效果)。
4)客户端须要安装Cisco提供的客户端软件进行链接。
1)下载客户端使用的软件,并安装在客户端,用来链接虚拟专用网(我这里提供的是windows 7的client安装包。Cisco客户端软件包
1)配置基本网络参数:
1) R1配置以下: R1(config)#int loo0 #开启loop back 0接口 R1(config-if)#ip add 1.1.1.1 255.255.255.0 #配置IP地址 R1(config-if)#no shutdown #启用接口 R1(config-if)#exit R1(config)#int f0/0 R1(config-if)#ip add 192.168.10.1 255.255.255.0 R1(config-if)#no shutdown R1(config-if)#exit R1(config)#line vty 0 4 #配置vty,容许5个终端访问 R1(config-line)#password pwd@123 #配置telnet密码 R1(config-line)#login #保存 R1(config-line)#exit R1(config)#enable password pwd@123 #配置全局密码 2) Easy配置以下: Easy(config)#int f0/0 Easy(config-if)#ip add 192.168.10.254 255.255.255.0 Easy(config-if)#no shutdown Easy(config-if)#exit Easy(config)#int f1/0 Easy(config-if)#ip add 192.168.20.254 255.255.255.0 Easy(config-if)#no shutdown Easy(config-if)#exit Easy(config)#ip route 0.0.0.0 0.0.0.0 192.168.20.1 #配置去往ISP的路由 Easy(config)#ip route 1.1.1.0 255.255.255.0 192.168.10.1 #配置去往R1的loop back 0接口的路由 3) ISP配置以下: ISP(config)#int f1/0 ISP(config-if)#ip add 192.168.20.1 255.255.255.0 ISP(config-if)#no shutdown ISP(config-if)#exit ISP(config)#int f0/0 ISP(config-if)#ip add 192.168.30.1 255.255.255.0 ISP(config-if)#no shutdown ISP(config-if)#exit ISP(config)#int loo0 ISP(config-if)#ip add 2.2.2.2 255.255.255.0 ISP(config-if)#no shutdown ISP(config-if)#exit ISP(config)#line vty 0 4 ISP(config-line)#password pwd@123 ISP(config-line)#login ISP(config-line)#exit ISP(config)#enable password pwd@123 4) R4配置以下: R4(config)#int f0/0 R4(config-if)#ip add 192.168.30.254 255.255.255.0 R4(config-if)#no shutdown R4(config-if)#exit R4(config)#int f1/0 R4(config-if)#ip add 192.168.40.254 255.255.255.0 R4(config-if)#no shutdown R4(config-if)#exit R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.30.1 #配置去往ISP的路由 R4(config)#ip dhcp pool LAN #开启DHCP服务 R4(dhcp-config)#network 192.168.40.0 255.255.255.0 #下发网段 R4(dhcp-config)#default-router 192.168.40.254 #下发网关 R4(dhcp-config)#dns-server 202.96.0.10 202.96.0.20 #下发首选DNS和备份DNS R4(config)#access-list 10 permit any R4(config)#ip nat inside source list 10 interface f0/0 overload R4(config)#int f0/0 R4(config-if)#ip nat outside R4(config-if)#int f1/0 R4(config-if)#ip nat inside R4(config-if)#exit
Easy-虚拟专用网路由器配置以下:
Easy(config)#aaa new-model #启用AAA验证 Easy(config)#aaa authentication login authen local group radius#配置AAA验证使用radius验证,名字为authen Easy(config)#aaa authorization network author local group radius #配置AAA受权使用radius受权资源访问,受权的名字是author Easy(config)#username benet password pwd@123 #建立easy虚拟专用网验证的帐户名和密码 #配置IPSec 虚拟专用网阶段一 Easy(config)#crypto isakmp policy 1 #策略序列号为“1” Easy(config-isakmp)#encryption aes #配置加密算法 Easy(config-isakmp)#hash sha #hash命令指定验证过程当中采用的散列算法 Easy(config-isakmp)#group 2 #配置加密共享密钥方式使用dh算法 Easy(config-isakmp)#lifetime 86400 #配置保持时间,默认保持时间为24小时 Easy(config-isakmp)#authentication pre-share #配置共享密钥的方式为“预先共享密钥” Easy(config-isakmp)#exit Easy(config)#crypto ipsec transform-set bj-set esp-aes esp-sha-hmac #配置传输集地址池使用动态map调用传输集 Easy(cfg-crypto-trans)#exit Easy(config)#ip local pool ez虚拟专用网 192.168.10.100 192.168.10.200#建立地址池,地址池的名字为ez虚拟专用网 Easy(config)#crypto dynamic-map dy-map 1#建立动态map,动态map的名字为dy-map Easy(config-crypto-map)#reverse-route #配置反转路由 Easy(config-crypto-map)#set transform-set bj-set #动态map调用传输集 Easy(config-crypto-map)#exit Easy(config)#crypto isakmp client configuration group remote虚拟专用网# 建立用户组,名字为remote虚拟专用网 Easy(config-isakmp-group)#key pwd@123 #设置访问密码 Easy(config-isakmp-group)#pool ez虚拟专用网 #用户组调用地址池 Easy(config-isakmp-group)#dns 2.2.2.2 #给虚拟专用网客户端下发dns Easy(config-isakmp-group)#domain benet.com #给客户端下发域名,名字为benet.com Easy(config-isakmp-group)#exit Easy(config)#crypto map st-map client configuration address respond #建立静态map,名字为st-map Easy(config)#crypto map st-map client authentication list authen #静态map调用验证,验证的名字是authen Easy(config)#crypto map st-map isakmp authorization list author#静态map调用受权,受权的名字是author Easy(config)#crypto map st-map 1 ipsec-isakmp dynamic dy-map #静态map调用动态map Easy(config)#exit Easy(config)#int f1/0 #进入接口 Easy(config-if)#crypto map st-map #应用静态map到接口 Easy(config-if)#exit
至此Easy虚拟专用网就已经配置完成了,接下来客户端安装client软件就能够开始验证咯。
2)客户端配置以下:
将我提供的压缩包解压后安装虚拟专用网的客户端软件。
语言保持默认下一步就OK
继续下一步
选择安装路径,我这里就保持默认,继续下一步
点击next,开始安装
保持默认,结束就能够了
yes,重启电脑
按照图片步骤打开便可
1) 建立ACL抓取要走隧道分离的流量 Easy-***(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 any Easy-***(config)#access-list 100 permit ip 192.168.10.0 0.0.0.255 any 2)应用隧道分离 Easy-***(config)#crypto isakmp client configuration group remote*** Easy-***(config-isakmp-group)#acl 100 Easy-***(config-isakmp-group)#exit
验证隧道分离,同时桥接主机能够访问R1和ISP的loop back 0接口(注意,***链接要断开从新链接一下)我就简单验证一下,大家能够经过ping命令验证。
至此,效果实现,客户端既能够访问公司内网的服务(R1的loop back 0接口),也能够访问Internet的服务。
———— 本文至此结束,感谢阅读 ————