使用GNS组网基于L2TP、IPsec的VPN接入

1、IPsec(IP Security) 

1.1、IPsec概述 

    在实施VPN  时,除了实现隧道功能以外,还要实现数据安全,两者缺一不可;    在隧道方面,之前所讲到的GRE 就是最常用的隧道技术,而在数据安全方面,其实就是要让数据加密传输,至于如何对数据进行加密传输,有一个使用最广泛,且最经典的技术方案,这就是IPsec  (IP Security),IPsec 最突出,也是最主要的功能就是保证VPN 数据的安全传输。 

    IPsec  定义了使用什么样的方法来管理相互之间的认证,以及使用什么样的方法    来保护数据,IPsec  只是定义了一些方法,而IPsec 本身并不是一个协议,就像OSI(Open System Interconnect)参考模型一样,OSI 并不是一个协议,OSI 只是一个框架,一个模型,OSI 里面包含着多个协议,如TCP,UDP,IP,ICMP 等等;IPsec  中同样也包含着为之服务的各种协议去实现IPsec 要完成的各个功能,只有这样,IPsec才能起到作用。 

       IPsec 能够起到的功能有: 

       数据源认证(Data origin authentication) 

       保护数据完整性(Data integrity

保证数据私密性(Data confidentiality) 

防止中间人攻击(Man-in-the-Middle) 

防止数据被重放(Anti-Replay) 

   数据源认证保证数据是从真正的发送者发来的,而不是来自于第三方攻击者。

   保护数据完整性是保证数据不会被攻击者改动。

   保证数据私密性是保证数据不会被攻击者读取。 

   防止中间人攻击是防止数据被中间人截获。 

   防止数据被重放也可以认为是防止数据被读取和改动。 

   为IPsec 服务的总共有三个协议: 

   IKE Internet Key Exchange) 

   ESP  Encapsulating Security Protocol) 

   AH  Authentication Header) 

   虽然总共是三个协议,但分为两类: 

   IKE是个混合协议,其中包含部分Oakley 协议以及内置在ISAKMPInternet Security Association and Key Management Protocol 协议中的部分SKEME 协议,所以IKE 也可写为 ISAKMP/Oakley,它是针对密钥安全的,是用来保证密钥的安全传输、交换以及存储,主要是对密钥进行操作,并不对用户的实际数据进行操作。

ESP  Encapsulating Security Protocol)和AH  Authentication Header)主要工作是如何保护数据安全,也就是如何加密数据,是直接对用户数据进行操作的。因为在实施VPN 时,除了实现隧道功能以外,还要实现数据安全,两者缺一不可;在之前我的提到的隧道技术中,只能实现隧道而不能实现安全,而IPSec  则可以为隧道提供数据保护功能,从而构建一个完整的VPN  体系。IPsec  除了能够为隧道提供数据保护来实现VPN  之外,IPsec 还可以自己单独作为隧道协议来提供隧道的建立,如果IPsec  自己单独作为隧道协议来使用,那么IPsec 就不需要借助任何其它隧道协议就能独立实现VPN  功能;IPsec  到底是只使用数据保护功能再配合其它隧道协议,还是自己独立实现隧道来完成VPN 功能,可以由配置者自己决定。 

       注:

       ★IPSec  目前只支持IPv4 Unicast    IPv4 单播),不支持其它任何协议。 

1.2、IKE  (Internet Key Exchange ) 

    由于公钥加密算法的速度明显慢于私钥加密算法,IPsec  在保护数据时选择了使用私钥加密算法,而使用私钥加密算法的重点就是要保证密钥的安全传递与交换,所以如何保证密钥的安全,成了头等工作;之前我们曾说过使用公钥加密算法来保证私钥算法的密钥安全传递与交换,但是事情并非想象的那么简单,即使使用公钥加密算法来保证密钥的安全交换,仍然存在以下问题:

       例如需要加密交换数据,要窃取他们的数据,过程如下: 

       ★首先要确定双方的加密算法以及要使用的密钥,可想而知,这个密钥绝不能被知道;

    ★当发消息告诉B  自己要使用密钥123,不巧这个消息被截获,就可以冒充同意使用密钥123 交换数据; 

    ★当发消息告诉A自己要使用密钥456,不巧这个消息被截获,就可以冒充A  同意使用密钥456 交换数据; 

    ★在将数据使用密钥123 加密后发给时,在收到后,使用密钥123 将数据解密,截获数据后,然后再将数据使用密钥456 加密后发给B

    ★其实数据早就被截获了,而还以为数据是发来的,以为数据是安全的。从上面,我们可以看出,在A  B  的密钥协商与交换的过程中,他们都以为自己在和对方交流,而面对被监听和冒充,他们无法分辨,所以,在密钥的交换过程中,必须在双方有认证机制,以防止被冒充;并且更多的问题是,即使双方发出的数据附带Hash 值,同样也不能保证数据不被篡改,单纯靠比对数据的Hash 值是否相同,根本无法确定数据是否被篡改过,因为攻击者既然改动过数据,人家当然也知道把Hash 值再改一下,最后接收者将收到的数据计算出Hash 值后,发现Hash值与数据附带的值是相同的,也就无法知道数据是否被篡改过,您觉得呢? 

    由于以上普通的密钥交换方式存在着许多问题与弱点,所以IKE                 Internet  Key Exchange)将努力构架一个完善的方案体系,以保证VPN 之间的密钥与数据的安全。 

  认证(Authentication ) 

    IKE 会在VPN 对等体之间采用认证机制(Authentication ),认证可以有效确保会话是来自于真正的对等体而不是攻击者,因为如果最开始本身就是在和一个攻击者或黑客进行会话和协商,那么后面的所有工作都是白废,所以保证只和合法的对等体会话是非常重要的;IKE 的认证方式有三种: 

    Pre-Shared Keys (PSK) 

    Public Key Infrastructure (PKI) using X.509 Digital Certificates

RSA encrypted nonce 

    其中Pre-Shared Keys (PSK)是最简单的,使用由管理员事先在双方定义好的密码,认证时,只有双方密码匹配之后,后续的工作才能继续;配置时通常可以包含IP 地址,子网以及掩码,也可以指定为任意地址来代替固定地址,适用于IP 地址不固定的环境。

   PKI 是使用第三方证书做认证,叫做Certificate  Authority   (CA),,里面包含名字、序列号,有效期以及其它可以用来确认身份的参数;证书也可以被取消。 

   注:   ★RSA    encrypted  nonce 我们不做介绍,包括在后续配置与示例中,我们只涉及Pre-Shared Keys (PSK) 

   密钥算法(Diffie-Hellman) 

   虽然 IKE   使用了认证来保证会话一定是来自合法的对等体,但是单靠认证也无法保证密钥的安全,因为数据还是有可能被第三者截获,所以IKE 还必须有一套机制来保证密钥的安全,因为只要密钥泄露,就全玩完了。在密钥方面,IKE  使用了称为 Diffie-Hellman  的算法在VPN对等体之间建立安全的密钥用来加密数据, Diffie-Hellman 使用了极为复杂的数学算法,最后将在VPN 对等体之间计算出只有它们自己才知道的密钥,即使他们的会话被第三者监控,也无法推算出密钥,本文不对Diffie-Hellman 的详细计算过程做介绍,因为这也不是本文的最终目的。   Diffie-Hellman 算法目前有 3       种密钥长度可选,所以在配置时,需要定义Diffie-Hellman 的密钥长度,分别有如下选择:

Group 1 

       密钥长度为768 bit,也是默认的密钥长度; 

       Group 2 

       密钥长度为1024 bit; 

       Group 5 

       密钥长度为1536 bit

                                                     

       注:

       ★用于数据加密的密钥的值是靠算法计算出来的,是不能由管理员定义和修改    的。 

SA Security Association) 

    IPsec 的所有会话都是在通道中传输的,包括协商密钥,传递用户数据;这样的通道称为SASecurity Association),SA 并不是隧道,而是一组规则,就好比是需要会话的对等体之间必须遵守的一份合同。SA 中的规则能够保证所有数据的安全传递,因此SA      中包含了之前提到的保证数据和密钥安全时必不可少的认证、加密等安全策略,这些需要用到的技术,都要在SA 中定义。

    因为VPN 之间传输的数据需要加密才能保证安全,并且加密时所用到的密钥要更加安全,所以对待密钥,我们也需要付出巨大的努力。在密钥的安全上,由 IKE负责,而数据的安全,则由IPsec 负责,虽然是这么说,但需要注意,IKE 也是IPsec不可分割的一部分,IKE 不是独立存在的。SA 并不是只有一个,由于密钥安全和数据安全我们是分开对待的,所以SA 有两个,分别是定义了如何保护密钥和如何保护数据,这两个SA 就是: 

   ISAKMP Security Association IKE SA) 

   IPsec Security Association IPsec SA

   每个SA 都有lifetime,过期后SA 便无效,lifetime使用time (second)volume limit  (byte count)来衡量,在建立SA 时就会协商出来,双方会比对,最终取值小的一方;通常是时间先过期,在要过期最后120 秒之前,会自动重建另一条SA,避免活动的SA 到期后无法传输数据,这样就能实现平滑过渡,以丢最少的包。 

   注:IKE SA 等同于ISAKMP SA。 

                          

   IKE SA 

   IKE   SA 要保护的对象是与密钥有关的,IKE 并不直接关心用户数据,并且IKE   SA是为安全协商IPsec SA 服务的。IKE SA lifetime 默认为86,400 seconds,即一天,默认没有volume limit。 

   IPsec SA

用户的数据流量真正是在IPsec   SA 上传递的,而不是在IKE  SAIPsec  SA 直接为用户数据流服务,IPsec SA 中的所有安全策略都是为了用户数据流的安全。每个IPsec 对等体都有一对IPsec SA,一个是去往远程目的地的,而另一个是从远程回来的,也就是一进一出,都存放在本地SA Database中。IPsec SA lifetime 默认为3600 seconds,即小时;默认volume limit 4,608,000Kbytes,即4.608 Gbyte 。因为SA 有两个,分为IKE SA IPsec SA,两个SA 分别定义了如何保护密钥以及如何保护数据,其实这两个SA 都是由IKE 建立起来的,所以将IKE 的整个运行过程 

    分成了两个Phase(阶段),即: 

       IKE Phase One 

       IKE Phase Two 

IKE Phase One : 

    IKE Phase One 的主要工作就是建立IKE SA ISAKMP SA),IKE SA 的服务对象并不是用户数据,而是密钥流量,以及为IPsec SA 服务的;IKE SA 的协商阶段被称为main mode (主模式),IKE 也是需要保护自己的流量安全的(这些流量并非用户流量),所以IKE SA 之间也需要协商出一整套安全策略,否则后续的密钥和IPsec SA 的建立就不能得到安全保证;IKE SA 之间需要协商的套安全策略包括:

       认证方式(Authentication) 

       共总有Pre-Shared Keys (PSK)Public Key Infrastructure (PKI)RSA encrypted nonce,默认为PKI

加密算法(Encryption) 

       总共有DES3DESAES 128AES 192AES 256,默认为DES。 

       Hash 算法(HMAC) 

       总共有SHA-1MD5,默认为SHA-1。 

       密钥算法(Diffie-Hellman) 

       Groups 1 768 bit),Group 2 1024 bit),Group 5 1536 bit),默认为Groups 1768 bit)。                                             

       Lifetime                                     

       随用户定义,默认为86,400 seconds,但没有volume limit 。 

       NAT 穿越(NAT Traversal) 

       默认为开启状态,无须手工配置。(NAT Traversal 将在后面介绍) 

IKE Phase Two: 

    IKE Phase Two 的目的是要建立IPsec SA,由于 IKE SA 的服务对象并不是用户数据,而是密钥流量,以及为IPsec SA 服务的,IKE SA 是为IPsec SA 做准备的,所以如果没有IKE SA,就不会有IPsec SAIPsec SA 是基于IKE SA 来建立的,建立IPsec SA 的过程称为 快速模式(quick mode)。IPsec SA 才是真正为用户数据服务的,用户的所有流量都是在IPsec SA 中传输的,用户流量靠IPsec SA 来保护,IPsec SA 同样也需要协商出一整套安全策略,其中包括:

加密算法(Encryption) 

       总共有DES3DESAES 128AES 192AES 256,默认为DES。 

       Hash 算法(HMAC) 

       总共有SHA-1MD5,默认为SHA-1。 

       Lifetime 

       随用户定义,默认为3600 seconds,即小时;默认volume limit  4,608,000 

    Kbytes,即4.608 Gbyte  

       IPsec Mode 

       共有Tunnel mode Transport mode,默认为Tunnel mode 。 

       从上可以看出,IPsec SA 中没有协商认证方式(Authentication )和密钥算法(Diffie-Hellman),因为 IKE SA 时已经认证过了,所以后面已经不需要再认证;并且密钥是在IKE SA 完成的,所以在IPsec SA 中也就谈不了密钥算法了,但也可以强制再算。 

1.3、IPsec Mode 

    因为在实施VPN 时,除了实现隧道功能以外,还要实现数据安全,两者缺一不可;在之前我的提到的隧道技术中,只能实现隧道而不能实现安全,而IPSec  则可 以为隧道提供数据保护功能,从而构建一个完整的VPN  体系。IPsec  除了能够为隧 道提供数据保护来实现VPN  之外,IPsec 还可以自己单独作为隧道协议来提供隧道 的建立,如果IPsec  自己单独作为隧道协议来使用,那么IPsec 就不需要借助任何其它隧道协议就能独立实现VPN  功能;IPsec  到底是只使用数据保护功能再配合其它 隧道协议,还是自己独立实现隧道来完成VPN 功能,完全由IPsec Mode 来控制。 

   IPsec Mode 分两种: 

   Tunnel mode 

   Transport mode 

   Tunnel mode  (默认模式)

   通过Internet 连接的远程网络之间,当双方需要直接使用对方私有IP 地址来互访时,因为私有IP 网段是不能传递到Internet 上进行路由的,所以目标地址是私有IP  的数据包到达Internet 后是会被丢弃的,要使地址是私有IP  的数据包在Internet上传递,数据包的包头就必须带有公网IP;在之前,我们详细介绍过最常用的隧道协议GRE 的工作原理,其根本功能就是要实现隧道功能,通过隧道连接的两个远程网络就如同直连,因为隧道将数据包原来的私有IP 地址先隐藏起来,在外部封装上公网IP,等数据包通过公网IP 被路由到该IP  的路由器后,再由该路由器剥除数据包外层的公网IP,从而发现数据包的私有IP 后,再通过私有IP 将数据包发到真正的目的地,为此,GRE 需要完成多次封装,总共有次,换句话说,就是在GRE 隧道中传输的数据包都有个包头,GRE 中的IP 数据包是一层套一层,总共有IP地址。 

    IPsec 中的Tunnel mode 就拥有着与GRE 相同的隧道功能,那就是将数据包原来的私有IP 地址先隐藏起来,在外部封装上公网IP,等数据包通过公网IP 被路由到该IP 的路由器后,再由该路由器剥除数据包外层的公网IP,从而发现数据包的私有IP 后,再通过私有IP 将数据包发到真正的目的地,所以,IPsec Tunnel mode 也会对原始数据包封装多个IP 包头, 

    当IPsec 工作在Tunnel mode  时,数据包的封装过程如下: 

1.3.1

    从图1.3.1可以看出,当IPsec 工作在Tunnel mode  时,整个原始数据包都会被加密, 

包括数据部分和包头部分,正因为该封装形式隐藏了原始的IP                                包头,导致了原始IP 包头不可见,那么路由器就无法对该数据包进行路由,所以需要添加一个新的IP 包头来正常路由,通常是加密设备自己的IP 地址被加到新IP 包头中,这个地址也 可在 IOS    中定义;并且我们可以确定这个IP 地址一定是在传输网(通常指公网 Internet)中可以被路由的。至少为什么同时出现个包头,理论同GRE 隧道的原理,因为要实现隧道功能,此部分的理论可以参见之前GRE 隧道部分。IPsec 包头的大小共32 字节,而普通IP 包头大小为20 字节,所以可以看出,原始IP 数据包经过Tunnel 模式的IPsec 封装之后,会多出大约52 字节大小的包头。   当原始数据包被Tunnel 模式的IPsec 封装时,这种封装方式被认为更安全,因为 原始数据包的所有内容,包括数据部分,以及真正的源IP 和目的IP  都被加密了,所以更安全。

Transport mode 

    IPsec 除了作为安全协议来为隧道提供数据保护之外,也可以自己单独作为隧道协议来提供隧道的建立,如果IPsec  自己单独作为隧道协议来使用,那么IPsec 就不 需要借助任何其它隧道协议就能独立实现VPN 功能;这些都是由IPsec Mode 来控制 的,如果IPsec 要自己独立实现隧道来完成VPN 功能,就需要工作在Tunnel modeTunnel  模式的IPsec 不仅实现了隧道功能,也保留了数据安全,实现了完整的VPN 功能。如果IPsec       不需要实现隧道功能,而只需要实现保护数据的安全功能,就只 要工作在Transport mode  即可,因为Transport 模式的IPsec 只有安全功能而没有隧 

道功能,所以还要再配合其它隧道协议,最终实现完整的VPN 功能。

   当IPsec 工作在Transport mode  时,数据包的封装过程如下:

1.3.2

    从图中可以看出,当IPsec 工作在Transport mode 时,IPsec 包头是添加在原始IP 包头与上层协议(如传输层)之间的,所以原始IP 包头在传输过程中还是可见的,同样也容易被分析。因为没有新IP 包头被加入,所以没有多少增加的字节。由于数据包被Transport 模式的IPsec 封装时,原始IP 包头在最外面,路由过程中是根据原始IP 包头来路由的,所以当通过Internet 连接的远程网络之间需要直接使用对方私有IP 地址来互访时,此封装不可行,因为Transport mode 没有实现隧道功能,所以 如果要实现VPN 功能,Transport 模式的IPsec 就应该配合p2p GRE over IPsec 来使用。

(后续将会介绍p2p GRE over IPsec) 

1.4、ESP  (Encapsulating Security Protocol) 

    为IPsec 服务的协议总共有三个:IKEInternet Key Exchange),ESPEncapsulating    Security Protocol)以及AH  Authentication Header ),其中 IKE 是针对密钥安全的,是用来保证密钥的安全传输、交换以及存储,主要是对密钥进行操作,并不对用户的实际数据进行操作,如果要保护用户数据,需要靠ESP                           Encapsulating  Security  Protocol)和(Authentication  Header ),ESP AH 主要工作是如何保护数据安全,也就是如何加密数据,是直接对用户数据进行操作的,IPsec 对用户数据的保护,靠ESP AH  的封装。

    ESP 对用户数据包的封装过程如下:

1.4.1

ESP 包头中使用IP 协议号50 来标识,意为IP 协议号为50 的数据包都被当作ESP 数据包来处理;从上图中也可以看出,即使是封装ESP,也分为两种情况,因为IPsec本身分为两种模式,所以在进行安全封装数据包时,不同的模式,也会有不同的封 装格式。

    从图1.4.1还可以看出,原始数据包经过ESP 封装之后,只是数据被加密了,而原始的IP 包头是没有改变的,虽然是这样,但也会使用其它方式,如HMAC 来保证数据 的安全性,其中包括:

保护数据完整性(Data integrity) 

        防止中间人攻击(Man-in-the-Middle) 

        防止数据被重放(Anti-Replay) 

        同样也提供数据认证(Data authentication) 

1.5、AH   (Authentication Header)

   AH 对用户数据包的封装过程如下:

AH 包头中使用IP 协议号51 来标识,从图中可以发现,原始数据包经过AH 封装 之后,并没有被加密,这是因为AH  封装并不使用常规的方法去加密数据部分,而 是采用隐藏数据的方法,也就是相当于加一个防改写的封条给数据,很显然,这简                    直就是掩耳盗铃,如果数据机密要求高,千万不要单独使用AH 封装。 

   ESP AH 结合 

   在一个IPsec   Security   Association   (SA)中可以同时使用ESP AH,而ESP 拥有和 

AH 相同的认证功能,以及数据保护方法,所以只使用ESP 就是最理想的。

1.6、Transform Set 

    Transform   set 是一组算法集合,通过它来定义使用怎样的算法来封装数据包, 比如之前所说的ESP 封装,AH 封装都需要通过Transform set 来定义,还可以定义其 它一些加密算法以及HMAC 算法;通过定义transform   set,就可以让用户来选择保     护数据的强度,因此transform set 就是定义了数据包是受到怎样的保护。

1.7、Crypto Map

    Crypto map 是思科的IOS 中配置IPsec 的组件,执行两个主要功能:

    选择需要加密处理的数据;

    定义数据加密的策略以及数据发往的对端。

    选择需要加密处理的数据就是定义什么样的流量需要被保护,因为也许用户并     不是需要所有的数据都被保护,所以需要先匹配指定的流量才行;定义数据加密的策略以及数据发往的对端,也就相当于定义数据的目的地,有时,这也表示隧道的终点。

    其实Cryptomap  除了以上两个功能以外,还包含其它一些功能,如定义IPsec    ModeCrypto   map 中的策略是分组存放的,以序号区分,如果一个Crypto   map    有多个策略组,则最低号码的组优先;当配置完Crypto map 后,需要应用到接口上     才能生效,并且一个接口只能应用一个Crypto map。 

    Crypto map 还分为静态mapstatic map)和动态mapdynamic map),如果需     要简单的区分它们,就是数据发往的对端是否固定,如果是动态map,那么对端是     不固定的,在存在隧道的时候,也就表示隧道的终点是不固定的,但源始终是自己。

1.8、隧道分离(Split Tunneling) 

    Split Tunneling 只在远程VPN remote VPN)时才有,因为当远程VPN 用户的VPN隧道建立之后,该用户的所有流量都将被发送到隧道之上,这样一来,原本用户正     常的用户,比如发往Internet 的流量也被发到隧道上,结果就会造成远程VPN 用户与Internet 失去连接;为了让用户需要走VPN 隧道的流量才被发送到隧道上,而其它流量,还是从原来的接口发送而不被IPsec  封装,所以需要将用户的流量分为两类,从而区分对待,这就是隧道分离(Split Tunneling );其实Split Tunneling 和非远程VPN 有某些相同之处,非远程VPN 也有定义感兴趣流量的功能,这个功能就是指定什么样的流量通过VPN 传输,什么样的流量正常传输;在最终的结果是,这两个功能在配置上是一样的。 

2、实验环境搭建

2.1、所需软件

GNS3 0.7.4VMware8.0.0 build-471780

2.2、所需操作系统

Windows2003Windows7ASA V1.4思科防火墙

其中Windows2003当内网服务器、Windows7当客户端。

2.3、建立虚拟机与GNS路由器的连接

首先在虚拟机的"Edit""Virtual Network Editor"下添加所需要的网络接口,添加方法是:点击"Add Network"在弹出的窗口中选择所需的接口,这里本次实验我们需要VMnet2VMnet3VMnet6。分别添加这三个接口。

2.1

其次将VMnet2VMnet3VMnet6DHCP功能关闭,方法如图2.2

2.2

点击确认后,添加虚拟本地连接就成功了,在网络连接里就可以看到刚才添加的接口了。

2.3

2.4、配置GNS,与虚拟机连接。

由于GNS软件原因,刚添加的接口不能被GNS识别,一定要先重启下。重启完毕后,GNS就能识别新添加的虚拟本地连接了。GNS中有个叫Cloud的图标,这个就是用来连接本地网络接口的图标。(在下面实验拓扑中,小电脑其功能就是Cloud,只是图标不一样而已。)

2.5、为Cloud添加本地网络接口

2.4

添加完成后可以看到在Cloud上有个接口

2.5

3、L2TP over IPsec on ASA 实验步骤

实验逻辑拓扑图:

3.1

GNS模拟拓扑图:

3.2

说明:我们下面需要以上图的环境来演示L2TP VPN 的效果,其中远程的PC 机需 要直接使用私有地址来访问公司总部 10.1.1.0/24和 4.4.4.4/32 ,而 R2则相当于 Internet 路由器,R2 只负责让ASA R3 能够通信,R2 不会配置任何路由,R2 不允许拥有公司总部的10.1.1.0/24 4.4.4.4/32  以及PC 所在的30.1.1.0/24ASA 为公司总部的L2TP VPNServerPC 需要先和ASA  的公网出口能够通信,然后通过与ASA 建 立L2TP    VPN,最终通过VPN 隧道来穿越没有路由的R2,实现在私网与私网之间穿 越公网的通信;因为PC 要先和ASA  的公网接口能够通信,所以R3 需要对PC 所在 的网段30.1.1.0/24 进行NAT 转换,因为R3 ASA  的公网是通的。

实验步骤及要求:

1、配置基础网络环境

1)配置ASA: 

   ciscoasa(config)# int e0/0 

   ciscoasa(config-if)# ip add 12.1.1.1 255.255.255.0 

   ciscoasa(config-if)# nameif outside 

   INFO: Security level for "outside" set to 0 by default. 

   ciscoasa(config-if)# no shutdown 

   ciscoasa(config-if)# exit 

   ciscoasa(config)# int e0/1 

   ciscoasa(config-if)# ip add 10.1.1.1 255.255.255.0 

   ciscoasa(config-if)# nameif inside 

   INFO: Security level for "inside" set to 100 by default. 

   ciscoasa(config-if)# no shutdown 

   ciscoasa(config-if)# exit 

   ciscoasa(config)# route inside 4.4.4.4 255.255.255.255 10.1.1.4 

   ciscoasa(config)# route outside 0 0 12.1.1.2 

   ciscoasa(config)# 

    说明:配置ASA  的接口地址,并写指向R4 Loopback 地址4.4.4.4 的路由,同时写默认路由指向Internet(路由器R2),地址12.1.1.2

2)配置R2: 

    r2(config)#int f0/0 

    r2(config-if)#ip add 12.1.1.2 255.255.255.0 

    r2(config-if)#no sh 

    r2(config-if)#exit 

    r2(config)#int f0/1 

    r2(config-if)#ip add 23.1.1.2 255.255.255.0

    r2(config-if)#no sh 

    r2(config-if)#exit 

    r2(config)#int loopback 0 

    r2(config-if)#ip add 2.2.2.2 255.255.255.0 

    r2(config-if)#exit 

    r2(config)# 

    r2(config)#line vty 0 15 

    r2(config-line)#no login 

    r2(config-line)#exit 

说明:配置R2 的接口地址,并配置Loopback 地址2.2.2.2/32,最后打开VTY线路供Telnet ;因为R2 模拟InternetR2 只需要有公网路由12.1.1.0 23.1.1.0 即可,所以R2 不需要写任何路由,也不允许写任何路由。

3)配置R3: 

    r3(config)#int f0/0 

    r3(config-if)#ip add 30.1.1.3 255.255.255.0 

    r3(config-if)#no sh 

    r3(config-if)#exit

r3(config)#int f0/1 

r3(config-if)#ip add 23.1.1.3 255.255.255.0 

r3(config-if)#no sh 

r3(config-if)#exit 

r3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2 

r3(config)#service dhcp 

r3(config)#ip dhcp pool net30 

r3(dhcp-config)#network 30.1.1.0 255.255.255.0 

r3(dhcp-config)#default-router 30.1.1.3 

r3(dhcp-config)#dns-server 202.96.209.133 

r3(dhcp-config)#exit 

r3(config)#ip dhcp excluded-address 30.1.1.3 

r3(config)# 

r3(config)#int f0/0 

r3(config-if)#ip nat inside 

r3(config-if)#exit

r3(config)#int f0/1 

    r3(config-if)#ip nat outside 

    r3(config-if)#exit 

    r3(config)# 

    r3(config)#access-list 3 permit any 

    r3(config)#ip nat inside source list 3 interface f0/1 overload 

    r3(config)# 

说明:配置R3 的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2;并且在R3 上开启DHCP,让PC动态获得IP地址;同时R3PC所在的网段全部NAT转换成外网接口地址23.1.1.3 出去。如果添加路由器的话可以直接配静态路由即可。

4)配置R4: 

    r4(config)#int f0/1 

    r4(config-if)#ip add 10.1.1.4 255.255.255.0 

    r4(config-if)#no sh 

    r4(config-if)#exit 

    r4(config)#int loopback 0

r4(config-if)#ip address 4.4.4.4 255.255.255.0 

    r4(config-if)#exit 

    r4(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1 

    r4(config)# 

    r4(config)#line vty 0 15 

    r4(config-line)#no login 

    r4(config-line)#exit

说明:配置R4 的接口地址,并写默认路由指向公司总部出口ASA 防火墙。同时配置Loopback 地址4.4.4.4/32,最后打开VTY 线路供Telnet 

2测试基础网络环境

(1)查看PC 机的地址情况:

3.3

说明PC 机通过R3 DHCP 正常获得了地址30.1.1.1,并且网关指向R3 内网接口30.1.1.3

(2)测试R3 ASA 的连通性:

r3#ping 12.1.1.1 

3.4

说明:因为R3 ASA 都有默认路由指向Internet(路由器R2),而 R2 R3 和 ASA 都是可达的,所以R3 ASA 通信正常。

3)测试R3 R2 Loopback 连通性: 

   r3#ping 2.2.2.2 

3.5

   说明:因为R3 有默认路由指向Internet (路由器R2),所以 R3 R2 Loopback 通信正常。

(3)测试R3 到公司总部的10.1.1.0/24 4.4.4.4/32 的连通性:

   r3#ping 10.1.1.4       

                 

3.6

   r3#ping 4.4.4.4 

3.7

   说明:虽然R3 有默认路由指向Internet 路由器R2,但R2 只有路由12.1.1.0 和23.1.1.0,只能保证R3ASA的通信,所以R3  无法访问公司总部的私有网段 10.1.1.0/24 4.4.4.4/32 ,U表示unreachable

    (5)查看R2 的路由表:

   r2#sh ip route

3.8

   说明:因为R2 模拟Internet 路由器,所以R2 没有写任何路由,R2  的责任就只 

是保证ASA R3 能够通信即可。

(6)测试PC ASA  以及到R2 Loopback 的连通性:

3.9

说明:因为PC 的默认网关指向路由器R3,并且R3 已经配置NAT PC 所在的网段全部转换成外网接口地址23.1.1.3 出去,所以PC ASA R2 Loopback 通信正常。 

    (7)测试PC 到公司总部的10.1.1.0/24 4.4.4.4/32 的连通性:

3.10

说明:因为连R3 都与公司总部的10.1.1.0/24 4.4.4.4/32 不能通信,所以PC更 不能。

   3.在公司总部ASA 防火墙上配置L2TP over IPsec on ASA 

    (1)配置IKEISAKMP)策略

   ciscoasa(config)# crypto isakmp policy 10 

   ciscoasa(config-isakmp-policy)# authentication pre-share 

   ciscoasa(config-isakmp-policy)# encryption 3des 

   ciscoasa(config-isakmp-policy)# hash sha 

   ciscoasa(config-isakmp-policy)# group 2 

   ciscoasa(config-isakmp-policy)# exit 

   ciscoasa(config)# crypto isakmp nat-traversal 10 

   ciscoasa(config)# crypto isakmp ipsec-over-tcp port 10000 

   说明:定义了ISAKMP  policy  10,加密方式为3deshash 算法为sha,认证方式 为Pre-Shared Keys (PSK),密钥算法(Diffie-Hellman)为group 2

                                                         

    (2)定义crypto map IPsec transform: 

   ciscoasa(config)# crypto ipsec transform-set myset esp-3des esp-sha-hmac 

   ciscoasa(config)# crypto ipsec transform-set myset mode transport 

   ciscoasa(config)# crypto dynamic-map dymap 10 set transform-set myset 

   ciscoasa(config)# crypto map l2tpvpn 10 ipsec-isakmp dynamic dymap 

   ciscoasa(config)# crypto map l2tpvpn interface outside 

   ciscoasa(config)# crypto isakmp enable outside 

   说明:将crypto map IPsec transform 关联起来,并应用于接口。 

    (3)定义EzVPN Client 连接上来后自动分配的地址池: 

   ciscoasa(config)# ip local pool ccie 10.1.1.100-10.1.1.200 mask 255.255.255.0 

   说明:地址池范围为10.1.1.100-10.1.1.200。 

    (4)配置用户组策略: 

   ciscoasa(config)# group-policy DefaultRAGroup internal 

   ciscoasa(config)# group-policy DefaultRAGroup attributes 

   ciscoasa(config-group-policy)# vpn-tunnel-protocol IPSec l2tp-ipsec 

   ciscoasa(config-group-policy)# dns-server value 202.96.209.133 

   ciscoasa(config-group-policy)# default-domain value cisco.com 

   ciscoasa(config-group-policy)# address-pools value ccie

   ciscoasa(config-group-policy)# exit

   说明:组名建议使用名字为DefaultRAGroup,不要使用其它名字,定义了地址池, 

以及其它一些参数,这里的vpn-tunnel-protocol 必须是IPSec l2tp-ipsec。 

    (5)配置用户隧道信息:

   ciscoasa(config)# tunnel-group DefaultRAGroup general-attributes 

   ciscoasa(config-tunnel-general)# default-group-policy DefaultRAGroup 

   ciscoasa(config-tunnel-general)# exit 

   ciscoasa(config)# tunnel-group DefaultRAGroup ipsec-attributes 

   ciscoasa(config-tunnel-ipsec)# pre-shared-key chinaccie 

   ciscoasa(config-tunnel-ipsec)# exit 

   说明:隧道名建议使用名字为DefaultRAGroup,不要使用其它名字,并定义了认 证时使用的PSK 密钥。 

    (6)定义了认证信息: 

ciscoasa(config)# tunnel-group DefaultRAGroup ppp-attributes 

ciscoasa(config-ppp)# authentication ms-chap-v2 

ciscoasa(config-ppp)# exit 

 (7)创建用户名和密码: 

ciscoasa(config)# username chinaccie password chinaccie 

ciscoasa(config)# username chinaccie password chinaccie mschap 

说明:创建时,必须使用这种格式。

           (8)如果出现外网连接VPN后只能与防火墙10.1.1.1通信,而不能与10.1.1.4通信,则需要定义一个访问控制列表。

ciscoasa(config)# access-list any extended permit ip any any 

ciscoasa(config)# access-group any in interface outside

ciscoasa(config)# access-group any out interface outside

ciscoasa(config)# access-group any in interface inside

ciscoasa(config)# access-group any out interface inside

说明:定义一个访问控制列表any允许任何流量通过,套用在outsideinsidein/out口上。

4.测试L2TP over IPsec

 (1)在PC 上建立VPN 拨号连接: 

使用在之前的实验中已经创建好的VPN 连接,用户名和密码正确输入:

然后点击属性,并修改相关设置,如图3.11:

 

3.11

点击安全”,如图3.12: 

选择VPN类型“使用IPsec的第2层隧道协议(L2TP/IPSec)”

点击高级设置,输入用来为Ipsec 认证的PSK 密钥。 

3.12

当连接成功之后,会出现连接成功的图标和提示信息:

说明:本人用win7当客户端在注册表里HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PolicyAgent\Parameters添加一个dword名称为AssumeUDPEncapsulationContextOnSendRule值为2,然后重启。但都没有直接关系,还是请注意自己的实际情况。 

   可以点击连接图标,查看具体的详细信息: 


3.13

   说明:从图中可以看出,从L2TP VPN Server 那里自动分配到的地址是10.1.1.100

    (2)查看PC 的路由表情况: 

3.14

       (3)再次测试PC 到公司总部的10.1.1.0/24 4.4.4.4/32 的连通性:

3.15

说明:因为之前已经在PC  上设置过隧道分离,所以现在默认网关是正常接口30.1.1.3 而不是VPN 接口,所以所有未知目标的流量,如Internet  的流量都从正常 接口发出,但只有与VPN 接口地址段10.0.0.0/8 同网段的才从L2TP VPN 中发出,对 于4.4.4.4/32,不可能通。 

    (4)再次测试PC R2 Loopback 连通性: 

3.16

   :因为已经配置了隧道分离,所以PC Internet 路由器R22.2.2.2)是通的。

    (5)查看ASA 上的IKE SA        ISAKMP SA): 

     ciscoasa# show crypto isakmp sa 

     Active SA: 1 

      Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey) 

     Total IKE SA: 1 

      1  IKE Peer: 23.1.1.3 

      Type  : user      Role  : responder 

   Rekey   : no        State   : MM_ACTIVE 

ciscoasa# 

说明:因为L2TP over IPsec 使用了IPsec,所以能看见IKE SA 信息。 

 (6)查看ASA 上的IPsec SA: 

ciscoasa# show crypto ipsec sa 

interface: outside 

   Crypto map tag: dyn, seq num: 10, local addr: 12.1.1.1 

    local ident (addr/mask/prot/port): (12.1.1.1/255.255.255.255/17/1701) 

    remote ident (addr/mask/prot/port): (23.1.1.3/255.255.255.255/17/0) 

    current_peer: 23.1.1.3, username: chinaccie 

    dynamic allocated peer ip: 10.1.1.100 

    #pkts encaps: 34, #pkts encrypt: 34, #pkts digest: 34 

    #pkts decaps: 89, #pkts decrypt: 89, #pkts verify: 89 

    #pkts compressed: 0, #pkts decompressed: 0 

    #pkts not compressed: 34, #pkts comp failed: 0, #pkts decomp failed: 0 

    #post-frag successes: 0, #post-frag failures: 0, #fragments created: 0 

    #PMTUs sent: 0, #PMTUs rcvd: 0, #decapsulated frgs needing reassembly:

    #send errors: 0, #recv errors: 0 

 local crypto endpt.: 12.1.1.1/4500, remote crypto endpt.: 23.1.1.3/4500 

 path mtu 1500, ipsec overhead 66, media mtu 1500 

 current outbound spi: 809FDDFC 

inbound esp sas: 

 spi: 0x45232D65 (1159933285)

   transform: esp-3des esp-md5-hmac none

   in use settings ={RA, Transport,   NAT-T-Encaps, } 

   slot: 0, conn_id: 4096, crypto-map: dyn0 

   sa timing: remaining key lifetime (kB/sec): (207510/3558) 

   IV size: 8 bytes

   replay detection support: Y 

outbound esp sas: 

 spi: 0x809FDDFC (2157960700) 

   transform: esp-3des esp-md5-hmac none 

   in use settings ={RA, Transport,   NAT-T-Encaps, } 

   slot: 0, conn_id: 4096, crypto-map: dyn 

   sa timing: remaining key lifetime (kB/sec): (207517/3558) 

   IV size: 8 bytes 

   replay detection support: Y 

ciscoasa# 

说明:IPsec SA 中显示了相应流量会被加密。 

5.测试L2TP over IPsec NAT L2TP VPN 的影响 

 (1)在ASA 上配置NAT

ciscoasa(config)# global (outside) 1 interface

INFO: outside interface address added to PAT pool . 

ciscoasa(config)# nat (inside) 1 0.0.0.0 0.0.0.0 

说明:在ASA 上配置NAT 将所有内网的流量都转换为外网接口地址12.1.1.1 出去。 

 (2)再次测试PC 到公司总部的10.1.1.0/24 的连通性:

 

3.17

说明:在L2TP over IPsec Server 上,NAT L2TP VPN 的影响和其它VPN 一样,所 以在L2TP over IPsec Server 上配置了NAT 后,需要L2TP VPN 传递的流量就全不通了。 

    (3)将相应流量从NAT 中移除: 

   ciscoasa(config)# access-list nonat extended permit ip 10.1.1.0 255.255.255.0 any 

   ciscoasa(config)# nat (inside) 0 access-list nonat 

说明:将源为10.1.1.0/24 的流量从NAT 中移除。 

    (4)再次测试PC 到公司总部的10.1.1.0/24 的连通性: 

说明:因为源为10.1.1.0/24 的流量已经从NAT 中移除,所以PC 10.1.1.0/24 的 流量正常。

4、答辩问题

1、为拓扑添加路由器。见P15

2、为VPN添加一个用户,包括用户名和密码。见P20

5、参考资料

参考书目:

[1] 鸿鹄论坛,VPN完整版

[2]Cisco − Auth−proxy Authentication Inbound with IPSec and VPN Client Configuration with NAT and CBAC


猜你喜欢

转载自blog.csdn.net/mrz001/article/details/7667707