Cisco经典文档

当前位置: 首页Cisco经典文档VPN完整版


VPN完整版

 

 

                                                       文档下载:

  目录

简述
隧道技术(Tunnel)
GRE(Generic Routing Encapsulation)
   概述
   配置GRE
   GRE keepalive
   配置GRE keepalive
加密技术
   加密算法
   HMAC(Hashed Message Authentication Code)
IPsec(IP Security)
   概述
   
IKE(Internet Key Exchange
      
SA(Security Association)
      IKE Phase One
      IKE Phase Two
   IPsec Mode
   ESP(Encapsulating Security Protocol)
   AH(Authentication Header)
   Transform Set
   Crypto Map
   隧道分离(Split Tunneling)
IPsec LAN-to-LAN VPN(LAN-to-LAN VPN)
   概述
   Router-to-Router LAN-to-LAN VPN
   Router-to-PIX LAN-to-LAN VPN
   Router-to-ASA LAN-to-LAN VPN
IPsec Dynamic LAN-to-LAN VPN(DyVPN)
   概述
   Router-to-Router Dynamic LAN-to-LAN VPN
   Router-to-PIX Dynamic LAN-to-LAN VPN
   Router-to-ASA Dynamic LAN-to-LAN VPN
Point-to-Point (p2p) GRE over IPsec
   概述
   Static p2p GRE over IPsec
   Dynamic p2p GRE over IPsec
Dynamic Multipoint VPN(DMVPN)
   概述
   
multipoint GRE (mGRE)
   Next Hop Resolution Protocol (NHRP)
   配置DMVPN
IPsec VPN Feature
   IPsec Dead Peer Detection(IPsec DPD)
   IPsec SA Idle Timer
   IPsec Preferred Peer
   Reverse route injection (RRI)
   IPsec VPN High Availability
   Stateful Failover for IPsec
   NAT Traversal(NAT-T)
Easy VPN(EzVPN)
   概述
   EzVPN over Router
   EzVPN over PIX
   EzVPN over ASA
SSL VPN(WebVPN)
   概述
   SSL VPN over Router
   SSL VPN over ASA
PPTP VPN
   概述
   PPTP VPN over Router
   PPTP VPN over PIX
L2TP VPN
   概述
   L2TP VPN over Router
   L2TP over IPsec on PIX
   L2TP over IPsec on ASA
 

 

 

友情提示:

本文旨在努力使用最简单明了的语言与实验向您解述当前最常用的几乎所有类型的VPN,通读本

文,您将熟练掌握几乎所有类型VPN的理论与配置。

本文旨在成为您学习VPN的最佳教材、最佳笔记、最佳实验手册。

 

 


简述

当不同的远程网络通过Internet连接时,比如上海和北京的两个分公司通过Internet连接时,网络之间的互访将会出现一些局限性,如下拓朴所示:

在上图中,由于上海和北京的两个分公司内部网络分别使用了私有IP网段10.1.1.0和192.168.1.0,而私有IP网段是不能传递到Internet上进行路由的,所以两个分公司无法直接通过私网地址10.1.1.0和192.168.1.0互访,如R2无法直接通过访问私网地址192.168.1.4来访问R4。在正常情况下,上图中两个分公司要互访,可以在连接Internet的边界路由器上配置NAT来将私网地址转换为公网地址,从而实现两个私有网络的互访。

但是在某些特殊需求下,两个分公司需要直接通过对方私有地址来访问对方网络,而不希望通过NAT映射后的地址来访问,比如银行的业务系统,某银行在全国都有分行,而所有的分行都需要访问总行的业务主机系统,但这些业务主机地址并不希望被NAT转换成公网地址,因为银行的主机不可能愿意暴露在公网之中,所以分行都需要直接通过私网地址访问总行业务主机;在此类需求的网络环境中,我们就必须要解决跨越Internet的网络与网络之间直接通过私有地址互访的问题。

 

    请再看如下拓朴的网络环境:

 

在上图的网络环境中,上海与北京两个分公司网络通过路由器直接互连,虽然两个公司的网络都是私有网段,但是两个网络是直连的,比如上海分公司的数据从本地路由器发出后,数据包直接就丢到了北京分公司的路由器,中间并没有经过任何第三方网络和设备,所以两个分公司直接通过对方私有地址互访没有任何问题。

由上图环境可知,只要两个网络直接互连而不经过任何第三方网络,那么互连的网络之间可以通过真实地址互访,而无论其真实地址是公网还是私网。例如上海与北京这样的远距离网络要直连从而实现直接通过私有地址互访,要在公司之间自行铺设网络电缆或光纤是完全不可能的,可以选择的替代方法就是向ISP申请租用线路,这样的租用线路称为专线,专线是ISP直接将两个公司连接起来的线路,完全是公司与公司的路由器直连,用户不会感觉到Internet的存在,所以通过租用ISP专线连接的网络之间可以直接通过对方私有地址进行互访。至于ISP的专线是如何实现的,您不必担忧,通常是使用二层技术实现的,但是专线的租用价格是相当昂贵的,有时是根据距离和带宽收费的,所以在某些时候,在公司之间通过租用ISP专线连接的成本可能无法承受,因此,人们尝试着使用网络技术让跨越Internet的网络模拟出专线连接的效果,这种技术,就是隧道技术(Tunnel),也是当前很常见的VPN(Virtual Private Network)技术,本文将全力解述VPN技术,需要强烈说明,如果不能实现隧道功能的VPN,不能称为VPN。

 

                                                                    返回目录

隧道技术(Tunnel

 由于在某些环境下,通过Internet连接的远程网络之间,双方需要直接使用对方私有IP地址来互访,而私有IP网段是不能传递到Internet上进行路由的,在数据包封装为私有IP发到Internet之后,由于Internet的路由器没有私有IP网段,所以最终数据包将全部被丢弃而不能到达真正目的地。如下图:

 

 

  上图中,上海分公司要访问北京分公司的R4,如果通过将数据包目的IP封装为192.168.1.4,该数据包到达Internet后是会被丢弃的,因为Internet没有192.168.1.0的路由,所以数据包也就不可能到达北京分公司的路由器;从图中我们不难发现,除非数据包的目的IP为200.1.1.1,才能到达北京分公司的路由器,否则别无它法,所以上海公司发出去的数据包的目标IP只有封装为200.1.1.1才能到达北京分公司的路由器R3,既然如此,我们就思考着想办法将数据包原来的私有IP地址先隐藏起来,在外部封装上公网IP,等数据包通过公网IP被路由到该IP的路由器后,再由该路由器剥除数据包外层的公网IP,从而发现数据包的私有IP后,再通过私有IP将数据包发到真正的目的地。可以肯定,完成数据包封装与解封装的路由器必须既能与Internet直接通信,也能与私有网络通信。在上图中,上海分公司的R2要想直接通过私有IP地址192.168.1.4与北京分公司的R4通信,在数据包的目标IP封装为192.168.1.4发到路由器R1之后,R1就必须将整个数据包当成数据,然后在该数据包的外层再次将北京分公司路由器R3的公网IP地址200.1.1.1写上,然后发到Internet,Internet根据数据包的公网IP地址200.1.1.1将数据包路由到R3,然后R3将数据包的公网IP剥除后,看见私有IP地址192.168.1.4,然后再根据该地址将数据包发到R4,最终实现了上海分公司通过私有IP地址192.168.1.4访问北京分公司网络的功能。

  上个例子中,通过在目标IP为私有IP的数据包外面封装公网IP,从而实现远程网络之间使用私有IP通信的技术,称为隧道技术,由此可见,在隧道中传递的数据包至少包含着两个IP包头(两个IP地址),最外面的IP地址肯定是公网IP,以用作在Internet中路由该数据包,里面的IP应该是私有IP,就是目标主机的真实IP。通过隧道连接的两个远程网络就如同直连,隧道达到的效果,就是网络直连的效果。隧道就像一辆汽车,原本为私有IP的数据包就像是乘客,路途中只看汽车不看乘客,只要汽车能去哪个地方,汽车里的乘客就可以被送到哪个地方,在行驶过程中,车内的乘客不受干扰。被隧道再次封装公网IP的数据包协议称为乘客协议Passenger protocol),不是所有类型协议的数据包能被隧道封装,所以对于隧道来说,乘客协议(Passenger protocol)是有范围限制的,但本文只谈IP协议。隧道中传输的数据包格式如下图:

 

  就隧道技术有多种实现方式,也就存在多种隧道协议,隧道可以实现远程网络之间通过私有IP地址互访,隧道技术,就是VPN技术,要实现VPN,就是实现隧道,不能实现隧道,就不叫VPN。下文将全力解述最有用的隧道技术与VPN技术。

 

隧道协议目前共有:

 

GRE(Generic Routing Encapsulation)

IP Security (IPsec)

Secure Sockets Layer/Transport Layer Security (SSL/TLS)

VPN (WebVPN)

Point-to-Point Tunneling Protocol (PPTP)

Layer Two Tunneling Protocol (L2TP)

 

 

                                                                    返回目录

GRE(Generic Routing Encapsulation)

概述

  GRE是一种最传统的隧道协议,其根本功能就是要实现隧道功能,通过隧道连接的两个远程网络就如同直连,GRE在两个远程网络之间模拟出直连链路,从而使网络间达到直连的效果,为此,GRE需要完成多次封装,总共有3次,换句话说,就是在GRE隧道中传输的数据包都有3个包头,因为我们只谈IP协议,所以GRE中的IP数据包是一层套一层,总共有3个IP地址。GRE在实现隧道时,需要创建虚拟直连链路,GRE实现的虚拟直连链路可以认为是隧道,隧道是模拟链路,所以隧道两端也有IP地址,但隧道需要在公网中找到起点和终点,所以隧道的源和终点分别都以公网IP地址结尾,该链路是通过GRE协议来完成的,隧道传递数据包的过程分为3步:

1.接收原始IP数据包当作乘客协议,原始IP数据包包头的IP地址为私有IP地址。

2.将原始IP数据包封装进GRE协议,GRE协议称为封装协议(Encapsulation Protocol),封装的包头IP地址为虚拟直连链路两端的IP地址。

3.将整个GRE数据包当作数据,在外层封装公网IP包头,也就是隧道的起源和终点,从而路由到隧道终点。

 

GRE隧道中传输的数据包格式如下:

 

 

 

 

注:

其中公网IP包头部分也称为传输协议(Transport Protocol)

GRE会在原始IP数据包之外,额外多封装24字节或28字节,具体视GRE模式而定。

 

以下图为例,解释GRE传输数据过程:

 

GRE要在远程路由器之间创建虚拟直连链路,也就是隧道(Tunnel),如果没有该隧道,GRE不能完成隧道功能,隧道是GRE最基本的功能,也是GRE所有功能;上图环境中,当上海分公司R2将数据包IP地址封装为192.168.1.4发往北京分公司的R4时,GRE操作过程如下:

 

1.假设R1与R3的GRE虚拟直连链路(隧道)已经建立,隧道链路两端的地址分别为1.1.1.1和2.2.2.2,隧道两端的起源和终点分别为100.1.1.1和200.1.1.1。

2.R1收到目标IP为192.168.1.4的数据包后,将原始数据包当作乘客数据包封装进GRE协议中,并且添加GRE包头,包头中源IP为隧道本端地址1.1.1.1,包头中目标IP为隧道对端地址1.1.1.2,从而完成GRE数据包的封装。

3.在封装了GRE隧道地址的数据包外面封装GRE隧道起源IP地址,该IP地址为公网地址,即源IP为100.1.1.1,目标IP为隧道终点200.1.1.1,最后将数据包发出去。

 

封装后的数据包如下:

 

数据包被发到Internet之后,所有路由器只根据数据包最外面的公网IP进行转发,也就是只根据公网目标IP地址200.1.1.1来转发,直到数据包到达公网IP的真正目的地后,即到达R3(IP:200.1.1.1)之后,公网IP包头才会被剥开,当R3剥开数据包的公网IP包头后,发现GRE包头,发现目标IP为1.1.1.2,从而得知自己就是GRE隧道的终点,所以继续将GRE包头剥开,最后发现目标IP地址为192.168.1.4,然后将数据包发往192.168.1.4(路由器R4)。

 

通过以上GRE过程,上海分公司R2直接通过私有IP地址192.168.1.4,最终成功与北京分公司R4通信。

 

                                                                   返回目录

配置GRE

 

在远程路由器之间配置GRE,总共分为三步:

1.创建虚拟链路(隧道)接口,号码任意,两端可不相同。

2.配置虚拟链路(隧道)接口地址,该地址是在GRE包头中被封装的地址。

3.定义虚拟链路(隧道)的源和目的,因为数据包最终要在公网中传递,所以该地址就是在公网中指导路由器转发数据包的可路由公网IP,也是建立隧道两端路由器的真实公网IP。

 

 

注:

GRE Tunnel只支持路由器,不支持集中器和PIX以及ASA。

GRE支持的协议有IP ,Decnet,IPX,Appletalk。

GRE可分为point-to-point GRE和multipoint GRE(mGRE)两种。

point-to-point GRE只能在两台路由器之间建立。

multipoint GRE(mGRE)也可以在两台以上的路由器之间建立。

point-to-point GRE支持IP单播,组播,以及IGP动态路由协议和非IP协议。

multipoint GRE(mGRE)只支持单播,组播以及动态IGP路由协议,不支持非IP协议。

 

 

本小节只讨论point-to-point GRE,而multipoint GRE(mGRE)将在后续内容中讨论。

 

GRE隧道接口没有OSI一层协议做检测,只要本端源地址有效,并且隧道终点地址有路由可达,那么GRE隧道接口就会up,而无论隧道对端是否已经配置隧道接口;如果GRE隧道的接口状态要down,只要达到如下3个情况中任意一个即可:

1.没有去往隧道终点地址的路由。

2.去往隧道终点地址的路由指向了隧道接口自己。

3.隧道起源地址的接口状态为down。

 

 

 

以下图为例,配置GRE

 

说明:图中Internet使用路由器R5来模拟。

 

1.配置基础网络环境

(1)配置R1:

r1(config)#int f0/0     

r1(config-if)#ip address 10.1.1.1 255.255.255.0

r1(config-if)#no sh

 

r1(config)#int F0/1

r1(config-if)#ip add 100.1.1.1 255.255.255.0

r1(config-if)#no sh

 

r1(config)#ip route 0.0.0.0 0.0.0.0 100.1.1.5

说明:配置R1的接口地址,并写默认路由指向Internet(路由器R5),地址100.1.1.5。

 

(2)配置R2:

r2(config)#int f0/0

r2(config-if)#ip add 10.1.1.2 255.255.255.0

r2(config-if)#no sh

 

r2(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

说明:配置R2的接口地址,并写默认路由指向R1。

 

(3)配置R3:

r3(config)#int f0/0

r3(config-if)#ip add 200.1.1.1 255.255.255.0

r3(config-if)#no sh

 

r3(config)#int f0/1

r3(config-if)#ip address 192.168.1.3 255.255.255.0

r3(config-if)#no sh

 

r3(config)#ip route 0.0.0.0 0.0.0.0 200.1.1.5

说明:配置R3的接口地址,并写默认路由指向Internet(路由器R5),地址200.1.1.5。

 

 

(4)配置R4:

r4(config)#int f0/1

r4(config-if)#ip add 192.168.1.4 255.255.255.0

r4(config-if)#no sh

 

r4(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.3

说明:配置R4的接口地址,并写默认路由指向R3。

 

(5)配置R5:

r5(config)#int f0/1

r5(config-if)#ip add 100.1.1.5 255.255.255.0

r5(config-if)#no sh

 

r5(config)#int f0/0

r5(config-if)#ip add 200.1.1.5 255.255.255.0

r5(config-if)#no sh

 

说明:配置R5的接口地址,因为R5模拟Internet,R5只需要有公网路由100.1.1.0和200.1.1.0即可,所以R5不需要写任何路由,也不允许写任何路由。

                                                        

 

2.测试基础网络环境

(1)查看R5的路由表:

r5#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B – BGP

      D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static

 

route

       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

 

     100.0.0.0/24 is subnetted, 1 subnets

C       100.1.1.0 is directly connected, FastEthernet0/1

C    200.1.1.0/24 is directly connected, FastEthernet0/0

r5#

说明:因为R5为Internet路由器,所以R5只有公网路由,没有用户的私网路由,也不应该有用户的私网路由。

 

(2)测试上海分公司路由器R1到北京分公司路由器R3的连通性:

r1#ping 200.1.1.1

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 44/106/288 ms

r1#

说明:因为双方路由器都接入Internet,所以使用公网地址100.1.1.1和200.1.1.1是可以正常通信的。

 

(3)测试上海分公司R2直接使用私有地址192.168.1.4到北京分公司R4的连通性:

r2#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r2#

说明:因为Internet中的路由器只有公网路由,没有用户的私有网段,所以上海分公司R2直接使用私有地址192.168.1.4与北京分公司R4无法通信。

 

(4)跟踪上海分公司R2到北京分公司的路径信息:

r2#traceroute 192.168.1.4

 

Type escape sequence to abort.

Tracing the route to 192.168.1.4

 

  1 10.1.1.1 104 msec 100 msec 80 msec

  2  *  *  *

  3  *  *  *

  4

r2#

说明:从结果中可以看出,由于Internet没有用户的私有网段,所以数据包出了公司路由器后,到达Internet就被丢弃了。

 

3.在上海分公司与北京分公司之间配置GRE隧道

(1)在上海分公司路由器R1上配置连接到北京分公司路由器R3的GRE隧道:

r1(config)#interface tunnel 1

r1(config-if)#ip address 1.1.1.1 255.255.255.0

r1(config-if)#tunnel source 100.1.1.1

r1(config-if)#tunnel destination 200.1.1.1

r1(config-if)#exit

说明:在R1上创建GRE虚拟链路(隧道)接口,号码为1,两端号码可不相同;隧道接口地址为1.1.1.1/24,隧道的起源为100.1.1.1,隧道的终点为200.1.1.1。

 

(2)查看R1当前的隧道接口状态:

r1#show interfaces tunnel 1

Tunnel1 is up, line protocol is up

  Hardware is Tunnel

  Internet address is 1.1.1.1/24

  MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

     reliability 255/255, txload 1/255, rxload 1/255

  Encapsulation TUNNEL, loopback not set

  Keepalive not set

  Tunnel source 100.1.1.1, destination 200.1.1.1

  Tunnel protocol/transport GRE/IP

    Key disabled, sequencing disabled

    Checksumming of packets disabled

  Tunnel TTL 255

  Fast tunneling enabled

  Tunnel transmit bandwidth 8000 (kbps)

  Tunnel receive bandwidth 8000 (kbps)

  Last input never, output never, output hang never

  Last clearing of "show interface" counters never

  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0

  Queueing strategy: fifo

  Output queue: 0/0 (size/max)

  5 minute input rate 0 bits/sec, 0 packets/sec

  5 minute output rate 0 bits/sec, 0 packets/sec

     0 packets input, 0 bytes, 0 no buffer

     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

     0 packets output, 0 bytes, 0 underruns

     0 output errors, 0 collisions, 0 interface resets

     0 output buffer failures, 0 output buffers swapped out

r1#

说明:可以看出,在R1创建GRE隧道之后,隧道接口状态便已经up,这是因为默认情况下,GRE隧道接口没有OSI一层协议做检测,只要本端源地址有效,并且隧道终点地址有路由可达,那么GRE隧道接口就会up,而无论隧道对端是否已经配置隧道接口。

 

(3)在北京分公司路由器R3上配置连接到上海分公司路由器R1的GRE隧道:

r3(config)#interface tunnel 3

r3(config-if)#ip address 1.1.1.2 255.255.255.0

r3(config-if)#tunnel source 200.1.1.1

r3(config-if)#tunnel destination 100.1.1.1

r3(config-if)#exit

说明:在R3上创建GRE虚拟链路(隧道)接口,号码为3,两端号码可不相同;隧道接口地址为1.1.1.2/24,隧道的起源为200.1.1.1,隧道的终点为100.1.1.1。

 

(4)查看R3当前的隧道接口状态:

 

r3#show interfaces tunnel 3

Tunnel3 is up, line protocol is up

  Hardware is Tunnel

  Internet address is 1.1.1.2/24

  MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

     reliability 255/255, txload 1/255, rxload 1/255

  Encapsulation TUNNEL, loopback not set

  Keepalive not set

  Tunnel source 200.1.1.1, destination 100.1.1.1

  Tunnel protocol/transport GRE/IP

    Key disabled, sequencing disabled

    Checksumming of packets disabled

  Tunnel TTL 255

  Fast tunneling enabled

  Tunnel transmit bandwidth 8000 (kbps)

  Tunnel receive bandwidth 8000 (kbps)

  Last input never, output never, output hang never

  Last clearing of "show interface" counters never

  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0

  Queueing strategy: fifo

  Output queue: 0/0 (size/max)

  5 minute input rate 0 bits/sec, 0 packets/sec

  5 minute output rate 0 bits/sec, 0 packets/sec

     0 packets input, 0 bytes, 0 no buffer

     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

     0 packets output, 0 bytes, 0 underruns

     0 output errors, 0 collisions, 0 interface resets

     0 output buffer failures, 0 output buffers swapped out

r3#

说明:R3上GRE隧道状态也已经up。

 

4.测试GRE隧道

(1)测试R1与R3之间的GRE隧道连通性:

r1#ping 1.1.1.2

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 16/96/196 ms

r1#

说明:因为R1与R3双方GRE隧道已经成功建立,并且状态都为up,所以隧道连通性正常。

 

(2)再次测试上海分公司R2直接使用私有地址192.168.1.4到北京分公司R4的连通性:

r2#ping 192.168.1.4     

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r2#

说明:上海分公司的路由器R1在收到去往192.168.1.4后,因为默认路由从真实接口F0/1出去,结果数据包被发到Internet中的路由器R5,由于Internet路由器R5只有公网路由,没有用户的私有网段,所以上海分公司R2直接使用私有地址192.168.1.4与北京分公司R4无法通信,如下是R1路由表:

 

r1#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static

 

route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is 100.1.1.5 to network 0.0.0.0

 

     1.0.0.0/24 is subnetted, 1 subnets

C       1.1.1.0 is directly connected, Tunnel1

     100.0.0.0/24 is subnetted, 1 subnets

C       100.1.1.0 is directly connected, FastEthernet0/1

     10.0.0.0/24 is subnetted, 1 subnets

C       10.1.1.0 is directly connected, FastEthernet0/0

S*   0.0.0.0/0 [1/0] via 100.1.1.5

r1#

 

要解决此问题,必须让流量从GRE隧道中传输。

 

(3)在创建GRE隧道的路由器双方将去往对方私有网段的数据包引入GRE隧道中传输:

 

R1:

r1(config)#ip route 192.168.1.0 255.255.255.0 tunnel 1

 

R3:

r3(config)#ip route 10.1.1.0 255.255.255.0 tunnel 3

 

 

(4)再次测试上海分公司R2直接使用私有地址192.168.1.4到北京分公司R4的连通性:

 

r2#ping 192.168.1.4

 

Type escape sequence to abort.

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

!!!!!

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

r2#

说明:上海分公司的路由器R1在收到去往192.168.1.4后,因为路由192.168.1.0已经指向GRE隧道,对方同样也已经回指向GRE隧道,所以上海分公司R2直接使用私有地址192.168.1.4与北京分公司R4通信正常。

 

 

(5)再次跟踪上海分公司R2到北京分公司的路径信息:

r2#traceroute 192.168.1.4

 

Type escape sequence to abort.

Tracing the route to 192.168.1.4

 

  1 10.1.1.1 108 msec 52 msec 16 msec

  2 1.1.1.2 112 msec 48 msec 12 msec

  3 192.168.1.4 132 msec *  96 msec

r2#

说明:可以看见,上海与北京分公司私有网段之间的流量已经在隧道中传输,所以通信正常。

 

 

                                                                    返回目录

GRE keepalive

  在上一小节中我们提到,GRE隧道接口没有OSI一层协议做检测,只要本端源地址有效,并且隧道终点地址有路由可达,那么GRE隧道接口就会up,而无论隧道对端是否已经配置隧道接口;如果GRE隧道的接口状态要down,只要达到如下3个情况中任意一个即可:

1.没有去往隧道终点地址的路由。

2.去往隧道终点地址的路由指向了隧道接口自己。

3.隧道起源地址的接口状态为down。

 

基于上述原因,所以在上一小节的实验中,在上海分公司路由器R1上配置连接到北京分公司路由器R3的GRE隧道之后,虽然北京分公司路由器R3并没有配置隧道,但R1上的GRE隧道接口状态已经变成了up。由于GRE隧道是完全静态的,每个隧道端点都不会与对端有任何交流数据包,每个端点都不保留对端的信息和状态,所以最终结果造成无论对端是否可达或接口已经down,本端都无法知道本端line protocol应该是up还是down,从而无法使双方的隧道接口状态保持双方一致。

为了解决上述问题,使双方的隧道接口状态保持双方一致,引用了类似OSPF或EIGRP等路由协议之间建立邻居的机制,路由协议在邻居之间通过定期交换hello包,当超过一定时间没有收到对方的hello包,便认为邻居已失效,从而断开与对方的邻居关系;GRE隧道也可以采用在隧道双方交换hello包的机制来使双方接口状态保持一致,这种机制称为GRE keepalive,隧道之间定期向对端发送keepalive,在超过指定的时间没有收到对端的回应,便认为对端已失效,从而将本端的line protocol状态变为down。

 

默认配置时,GRE keepalive默认为10秒发一个,连续3个包没有回应,即30秒之后,便认为对端已失效,从而将本端的line protocol状态变为down。在配置GRE keepalive时,即使隧道对端不支持GRE keepalive,照样可以收到回应,并且即使双方的发送间隔不一致,也能正常工作。

 

 

注:

GRE keepalive只支持point-to-point GRE tunnel,虽然可以在multipoint GRE(mGRE)配置,但不生效。

当GRE tunnel配置了tunnel protection ipsec profile时,GRE keepalive也不生效。

 

                                                                    返回目录

配置GRE keepalive

 

说明:延续上一小节的实验环境,继续测试GRE keepalive。

1.检测当前GRE隧道状态

(1)查看R1当前的隧道接口状态:

r1#show interfaces tunnel 1

Tunnel1 is up, line protocol is up

  Hardware is Tunnel

  Internet address is 1.1.1.1/24

  MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

     reliability 255/255, txload 1/255, rxload 1/255

  Encapsulation TUNNEL, loopback not set

  Keepalive not set

  Tunnel source 100.1.1.1, destination 200.1.1.1

  Tunnel protocol/transport GRE/IP

    Key disabled, sequencing disabled

    Checksumming of packets disabled

  Tunnel TTL 255

  Fast tunneling enabled

  Tunnel transmit bandwidth 8000 (kbps)

  Tunnel receive bandwidth 8000 (kbps)

  Last input 01:16:00, output 01:12:27, output hang never

  Last clearing of "show interface" counters never

  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1

  Queueing strategy: fifo

  Output queue: 0/0 (size/max)

  5 minute input rate 0 bits/sec, 0 packets/sec

  5 minute output rate 0 bits/sec, 0 packets/sec

     54 packets input, 6476 bytes, 0 no buffer

     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

     70 packets output, 8248 bytes, 0 underruns

     0 output errors, 0 collisions, 0 interface resets

     0 output buffer failures, 0 output buffers swapped out

r1#

说明:隧道接口地址为1.1.1.1/24,隧道的起源为100.1.1.1,隧道的终点为200.1.1.1,因为源地址100.1.1.1所在的接口为正常状态,并且也有去往隧道终点200.1.1.1的路由,所以隧道状态为up。

 

(2)清除去往隧道终点200.1.1.1的路由:

r1(config)#no ip route 0.0.0.0 0.0.0.0 100.1.1.5

 

r1#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static

 

route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     100.0.0.0/24 is subnetted, 1 subnets

C       100.1.1.0 is directly connected, FastEthernet0/1

     10.0.0.0/24 is subnetted, 1 subnets

C       10.1.1.0 is directly connected, FastEthernet0/0

r1#

说明:R1上已经没有了去往隧道终点200.1.1.1的路由。

 

(3)查看R1上清除去往隧道终点200.1.1.1的路由后,隧道接口的状态:

r1#show interfaces tunnel 1

Tunnel1 is up, line protocol is down

  Hardware is Tunnel

  Internet address is 1.1.1.1/24

  MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

     reliability 255/255, txload 1/255, rxload 1/255

  Encapsulation TUNNEL, loopback not set

  Keepalive not set

  Tunnel source 100.1.1.1, destination 200.1.1.1

  Tunnel protocol/transport GRE/IP

    Key disabled, sequencing disabled

    Checksumming of packets disabled

  Tunnel TTL 255

  Fast tunneling enabled

  Tunnel transmit bandwidth 8000 (kbps)

  Tunnel receive bandwidth 8000 (kbps)

  Last input 01:19:18, output 01:15:45, output hang never

  Last clearing of "show interface" counters never

  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1

  Queueing strategy: fifo

  Output queue: 0/0 (size/max)

  5 minute input rate 0 bits/sec, 0 packets/sec

  5 minute output rate 0 bits/sec, 0 packets/sec

     54 packets input, 6476 bytes, 0 no buffer

     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

     70 packets output, 8248 bytes, 0 underruns

     0 output errors, 0 collisions, 0 interface resets

     0 output buffer failures, 0 output buffers swapped out

r1#

说明:R1上没有了去往隧道终点200.1.1.1的路由后,隧道接口状态变为down。

 

2.配置GRE keepalive

(1)恢复R1上去往隧道终点200.1.1.1的路由后,再查看隧道接口状态:

 

r1(config)#ip route 0.0.0.0 0.0.0.0 100.1.1.5  

 

 

r1#show interfaces tunnel 1

Tunnel1 is up, line protocol is up

  Hardware is Tunnel

  Internet address is 1.1.1.1/24

  MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

     reliability 255/255, txload 1/255, rxload 1/255

  Encapsulation TUNNEL, loopback not set

  Keepalive not set

  Tunnel source 100.1.1.1, destination 200.1.1.1

  Tunnel protocol/transport GRE/IP

    Key disabled, sequencing disabled

    Checksumming of packets disabled

  Tunnel TTL 255

  Fast tunneling enabled

  Tunnel transmit bandwidth 8000 (kbps)

  Tunnel receive bandwidth 8000 (kbps)

  Last input 01:19:57, output 01:16:23, output hang never

  Last clearing of "show interface" counters never

  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1

  Queueing strategy: fifo

  Output queue: 0/0 (size/max)

  5 minute input rate 0 bits/sec, 0 packets/sec

  5 minute output rate 0 bits/sec, 0 packets/sec

     54 packets input, 6476 bytes, 0 no buffer

     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

     70 packets output, 8248 bytes, 0 underruns

     0 output errors, 0 collisions, 0 interface resets

     0 output buffer failures, 0 output buffers swapped out

r1#

说明:恢复R1上去往隧道终点200.1.1.1的路由后,隧道接口状态变成up。

 

(2)在R1的隧道接口上配置GRE keepalive:

r1(config)#int tunnel 1

r1(config-if)#keepalive 5 3

说明:配置了keepalive的发送间隔为5秒,连续3个包,即15秒没有收到回应但认为对端失效,默认配置参数为10秒,连续3个包,即30秒没有收到回应但认为对端失效。

 

(3)中断对端路由器R3的GRE隧道接口,观察R1本端的隧道接口状态:

 

中断R3隧道接口:

r3(config)#int tunnel 3

r3(config-if)#shutdown

 

R1上弹出log:

r1#

*Mar  1 01:59:44.419: %LINEPROTO-5-UPDOWN: Line protocol on Interface

 

Tunnel1, changed state to down

r1#

 

R1当前隧道接口状态:

r1#show interfaces tunnel 1

Tunnel1 is up, line protocol is down

  Hardware is Tunnel

  Internet address is 1.1.1.1/24

  MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

     reliability 255/255, txload 1/255, rxload 1/255

  Encapsulation TUNNEL, loopback not set

  Keepalive set (5 sec), retries 3

  Tunnel source 100.1.1.1, destination 200.1.1.1

  Tunnel protocol/transport GRE/IP

    Key disabled, sequencing disabled

    Checksumming of packets disabled

  Tunnel TTL 255

  Fast tunneling enabled

  Tunnel transmit bandwidth 8000 (kbps)

  Tunnel receive bandwidth 8000 (kbps)

  Last input 00:04:48, output 00:00:03, output hang never

  Last clearing of "show interface" counters never

  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 2

  Queueing strategy: fifo

  Output queue: 0/0 (size/max)

  5 minute input rate 0 bits/sec, 0 packets/sec

  5 minute output rate 0 bits/sec, 0 packets/sec

     67 packets input, 8088 bytes, 0 no buffer

     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

     105 packets output, 10992 bytes, 0 underruns

     0 output errors, 0 collisions, 0 interface resets

     0 output buffer failures, 0 output buffers swapped out

r1#

说明:当对端隧道接口中断后,R1在本端弹出的log显示隧道接口已变为down,并查看当前隧道接口确定为down状态。

 

(4)恢复R3的隧道接口,并开启GRE keepalive:

r3(config)#int tunnel 3

r3(config-if)#no shutdown

r3(config-if)#keepalive

说明:R3隧道接口上配置了默认的GRE keepalive参数。

 

(5)再次查看R1的隧道接口状态:

r1#show interfaces tunnel 1

Tunnel1 is up, line protocol is up

  Hardware is Tunnel

  Internet address is 1.1.1.1/24

  MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

     reliability 255/255, txload 1/255, rxload 1/255

  Encapsulation TUNNEL, loopback not set

  Keepalive set (5 sec), retries 3

  Tunnel source 100.1.1.1, destination 200.1.1.1

  Tunnel protocol/transport GRE/IP

    Key disabled, sequencing disabled

    Checksumming of packets disabled

  Tunnel TTL 255

  Fast tunneling enabled

  Tunnel transmit bandwidth 8000 (kbps)

  Tunnel receive bandwidth 8000 (kbps)

  Last input 00:06:01, output 00:00:01, output hang never

  Last clearing of "show interface" counters never

  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 2

  Queueing strategy: fifo

  Output queue: 0/0 (size/max)

  5 minute input rate 0 bits/sec, 0 packets/sec

  5 minute output rate 0 bits/sec, 0 packets/sec

     71 packets input, 8280 bytes, 0 no buffer

     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

     120 packets output, 11712 bytes, 0 underruns

     0 output errors, 0 collisions, 0 interface resets

     0 output buffer failures, 0 output buffers swapped out

r1#

说明:由于对端路由器R3的隧道接口已经up,所以本端隧道接口状态也变为up;接口参数显示了Keepalive发送间隔为5秒,连续3个包,即15秒没有收到回应但认为对端失效。

 

(6)查看R3路由器上的GRE隧道状态:

r3#show interfaces tunnel 3

Tunnel3 is up, line protocol is up

  Hardware is Tunnel

  Internet address is 1.1.1.2/24

  MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,

     reliability 255/255, txload 1/255, rxload 1/255

  Encapsulation TUNNEL, loopback not set

  Keepalive set (10 sec), retries 3

  Tunnel source 200.1.1.1, destination 100.1.1.1

  Tunnel protocol/transport GRE/IP

    Key disabled, sequencing disabled

    Checksumming of packets disabled

  Tunnel TTL 255

  Fast tunneling enabled

  Tunnel transmit bandwidth 8000 (kbps)

  Tunnel receive bandwidth 8000 (kbps)

  Last input 00:06:21, output 00:00:00, output hang never

  Last clearing of "show interface" counters never

  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1

  Queueing strategy: fifo

  Output queue: 0/0 (size/max)

  5 minute input rate 0 bits/sec, 0 packets/sec

  5 minute output rate 0 bits/sec, 0 packets/sec

     111 packets input, 11280 bytes, 0 no buffer

     Received 0 broadcasts, 0 runts, 0 giants, 0 throttles

     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort

     74 packets output, 8424 bytes, 0 underruns

     0 output errors, 0 collisions, 0 interface resets

     0 output buffer failures, 0 output buffers swapped out

r3#

说明:因为接口配置了默认参数,所以发送间隔10秒,连续3个包,即30秒没有收到回应但认为对端失效,虽然双方时间间隔不一致,但不影响正常工作。

 

 

                                                                    返回目录

加密技术

加密算法

当不同的远程网络通过Internet连接时,网络之间直接通过私有地址进行互访只是需求之一,除此之外,还有个非常重要的需求,那就是数据安全。所以在穿越Internet的远程网络之间只实现隧道传输还不够,还必须让数据包加密传输,以保证数据在Internet传输时的安全性。

基于上述原因,在远程网络之间布置的VPN除了实现隧道功能之外,还必须在隧道中实现对数据的加密,隧道与加密是VPN不得不同时实现的功能,两者缺一不可,否则就不算是完整的VPN。

 

目前,加密算法多种多样,加密算法分为加密和解密两个过程:

加密是指将明文(直接能看懂的)数据换算成密文(直接无法看懂的)数据。

解密是对加密的反运算,将密文数据转变为明文数据。

 

 

加密的算法非常多,曾经最古老,最常用,也是最能让人理解的就是替换法,例如:

发送一串文字ABCDEF,要将这些文字变成密文,就将A替换为C,将B替换为D,将C替换为E,将D替换为F,将E替换为G,将F替换为H,最后ABCDEF就使用CDEFGH来表示,而ABCDEF才是明文,是真正的内容,而CDEFGH就是加密后的密文,并不是真正的内容;从加密过程中可以看出,明文“ABCDEF”通过将每个字母替换成后面第二个字母的方法被加密成了“CDEFGH”,在这里,将每个字母替换成后面第二个字母的方法可以称为加密方法,也称为加密算法,当内容被加密之后,接收者还必须先将密文解密,才能看懂内容,这里就将密文“CDEFGH”的每个字母替换成前面第二个字母,便得到明文“ABCDEF”。

 

从上面加密与解密的整个过程中可以发现,对数据进行加密需要使用加密算法,上例中使用的加密算法是字母替换法,即将每个字母替换成其它字母的方法,知道数据使用什么算法去加密并没关系,一个人知道数据的加密算法,并不能将密文转变为明文,要对密文进行解密,不仅要知道加密算法,同时还必须知道加密的密钥,也就是密码,在上例中,将每个字母替换成后面第二个字母就是密钥(密码),如果别人只是知道我们使用的加密算法是字母替换法,但他不知道每个字母具体被替换成了哪个字母,是没办法将密文还原的,所以对数据加密的算法可以被公开,但是加密的密钥一定要保密不能被窃取,否则密文也就变得不安全了,因此,如何保证密钥的安全是相当重要的。

 

上面在对数据进行解密时使用的密钥和加密使用的密钥是完全相同的,这种加密算法称为对称加密算法,也叫做私钥算法,上面加密时是将字母替换为后面第二个字母,解密时就将字母替换为前面第二个即可,只要被人知道这第二个字母的关系,就能破解数据,所以只要密钥一旦泄露,数据就会被窃取。为了寻求更安全的加密算法,开发出了与对称加密算法相反的加密算法,称为非对称加密算法,也叫做公钥算法,其原理与对称加密算法不同的是解密时使用的密钥和加密时使用的密钥不同,就是在将明文加密时使用一个密钥,这个密钥俗称公钥,但是在对密文解密时,必须使用另外一个密钥,这个密钥俗称私钥,公钥只能用于加密,不能解密,必须有私钥才能解密。

 

在对称加密算法中,因为解密时使用的密钥和加密时使用是同一个密钥,所以对于密钥的保护必须格外小心,只要密钥在交换或协商时被人窃取,数据就会被破解,显然双方必须使用绝对安全的方法来交换密钥。

 

而在非对称加密算法中,因为解密时使用的密钥和加密时使用的密钥不同,任何拥有公钥的人,都可以对数据进行加密,但只有拥有私钥的人,才能对密文解密,所以公钥可以被公开,可以被任何人知道,只知道公钥只能加密,却不能解密,所以只要保证私钥掌握在自己手中不传递不外泄,就不会有问题;双方在需要加密传输时,各自都把自己的公钥发出去,让对方通过该公钥将数据加密后发给自己,这样就能使任何人都能向自己发送加密数据,但只有自己才能对数据解密。

 

当前涉及到的各种加密算法有:

 

对称加密算法(私钥算法)

DES(Data Encryption Standard)

DES加密共有三种形式,分为DES(40-bit长度加密),DES(56-bit长度加密)以及3DES(3倍的56-bit长度加密,即168-bit长度加密);由于3DES加密长度够长,安全性够高,所以推荐使用3DES。

 

AES(Advanced Encryption Standard)

AES加密共有三种形式,分为AES 128(128-bit长度加密),AES 192(192-bit长度加密)以及AES 256(256-bit长度加密);由于AES 256加密长度够长,安全性够高,所以推荐使用AES 256。

 

 

非对称加密算法(公钥算法)

 

RSA

RSA公钥加密算法的名字是发明者的人名:Rivest, Shamir and Adleman,该算法的长度位数不定,由人手工定义。

 

在硬件方面,当采用公钥加密算法时,速度明显慢于私钥加密算法,虽然使用公钥加密算法似乎更安全,但通常都使用私钥加密算法,而使用私钥加密算法的重点就是要保证密钥的安全传递与交换,所以该工作就由公钥加密算法来完成,最后的过程就是先使用公钥加密算法业安全的交换私钥算法的密钥后,然后再使用私钥算法对数据进行加密,这样既保证了私钥算法的密钥安全,同时又获得了数据加密的速度,两者兼得。

                                                                   返回目录

HMAC(Hashed Message Authentication Code)

当数据在传输过程中,如果被劫持后修改了数据,通常数据接收者很难发现数据是否在中途被篡改;在正常的数据传输中大家都应该知道,每个数据包都会在后面写上一个对数据计算后的校验和(Checksum),当数据计算出校验和之后,接收者在收到数据后也需要对数据进行校验和计算,如果发现自己计算的校验和与数据包附带的校验和不同,便认为数据发生了偏移或错误,因此将数据包丢弃或要求重传。在需要保证数据安全防止中途被篡改时,也引用了校验和的思想,数据在发送之前先计算出相应的Hash值,当接收者收到数据后也要对数据计算Hash值,如果发现自己计算的Hash值与数据附带的值不匹配,便认为数据在传输过程中遭到了篡改,从而拒绝不正确的数据包。

在这里,Hash算法和校验和算法基本上是相同的,Hash算法的特征在于任何大小的数据计算出的Hash值的长度都是一样的,任何数据通过Hash计算后,得到的Hash值都是固定长度的,哪怕几个字的数据,或者是几GByte的数据,计算出的Hash值的长度都是相同的,所以如果仅仅是根据Hash值,是无法推算出数据内容的,只靠Hash值无法将数据内容还原。基于以上Hash的特征,所以Hash多用于认证,认证对等体双方在相互认证时,只需要交换密码的Hash值即可,而无需交换密码,从而防止了密码被窃取,但仅仅是窃取Hash值,也无法推算出密码是多少。

 

目前Hash算法有:

MD5(Message Digest 5

将任何数据通过计算后输出128-bit长度的Hash值。

 

SHA-1(Secure Hash Algorithm 1)

160-bit digest

将任何数据通过计算后输出160-bit长度的Hash值。

  

从上可以看出,SHA-1拥有着比MD5更高的安全性。

 

 

                                                                    返回目录

IPsec(IP Security)

概述

在实施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协议以及内置在ISAKMP(Internet 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 单播),不支持其它任何协议。

 

                                                                    返回目录

IKE(Internet Key Exchange)

 

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

 

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

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

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

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

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

其实数据早就被C截获了,而B还以为数据是A发来的,以为数据是安全的。

 

从上面,我们可以看出,在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的所有会话都是在通道中传输的,包括协商密钥,传递用户数据;这样的通道称为SA(Security 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 SA;IPsec SA直接为用户数据流服务,IPsec SA中的所有安全策略都是为了用户数据流的安全。

每个IPsec对等体都有一对IPsec SA,一个是去往远程目的地的,而另一个是从远程回来的,也就是一进一出,都存放在本地SA Database中。

 

IPsec SA的lifetime默认为3600 seconds,即1小时;默认volume limit为4,608,000 Kbytes,即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

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

Hash算法(HMAC)

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

密钥算法(Diffie-Hellman

Groups 1 (768 bit),Group 2(1024 bit),Group 5(1536 bit),默认为Groups 1 (768 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 SA;IPsec SA是基于IKE SA来建立的,建立IPsec SA的过程称为 快速模式(quick mode)。IPsec SA才是真正为用户数据服务的,用户的所有流量都是在IPsec SA中传输的,用户流量靠IPsec SA来保护,IPsec SA同样也需要协商出一整套安全策略,其中包括:

 

加密算法(Encryption

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

 

Hash算法(HMAC)

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

 

Lifetime

随用户定义,默认为3600 seconds,即1小时;默认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中也就谈不了密钥算法了,但也可以强制再算。

 

 

                                                                    返回目录

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需要完成多次封装,总共有3次,换句话说,就是在GRE隧道中传输的数据包都有3个包头,GRE中的IP数据包是一层套一层,总共有3个IP地址。

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

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

 

 

 从图中可以看出,当IPsec工作在Tunnel mode时,整个原始数据包都会被加密,包括数据部分和包头部分,正因为该封装形式隐藏了原始的IP     包头,导致了原始IP包头不可见,那么路由器就无法对该数据包进行路由,所以需要添加一个新的IP包头来正常路由,通常是加密设备自己的IP地址被加到新IP包头中,这个地址也可在IOS中定义;并且我们可以确定这个IP地址一定是在传输网(通常指公网Internet)中可以被路由的。至少为什么同时出现3个包头,理论同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 mode,Tunnel模式的IPsec不仅实现了隧道功能,也保留了数据安全,实现了完整的VPN功能。如果IPsec不需要实现隧道功能,而只需要实现保护数据的安全功能,就只要工作在Transport mode即可,因为Transport模式的IPsec只有安全功能而没有隧道功能,所以还要再配合其它隧道协议,最终实现完整的VPN功能。

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

 

从图中可以看出,当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)

 

                                                                    返回目录

ESP(Encapsulating Security Protocol)

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

 

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

 

 

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

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

 

保护数据完整性(Data integrity)

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

防止数据被重放(Anti-Replay

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

 

 

 

                                                                    返回目录

AH(Authentication Header)

 

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

 

 

 

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

 

ESP和AH结合

 

在一个IPsec Security Association (SA)中可以同时使用ESP和AH,而ESP拥有和AH相同的认证功能,以及数据保护方法,所以只使用ESP就是最理想的。

 

                                                                    返回目录

Transform Set

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

 

                                                                    返回目录

Crypto Map

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

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

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

 

选择需要加密处理的数据就是定义什么样的流量需要被保护,因为也许用户并不是需要所有的数据都被保护,所以需要先匹配指定的流量才行;

定义数据加密的策略以及数据发往的对端,也就相当于定义数据的目的地,有时,这也表示隧道的终点。

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

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

 

 

 

                                                                    返回目录

隧道分离(Split Tunneling

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

 

 

                                                                    返回目录

IPsec LAN-to-LAN VPN(LAN-to-LAN VPN)

概述

        

在IPsec VPN范畴的VPN中,有多种形式的VPN,各形式的VPN因为架构和使用环境的不同而不同,但在IPsec VPN范畴内的各VPN中,都是以IPsec为基础的,在本小节中要讲到的是IPsec VPN之LAN-to-LAN VPN,有时也被称为Site-to-Site VPN,该形式的VPN是IPsec VPN中最简单的VPN,但并不代表该形式的VPN是最常用的。

 

在配置IPsec VPN范畴的VPN时,无论配置哪种形式,基本上需要如下几个重要步骤:

 

 

配置IKE(ISAKMP)策略

定义认证标识

配置IPsec transform

定义感兴趣流量

创建crypto map

将crypto map应用于接口

 

 

其中每步的具体内容为:

 

配置IKE(ISAKMP)策略

定义IKE Phase One中的一些策略,包括加密算法(EncryptionHash算法(HMAC)密钥算法(Diffie-Hellman),认证方式(Authentication)等等,每项的具体信息请参考前文内容。

 

 

定义认证标识

无论前面定义了何种认证方式,都需要添加认证信息,如密码、数字证书等等。

 

配置IPsec transform

也就是定义Phase Two中一些加密算法以及HMAC算法,此transform set就是定义了VPN流量中的数据包是受到怎样的保护。

 

定义感兴趣流量

定义哪些流量需要通过VPN来传输,通过IPsec来保护;匹配流量的方法为定义ACL,建议使用Extended ACL来匹配指定的流量,ACL中被permit匹配的的流量表示加密,而被deny匹配的流量则表示不加密。

 

注:在配置ACL定义感兴趣流量时需要格外注意的是ACL中不要使用any来表示源或者目标,否则会出问题。

 

 

创建crypto map

将之前定义的ACL,加密数据发往的对端,以及IPsec transform结合在crypto map中。

 

将crypto map应用于接口

crypto map配置后,是不会生效的,必须将crypto map应用到接口上,目前还没有听说crypto map对接口类型有任何要求,也就是正常接口都可以应用,当然必须是三层可路由接口。

 

因为目前Cisco产品中能够配置VPN的设备有许多,而目前较流行的设备有Router(路由器),PIX(防火墙),ASA(防火墙),所以我们在讲解各VPN配置时,会基于各种设备类型来配置,这些设备也许并不支持所有类型的VPN,但我们尽量将各VPN所支持的每个设备都进行配置举例。

                                                                    返回目录

Router-to-Router LAN-to-LAN VPN

在本小节,我们在Router与Router之间配置LAN-to-LAN VPN,即配置Router-to-Router LAN-to-LAN VPN。

 

 

配置Router-to-Router LAN-to-LAN VPN

 

 

 

说明:我们下面需要以上图的环境来演示LAN-to-LAN VPN的效果,其中两个远程公司的网络上海和北京,如R5与R4之间需要直接使用私有地址来互访,比如R5通过直接访问地址192.168.1.4来访问R4,而R2则相当于Internet路由器,R2只负责让R1与R3能够通信,R2不会配置任何路由,R2不允许拥有上海与北京公司内部的路由10.1.1.0与192.168.1.0,在配置完LAN-to-LAN VPN之后,最终上海与北京两个网络之间通过VPN隧道来穿越没有路由的R2来进行通信,实现在私网与私网之间穿越公网的通信。

 

1.配置基础网络环境 

(1)配置R1:

r1(config)#int f0/0

r1(config-if)#ip add 12.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#int f0/1

r1(config-if)#ip add 10.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

说明:配置R1的接口地址,并写默认路由指向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的接口地址,因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。

 

(3)配置R3:

r3(config)#int f0/0

r3(config-if)#ip add 192.168.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的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2。

 

 

(4)配置R4:

r4(config)#int f0/0

r4(config-if)#ip add 192.168.1.4 255.255.255.0

r4(config-if)#no sh

r4(config-if)#exit

 

r4(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.3

说明:配置R4的接口地址,并写默认路由指向北京公司出口路由器R3。

 

(5)配置R5:

r5(config)#int f0/1

r5(config-if)#ip add 10.1.1.5 255.255.255.0

r5(config-if)#no sh

r5(config-if)#exit

 

r5(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

说明:配置R5的接口地址,并写默认路由指向上海公司出口路由器R1。

 

2.测试基础网络环境

(1)测试R1到R3的连通性:

r1#ping 23.1.1.3

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 56/98/152 ms

r1#

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

 

(2)测试R1到R4的连通性:

r1#ping 192.168.1.4

 

Type escape sequence to abort.

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

U.U.U

Success rate is 0 percent (0/5)

r1#

说明:虽然R1有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与R3的通信,所以R1无法访问北京公司的私有网段192.168.1.0。

 

(3)测试R5到R4的连通性:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:同上理由,R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与R3的通信,所以上海和北京公司无法通过私有地址互访。

 

(4)查看R2的路由表:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

r2#

说明:因为R2模拟Internet路由器,所以R2没有写任何路由,R2的责任就只是保证R1与R3能够通信即可。

 

 

3.配置LAN-to-LAN VPN

(1)在R1上配置IKE(ISAKMP)策略:

r1(config)#crypto isakmp policy 1

r1(config-isakmp)#encryption 3des

r1(config-isakmp)#hash sha

r1(config-isakmp)#authentication pre-share

r1(config-isakmp)#group 2

r1(config-isakmp)#exit

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

 

 

(2)在R1上定义认证标识:

r1(config)#crypto isakmp key 0 cisco123 address 23.1.1.3

说明:因为之前定义的认证方式为Pre-Shared Keys (PSK),所以需要定义认证密码,这里定义与peer 23.1.1.3的认证密码为cisco123,并且双方密码必须一致,否则无法建立IKE SA,其中0表示密码在running-config中显示为明文。

 

(3)在R1上配置IPsec transform:

r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r1(cfg-crypto-trans)#exit

说明:配置了transform-set为ccie,其中数据封装使用esp加3des加密,并且使用esp结合sha做hash计算,默认的IPsec mode为tunnel。

 

(4)在R1上定义感兴趣流量:

r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 192.168.1.0 0.0.0.255

说明:这里需要被IPsec保护传输的流量为上海公司至北京公司的流量,即10.1.1.0/24发往 192.168.1.0/24的流量,切记不可使用any来表示地址。

 

 

(5)在R1上创建crypto map:

r1(config)#crypto map l2l 1 ipsec-isakmp

r1(config-crypto-map)#set peer 23.1.1.3

r1(config-crypto-map)#set transform-set ccie

r1(config-crypto-map)#match address 100

r1(config-crypto-map)#exit

说明:在R1上配置crypto map为l2l,序号为1,即第1组策略,其中指定加密数据发往的对端为23.1.1.3,即和23.1.1.3建立IPsec隧道,调用的IPsec transform为ccie,并且指定ACL 100中的流量为被保护的流量。

 

(6)在R1上将crypto map应用于接口:

r1(config)#int f0/0

r1(config-if)#crypto map l2l

r1(config-if)#exit

r1(config)#

*Mar  1 00:21:45.171: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r1(config)#

说明:将crypto map应用在去往北京公司的接口F0/0上。

 

(7)使用相同方式配置R3的LAN-to-LAN VPN:

r3(config)#crypto isakmp policy 1

r3(config-isakmp)#encryption 3des

r3(config-isakmp)#hash sha

r3(config-isakmp)#authentication pre-share

r3(config-isakmp)#group 2

r3(config-isakmp)#exit 

 

r3(config)#crypto isakmp key 0 cisco123 address 12.1.1.1

 

r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r3(cfg-crypto-trans)#exit

 

r3(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 10.1.1.0 0.0.0.255

 

r3(config)#crypto map l2l 1 ipsec-isakmp

r3(config-crypto-map)#set peer 12.1.1.1

r3(config-crypto-map)#set transform-set ccie

r3(config-crypto-map)#match address 100

r3(config-crypto-map)#exit

r3(config)#

 

r3(config)#int f0/1

r3(config-if)#crypto map l2l

r3(config-if)#

*Mar  1 00:32:58.907: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r3(config-if)#

说明:R3与R1的IKE和IPsec策略必须保持一致。

 

4.测试VPN

(1)在R1上查看IKE(ISAKMP)策略:

Global IKE policy

Protection suite of priority 1

        encryption algorithm:   Three key triple DES

        hash algorithm:         Secure Hash Standard

        authentication method:  Pre-Shared Key

        Diffie-Hellman group:   #2 (1024 bit)

        lifetime:               86400 seconds, no volume limit

Default protection suite

        encryption algorithm:   DES - Data Encryption Standard (56 bit keys).

        hash algorithm:         Secure Hash Standard

        authentication method:  Rivest-Shamir-Adleman Signature

        Diffie-Hellman group:   #1 (768 bit)

        lifetime:               86400 seconds, no volume limit

r1#

说明:上面列出了IKE(ISAKMP)策略中默认的加密算法(Encryption),Hash算法(HMAC),密钥算法(Diffie-Hellman),认证方式(Authentication),以及我们配置的参数。

 

 

(2)查看Phase One时的认证密码:

r1#show crypto isakmp key

Keyring      Hostname/Address                            Preshared Key

 

default      23.1.1.3                                    cisco123

r1#

说明:可以看出我们配置的与peer 23.1.1.3之间的认证密码是csico123。

 

(3)查看IKE SA(ISAKMP SA):

r1#show crypto isakmp sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

 

IPv6 Crypto ISAKMP SA

 

r1#

说明:虽然在R1与R3之间已经配置足够的VPN命令,但IKE SA仍然没有建立,这是因为,在没有用户流量的传输来初始化的情况下,IKE SA通常是无法自动建立的。

 

(4)查看R1上IKE SA的peer:

r1#show crypto isakmp peers

 

r1#

r1#

说明:可以看见目前没有任何IKE SA peer。

 

(5)查看R1上的IPsec Transform:

r1#show crypto ipsec transform-set

Transform set ccie: { esp-3des esp-sha-hmac  }

   will negotiate = { Tunnel,  },

  

 

r1#

说明:IPsec Transform显示了数据封装使用esp加3des加密,并且使用esp结合sha做hash计算,默认配置时没有指定IPsec mode,所以默认的mode和预期一样是tunnel。

 

 

(6)查看R1上的IPsec SA:

r1#show crypto ipsec sa

 

interface: FastEthernet0/0

    Crypto map tag: l2l, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

   current_peer 23.1.1.3 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0

    #pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 0, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0x0(0)

 

     inbound esp sas:

 

     inbound ah sas:

         

     inbound pcp sas:

 

     outbound esp sas:

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

说明:可以看见当前R1上IPsec SA的信息,但目前的SA并非活动状态,并且SA显示了正确的数据信息,即从本地10.1.1.0/24发往192.168.1.0/24的。

 

 

(7)查看R1上的IPsec SA的Lifetime:

r1#show crypto ipsec security-association

Security association lifetime: 4608000 kilobytes/3600 seconds

 

r1#

说明:默认的IPsec SA的Lifetime为3600 seconds,即1小时;默认volume limit为4,608,000 Kbytes,即4.608 Gbyte。

 

(8)查看R1上的crypto map:

r1#show crypto map

Crypto Map "l2l" 1 ipsec-isakmp

        Peer = 23.1.1.3

        Extended IP access list 100

            access-list 100 permit ip 10.1.1.0 0.0.0.255 192.168.1.0 0.0.0.255

        Current peer: 23.1.1.3

        Security association lifetime: 4608000 kilobytes/3600 seconds

        PFS (Y/N): N

        Transform sets={

                ccie,

        }

        Interfaces using crypto map l2l:

                FastEthernet0/0

 

 

r1#

说明: crypto map显示了指定加密数据发往的对端为23.1.1.3,即和23.1.1.3建立IPsec隧道,调用的IPsec transform为ccie,并且指定ACL 100中的流量为被保护的流量。

 

 

(9)从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4     

 

Type escape sequence to abort.

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

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 64/125/212 ms

r5#

说明:上海公司R5向北京公司R4发送的5个数据包,有4个成功穿越了Internet,说明该流量激活了IKE SA,并且在双方应该成功建立了IPsec隧道,所以才实现了VPN的功能。

 

 

(10)再次查看R1上IKE SA的peer:

r1#show crypto isakmp peers

Peer: 23.1.1.3 Port: 500 Local: 12.1.1.1

 Phase1 id: 23.1.1.3

r1#

说明:R1已经成功与R3建立IKE peer,说明IKE SA也应该成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3,目标端口号为500。

 

 

(11)再次查看R1上的IKE SA(ISAKMP SA):

r1#show crypto isakmp sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

23.1.1.3        12.1.1.1        QM_IDLE           1001    0 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

r1#

说明:IKE SA已经成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3,并且为激活状态,如为(delete)状态,则不可用。

 

 

(12)再次查看R1上的IPsec SA:

r1#show crypto ipsec sa

 

interface: FastEthernet0/0

    Crypto map tag: l2l, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

   current_peer 23.1.1.3 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4

    #pkts decaps: 4, #pkts decrypt: 4, #pkts verify: 4

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 1, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0x84D01C7D(2228231293)

 

     inbound esp sas:

      spi: 0xEB838CF1(3951267057)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 1, flow_id: SW:1, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4537199/3427)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0x84D01C7D(2228231293)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 2, flow_id: SW:2, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4537199/3425)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

说明:IPsec SA中显示了之前通了的4个包成功被IPsec加密,并且可以看出该SA为Active状态,特别要注意的是,目前的IPsec mode工作在Tunnel模式。

 

 

(13)查看上海公司向北京公司发送数据包的路径走向:

r5#traceroute 192.168.1.4

 

Type escape sequence to abort.

Tracing the route to 192.168.1.4

 

  1 10.1.1.1 116 msec 120 msec 28 msec

  2  *  *  *

  3 192.168.1.4 392 msec *  312 msec

r5#

说明:从上海公司发向北京公司的数据包到达上海的路由器后,可以看出中间只有一跳,就到达了目的地,说明中间的多跳已经被隧道取代为一跳了。

 

 

5.调试VPN中的感兴趣流量

(1)在R1上将ACL定义的感兴趣流量改为任意流量,即any:

r1(config)#no access-list 100

r1(config)#access-list 100 permit ip any any

 

(2)查看R1上的crypto map:

r1#show crypto map

Crypto Map "l2l" 1 ipsec-isakmp

        Peer = 23.1.1.3

        Extended IP access list 100

            access-list 100 permit ip any any

        Current peer: 23.1.1.3

        Security association lifetime: 4608000 kilobytes/3600 seconds

        PFS (Y/N): N

        Transform sets={

                ccie,

        }

        Interfaces using crypto map l2l:

                FastEthernet0/0

 

 

r1#

说明:显示了被IPsec 保护的流量为ACL 100中的流量,即任意流量。

 

(3)查看R1上的IPsec SA:

 

r1#show crypto ipsec sa

 

interface: FastEthernet0/0

    Crypto map tag: l2l, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)

   remote ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)

   current_peer 23.1.1.3 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0

    #pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 0, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0x0(0)

 

     inbound esp sas:

 

     inbound ah sas:

         

     inbound pcp sas:

 

     outbound esp sas:

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

说明:目前IPsec SA中也显示被保护的流量为任意,理论上是会出错的。

 

(4)从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:这次上海公司R5向北京公司R4发送的数据包没能激活了IKE SA,所以需要将定义感兴趣流量中ACL中的any替换为具体网段。(注:即使改为access-list 100 permit ip 10.1.1.0 0.0.0.255 any,也是没有用的,所以源和目的都不能使用any来表示。)

 

(5)修改感兴趣流量的ACL:

r1(config)#no access-list 100

r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 192.168.1.0 0.0.0.255

说明:将感兴趣流量改为从本地10.1.1.0/24发往192.168.1.0/24的。

 

(6)再次从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4           

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/132/312 ms

r5#

说明:替换掉感兴趣流量ACL中的any后,VPN一切恢复正常,所以在配置ACL定义感兴趣流量时需要格外注意的是ACL中不要使用any来表示源或者目标,否则会出问题。

 

 

6.测试NAT对LAN-to-LAN VPN 的影响:

(1)在R1上配置NAT:

r1(config)#interface f0/1

r1(config-if)#ip nat inside

r1(config-if)#exit

 

r1(config)#int f0/0

r1(config-if)#ip nat outside

 

r1(config)#access-list 1 permit any

r1(config)#ip nat inside source list 1 interface f0/0 overload

说明:在上海公司路由器R1上开启NAT,内网接口F0/1为inside,外网接口F0/0为outside,并且将所有内网流量通过NAT将源IP转换为外网接口F0/0的地址。

 

(2)从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4              

 

Type escape sequence to abort.

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

U.U.U

Success rate is 0 percent (0/5)

r5#

说明:和预期一样,IPsec流量是不能穿越NAT的。

 

(3)查看NAT转换信息:

r1#sh ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

icmp 12.1.1.1:15       10.1.1.5:15        192.168.1.4:15     192.168.1.4:15

icmp 12.1.1.1:16       10.1.1.5:16        192.168.1.4:16     192.168.1.4:16

icmp 12.1.1.1:17       10.1.1.5:17        192.168.1.4:17     192.168.1.4:17

r1#

说明:转换表中显示刚才的流量被NAT转换,但流量却不再被IPsec认同。

 

(4)删除R1上的NAT:

r1(config)#access-list 1 deny 10.1.1.0 0.0.0.255

r1(config)#access-list 1 permit any

 

r1#cle ip nat translation *

r1#

r1#

r1#sh ip nat translations 

说明:因为被NAT转换的流量不再是合法的IPsec流量,所以我们将需要被IPsec保护的从上海发往北京的流量,即10.1.1.0/24发往 192.168.1.0/24的流量不被NAT转换。

 

(5)再次从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4             

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 60/145/248 ms

r5#

说明:不被NAT转换的流量和之前一样再次通过IPsec VPN隧道穿越了Internet。

 

 

                                                                    返回目录

Router-to-PIX LAN-to-LAN VPN

在上一小节中,我们介绍了Router与Router之间配置LAN-to-LAN VPN,即Router-to-Router LAN-to-LAN VPN;在本小节中,我们来介绍Router与PIX之间配置LAN-to-LAN VPN,即Router-to-PIX LAN-to-LAN VPN

 

 

配置Router-to-PIX LAN-to-LAN VPN

说明:我们下面需要以上图的环境来演示LAN-to-LAN VPN的效果,其中两个远程公司的网络上海和北京,如R5与R4之间需要直接使用私有地址来互访,比如R5通过直接访问地址192.168.1.4来访问R4,而R2则相当于Internet路由器,R2只负责让R1与PIX能够通信,R2不会配置任何路由,R2不允许拥有上海与北京公司内部的路由10.1.1.0与192.168.1.0,在配置完LAN-to-LAN VPN之后,最终上海与北京两个网络之间通过VPN隧道来穿越没有路由的R2来进行通信,实现在私网与私网之间穿越公网的通信。

 

 

1.配置基础网络环境

(1)配置R1:

r1(config)#int f0/0

r1(config-if)#ip add 12.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#int f0/1

r1(config-if)#ip add 10.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

说明:配置R1的接口地址,并写默认路由指向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的接口地址,因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。

 

(3)配置R4:

r4(config)#int f0/0

r4(config-if)#ip add 192.168.1.4 255.255.255.0

r4(config-if)#no sh

r4(config-if)#exit

 

r4(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.3

说明:配置R4的接口地址,并写默认路由指向北京公司出口PIX。

 

(4)配置R5:

r5(config)#int f0/1

r5(config-if)#ip add 10.1.1.5 255.255.255.0

r5(config-if)#no sh

r5(config-if)#exit

 

r5(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

说明:配置R5的接口地址,并写默认路由指向上海公司出口路由器R1。

 

 

(5)配置PIX:

pixfirewall(config)# int e0

pixfirewall(config-if)# ip add 192.168.1.3 255.255.255.0

pixfirewall(config-if)# no shu

pixfirewall(config-if)# nameif inside

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

pixfirewall(config-if)# exit

 

pixfirewall(config)# int e1

pixfirewall(config-if)# ip add 23.1.1.3 255.255.255.0

pixfirewall(config-if)# nameif outside

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

pixfirewall(config-if)# exit

 

pixfirewall(config)# route outside 0 0 23.1.1.2

说明:配置PIX的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2。

 

2.测试基础网络环境

(1)测试R1到PIX的连通性:

 

r1#ping 23.1.1.3

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 20/38/60 ms

r1#

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

 

(2)测试R1到R4的连通性:

r1#ping 192.168.1.4

 

Type escape sequence to abort.

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

U.U.U

Success rate is 0 percent (0/5)

r1#

说明:虽然R1有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与PIX的通信,所以R1无法访问北京公司的私有网段192.168.1.0。

 

(3)测试R5到R4的连通性:

 

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:同上理由,R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与PIX的通信,所以上海和北京公司无法通过私有地址互访。

 

 

(4)查看R2的路由表:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

r2#

说明:因为R2模拟Internet路由器,所以R2没有写任何路由,R2的责任就只是保证R1与PIX能够通信即可。

 

3.配置LAN-to-LAN VPN

(1)在PIX上配置IKE(ISAKMP)策略:

pixfirewall(config)# crypto isakmp policy 1

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

pixfirewall(config-isakmp-policy)# hash sha

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

pixfirewall(config-isakmp-policy)# group 2

pixfirewall(config-isakmp-policy)# exit

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

 

 

(2)在PIX上定义认证标识:

pixfirewall(config)# tunnel-group 12.1.1.1 type ipsec-l2l

pixfirewall(config)# tunnel-group 12.1.1.1 ipsec-attributes

pixfirewall(config-tunnel-ipsec)# pre-shared-key cisco123

pixfirewall(config-tunnel-ipsec)# exit

说明:因为之前定义的认证方式为Pre-Shared Keys (PSK),所以需要定义认证密码,这里定义与peer 12.1.1.1,即与R1的认证密码为cisco123,并且双方密码必须一致,否则无法建立IKE SA。

 

(3)在PIX上配置IPsec transform:

pixfirewall(config)# crypto ipsec transform-set ccie esp-3des esp-sha-hmac

说明:配置了transform-set为ccie,其中数据封装使用esp加3des加密,并且使用esp结合sha做hash计算。

 

(4)在PIX上定义感兴趣流量:

pixfirewall(config)# access-list vpn permit ip permit ip 192.168.1.0 255.255.255.0 10.1.1.0 255.255.255.0

说明:这里需要被IPsec保护传输的流量为北京公司至上海公司的流量,即192.168.1.0/24发往10.1.1.0/24的流量,切记不可使用any来表示地址。

 

 

(5)在PIX上创建crypto map:

pixfirewall(config)# crypto map l2l 1 match address vpn

pixfirewall(config)# crypto map l2l 1 set peer 12.1.1.1

pixfirewall(config)# crypto map l2l 1 set transform-set ccie

说明:在PIX上配置crypto map为l2l,序号为1,即第1组策略,其中指定加密数据发往的对端为12.1.1.1,即和12.1.1.1建立IPsec隧道,调用的IPsec transform为ccie,并且指定ACL vpn中的流量为被保护的流量。

 

(6)在PIX上将crypto map和ISAKMP策略应用于接口outside接口E1:

pixfirewall(config)# crypto map l2l interface outside

pixfirewall(config)# crypto isakmp enable outside

说明:将crypto map和ISAKMP策略应用在去往上海公司的接口E1上。

 

(7)使用相同方式配置R1的LAN-to-LAN VPN:

r1(config)#crypto isakmp policy 1

r1(config-isakmp)#encryption 3des

r1(config-isakmp)#hash sha

r1(config-isakmp)#authentication pre-share

r1(config-isakmp)#group 2

r1(config-isakmp)#exit

 

r1(config)#crypto isakmp key 0 cisco123 address 23.1.1.3

 

r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r1(cfg-crypto-trans)#exit

 

 

r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 192.168.1.0 0.0.0.255

 

r1(config)#crypto map l2l 1 ipsec-isakmp

r1(config-crypto-map)#set peer 23.1.1.3

r1(config-crypto-map)#set transform-set ccie

r1(config-crypto-map)#match address 100

r1(config-crypto-map)#exit

 

 

 

r1(config)#int f0/0

r1(config-if)#crypto map l2l

r1(config-if)#exit

r1(config)#

*Mar  1 00:21:45.171: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r1(config)#

说明:R1与PIX的IKE和IPsec策略必须保持一致。

 

4.测试VPN

(1)从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/91/224 ms

r5#

说明:上海公司R5向北京公司R4发送的5个数据包,有5个成功穿越了Internet,说明该流量激活了IKE SA,并且在双方应该成功建立了IPsec隧道,所以才实现了VPN的功能。需要注意的是,如果没有触发流量成功,请到对端发送流量触发。

 

 

(2)再从北京公司R4向上海公司R5发送流量:

r4#ping 10.1.1.5

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 52/101/188 ms

r4#

说明:由于双方VPN配置正确且相同,所以VPN隧道已经成功转发双方的流量。

 

(3)查看R1上IKE SA的peer:

r1#show crypto isakmp peers

Peer: 23.1.1.3 Port: 500 Local: 12.1.1.1

 Phase1 id: 23.1.1.3

r1#

r1#

说明:R1已经成功与PIX建立IKE peer,说明IKE SA也应该成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3,目标端口号为500。

 

 

(4)查看R1上的IKE SA(ISAKMP SA):

r1#show crypto isakmp sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

12.1.1.1        23.1.1.3        QM_IDLE           1002    0 ACTIVE

 

IPv6 Crypto ISAKMP SA

说明:R1已经成功与PIX建立IKE SA。

  

 

(5)查看R1上的IPsec SA:

 

r1#show crypto ipsec sa

 

interface: FastEthernet0/0

    Crypto map tag: l2l, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

   current_peer 23.1.1.3 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 85, #pkts encrypt: 85, #pkts digest: 85

    #pkts decaps: 57, #pkts decrypt: 57, #pkts verify: 57

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 20, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0x364B657F(910910847)

 

     inbound esp sas:

      spi: 0x416B8271(1097564785)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 3, flow_id: SW:3, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4383510/3351)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0x364B657F(910910847)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 4, flow_id: SW:4, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4383510/3350)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

说明:IPsec SA中显示了之前通了的包成功被IPsec加密,并且可以看出该SA为Active状态,特别要注意的是,目前的IPsec mode工作在Tunnel模式。

 

(6)查看上海公司向北京公司发送数据包的路径走向:

r5#traceroute 192.168.1.4

 

Type escape sequence to abort.

Tracing the route to 192.168.1.4

 

  1 10.1.1.1 92 msec 64 msec 48 msec

  2 192.168.1.4 588 msec 532 msec *

r5#

说明:从上海公司发向北京公司的数据包到达上海的路由器后,可以看出中间只有一跳,就到达了目的地,说明中间的多跳已经被隧道取代为一跳了。

 

 

(7)查看PIX上IKE SA的peer:

pixfirewall# sh 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: 12.1.1.1

    Type    : L2L             Role    : initiator

    Rekey   : no              State   : MM_ACTIVE

pixfirewall#

pixfirewall#

说明:PIX上也看到已经成功与R1建立IKE peer,说明IKE SA也应该成功建立。

 

(8)查看PIX上的激活的隧道数:

pixfirewall# sh crypto isakmp stats

 

Global IKE Statistics

Active Tunnels: 1

Previous Tunnels: 2

In Octets: 7196

In Packets: 60

In Drop Packets: 11

In Notifys: 36

In P2 Exchanges: 5

In P2 Exchange Invalids: 0

In P2 Exchange Rejects: 0

In P2 Sa Delete Requests: 0

Out Octets: 6316

Out Packets: 55

Out Drop Packets: 0

Out Notifys: 68

Out P2 Exchanges: 1

Out P2 Exchange Invalids: 0

Out P2 Exchange Rejects: 0

Out P2 Sa Delete Requests: 2

Initiator Tunnels: 1

Initiator Fails: 0

Responder Fails: 0

System Capacity Fails: 0

Auth Fails: 0

Decrypt Fails: 0

Hash Valid Fails: 0

No Sa Fails: 0

pixfirewall#

说明:如果已经与一方成功建立IKE SA,那么在这里就需要看到至少1个活动隧道(Active Tunnels)。

 

 

(9)查看PIX上的IPsec SA:

pixfirewall# show crypto ipsec sa

interface: outside

    Crypto map tag: l2l, seq num: 1, local addr: 23.1.1.3

 

      access-list vpn permit ip 192.168.1.0 255.255.255.0 10.1.1.0 255.255.255.0

      local ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

      remote ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

      current_peer: 12.1.1.1

 

      #pkts encaps: 52, #pkts encrypt: 52, #pkts digest: 52

      #pkts decaps: 56, #pkts decrypt: 56, #pkts verify: 56

      #pkts compressed: 0, #pkts decompressed: 0

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

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

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

      #send errors: 0, #recv errors: 0

 

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

 

      path mtu 1500, ipsec overhead 58, media mtu 1500

      current outbound spi: 416B8271

 

    inbound esp sas:

      spi: 0x364B657F (910910847)

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

         in use settings ={L2L, Tunnel, }

         slot: 0, conn_id: 8192, crypto-map: l2l

         sa timing: remaining key lifetime (kB/sec): (4274996/3176)

         IV size: 8 bytes

         replay detection support: Y

    outbound esp sas:

      spi: 0x416B8271 (1097564785)

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

         in use settings ={L2L, Tunnel, }

         slot: 0, conn_id: 8192, crypto-map: l2l

         sa timing: remaining key lifetime (kB/sec): (4274996/3176)

         IV size: 8 bytes

         replay detection support: Y

 

pixfirewall#

说明:IPsec SA中显示了之前通了的包成功被IPsec加密,并且可以看出该SA为Active状态,同样,目前的IPsec mode工作在Tunnel模式。

 

 

5.测试NAT对LAN-to-LAN VPN 的影响:

(1)在PIX上配置NAT:

pixfirewall(config)# global (outside) 1 interface

INFO: outside interface address added to PAT pool

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

说明:在北京公司防火墙PIX上开启NAT,并且将所有内网流量通过NAT将源IP转换为外网接口E1(即outside口)的地址。

 

(2)从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:和预期一样,IPsec流量是不能穿越NAT的。

 

(3)从北京公司R4向上海公司R5发送流量:

r4#ping 10.1.1.5

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r4#

说明:北京公司到上海公司的流量也不能穿越NAT。

 

(4)配置PIX使北京公司到上海公司的流量绕过NAT:

pixfirewall(config)#access-list nonat extended permit ip 192.168.1.0 255.255.255.0 10.1.1.0 255.255.255.0

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

说明:在NAT进程0的流量则不被NAT转换,所以北京公司到上海公司的流量不被NAT转换。

(5)再次从北京公司R4向上海公司R5发送流量:

r4#ping 10.1.1.5

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 12/89/200 ms

r4#

说明:因为配置了北京公司到上海公司的流量不被NAT转换,所以北京公司到上海公司的流量再次通过IPsec VPN隧道穿越了Internet。

 

 

 

(6)再次从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 44/100/200 ms

r5#

说明:同上原因,上海公司到北京公司的流量再次通过IPsec VPN隧道穿越了Internet。

 

 

                                                                    返回目录

Router-to-ASA LAN-to-LAN VPN

在前面的小节中,我们介绍了Router与Router之间配置LAN-to-LAN VPN,以及Router与PIX之间配置LAN-to-LAN VPN;在本小节中,我们来介绍Router与ASA之间配置LAN-to-LAN VPN,即Router-to-ASA LAN-to-LAN VPN

说明:我们下面需要以上图的环境来演示LAN-to-LAN VPN的效果,其中两个远程公司的网络上海和北京,如R5与R4之间需要直接使用私有地址来互访,比如R5通过直接访问地址192.168.1.4来访问R4,而R2则相当于Internet路由器,R2只负责让R1与ASA能够通信,R2不会配置任何路由,R2不允许拥有上海与北京公司内部的路由10.1.1.0与192.168.1.0,在配置完LAN-to-LAN VPN之后,最终上海与北京两个网络之间通过VPN隧道来穿越没有路由的R2来进行通信,实现在私网与私网之间穿越公网的通信。

 

 

1.配置基础网络环境

(1)配置R1:

r1(config)#int f0/0

r1(config-if)#ip add 12.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#int f0/1

r1(config-if)#ip add 10.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

说明:配置R1的接口地址,并写默认路由指向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的接口地址,因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。

 

 

(3)配置R4:

r4(config)#int f0/0

r4(config-if)#ip add 192.168.1.4 255.255.255.0

r4(config-if)#no sh

r4(config-if)#exit

 

r4(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.3

说明:配置R4的接口地址,并写默认路由指向北京公司出口ASA。

 

(4)配置R5:

r5(config)#int f0/1

r5(config-if)#ip add 10.1.1.5 255.255.255.0

r5(config-if)#no sh

r5(config-if)#exit

 

r5(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

说明:配置R5的接口地址,并写默认路由指向上海公司出口路由器R1。

 

 

(5)配置ASA:

ciscoasa(config)# int e0/0

ciscoasa(config-if)# ip add 192.168.1.3 255.255.255.0

ciscoasa(config-if)# no shut

ciscoasa(config-if)# nameif inside

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

ciscoasa(config-if)# exit

ciscoasa(config)# int e0/1

ciscoasa(config-if)# ip add 23.1.1.3 255.255.255.0

ciscoasa(config-if)# no shut

ciscoasa(config-if)# nameif outside

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

ciscoasa(config-if)#

ciscoasa(config-if)# route outside 0 0 23.1.1.2

说明:配置ASA的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2。

 

2.测试基础网络环境

(1)测试R1到ASA的连通性:

r1#ping 23.1.1.3

 

Type escape sequence to abort.

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

!!!!!

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

r1#

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

 

 

(2)测试R1到R4的连通性:

r1#ping 192.168.1.4

 

Type escape sequence to abort.

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

U.U.U

Success rate is 0 percent (0/5)

r1#

说明:虽然R1有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与ASA的通信,所以R1无法访问北京公司的私有网段192.168.1.0。

 

(3)测试R5到R4的连通性:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:同上理由,R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与ASA的通信,所以上海和北京公司无法通过私有地址互访。

 

(4)查看R2的路由表:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

r2#

r2#

说明:因为R2模拟Internet路由器,所以R2没有写任何路由,R2的责任就只是保证R1与ASA能够通信即可。

3.配置LAN-to-LAN VPN

(1)在ASA上配置IKE(ISAKMP)策略:

ciscoasa(config)# crypto isakmp policy 1

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

ciscoasa(config-isakmp-policy)# hash sha

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

ciscoasa(config-isakmp-policy)# group 2

ciscoasa(config-isakmp-policy)# exit

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

 

 

(2)在ASA上定义认证标识:

ciscoasa(config)# tunnel-group 12.1.1.1 type ipsec-l2l

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

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

ciscoasa(config-tunnel-ipsec)# exit

说明:因为之前定义的认证方式为Pre-Shared Keys (PSK),所以需要定义认证密码,这里定义与peer 12.1.1.1,即与R1的认证密码为cisco123,并且双方密码必须一致,否则无法建立IKE SA。

 

(3)在ASA上配置IPsec transform:

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

说明:配置了transform-set为ccie,其中数据封装使用esp加3des加密,并且使用esp结合sha做hash计算。

 

(4)在ASA上定义感兴趣流量:

ciscoasa(config)# access-list vpn permit ip 192.168.1.0 255.255.255.0 10.1.1.0 255.255.255.0

说明:这里需要被IPsec保护传输的流量为北京公司至上海公司的流量,即192.168.1.0/24发往10.1.1.0/24的流量,切记不可使用any来表示地址。

 

 

(5)在ASA上创建crypto map:

ciscoasa(config)# crypto map l2l 1 match address vpn

ciscoasa(config)# crypto map l2l 1 set peer 12.1.1.1

ciscoasa(config)# crypto map l2l 1 set transform-set ccie

说明:在ASA上配置crypto map为l2l,序号为1,即第1组策略,其中指定加密数据发往的对端为12.1.1.1,即和12.1.1.1建立IPsec隧道,调用的IPsec transform为ccie,并且指定ACL vpn中的流量为被保护的流量。

 

(6)在ASA上将crypto map和ISAKMP策略应用于接口outside接口E0/1:

ciscoasa(config)# crypto map l2l interface outside

ciscoasa(config)# crypto isakmp enable outside

说明:将crypto map和ISAKMP策略应用在去往上海公司的接口E1上。

 

(7)使用相同方式配置R1的LAN-to-LAN VPN:

r1(config)#crypto isakmp policy 1

r1(config-isakmp)#encryption 3des

r1(config-isakmp)#hash sha

r1(config-isakmp)#authentication pre-share

r1(config-isakmp)#group 2

r1(config-isakmp)#exit

 

r1(config)#crypto isakmp key 0 cisco123 address 23.1.1.3

 

r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r1(cfg-crypto-trans)#exit

 

 

r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 192.168.1.0 0.0.0.255

 

r1(config)#crypto map l2l 1 ipsec-isakmp

r1(config-crypto-map)#set peer 23.1.1.3

r1(config-crypto-map)#set transform-set ccie

r1(config-crypto-map)#match address 100

r1(config-crypto-map)#exit

 

 

 

r1(config)#int f0/0

r1(config-if)#crypto map l2l

r1(config-if)#exit

r1(config)#

*Mar  1 00:21:45.171: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r1(config)#

说明:R1与PIX的IKE和IPsec策略必须保持一致。

 

4.测试VPN

(1)从上海公司R5向北京公司R4发送流量

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 44/96/160 ms

r5#

说明:上海公司R5向北京公司R4发送的5个数据包,有5个成功穿越了Internet,说明该流量激活了IKE SA,并且在双方应该成功建立了IPsec隧道,所以才实现了VPN的功能。需要注意的是,如果没有触发流量成功,请到对端发送流量触发。

 

(2)再从北京公司R4向上海公司R5发送流量:

r4#ping 10.1.1.5

 

Type escape sequence to abort.

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

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 48/103/148 ms

r4#

说明:由于双方VPN配置正确且相同,所以VPN隧道已经成功转发双方的流量。

 

(3)查看R1上IKE SA的peer:

r1#show crypto isakmp peers

Peer: 23.1.1.3 Port: 500 Local: 12.1.1.1

 Phase1 id: 23.1.1.3

r1#

r1#

说明:R1已经成功与ASA建立IKE peer,说明IKE SA也应该成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3,目标端口号为500。

 

(4)查看R1上的IKE SA(ISAKMP SA):

 

r1#show crypto isakmp sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

12.1.1.1        23.1.1.3        QM_IDLE           1002    0 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

说明:R1已经成功与ASA建立IKE SA。

 

 

(5)查看R1上的IPsec SA:

 

r1#show crypto ipsec sa

 

interface: FastEthernet0/0

    Crypto map tag: l2l, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

   current_peer 23.1.1.3 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 922, #pkts encrypt: 922, #pkts digest: 922

    #pkts decaps: 906, #pkts decrypt: 906, #pkts verify: 906

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 12, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0x1E66BA90(510048912)

 

     inbound esp sas:

      spi: 0xF04751E8(4031205864)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 5, flow_id: SW:5, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4564889/3556)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0x1E66BA90(510048912)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 6, flow_id: SW:6, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4564889/3555)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

说明:IPsec SA中显示了之前通了的包成功被IPsec加密,并且可以看出该SA为Active状态,特别要注意的是,目前的IPsec mode工作在Tunnel模式。

 

(6)查看上海公司向北京公司发送数据包的路径走向:

 

r5#traceroute 192.168.1.4

 

Type escape sequence to abort.

Tracing the route to 192.168.1.4

 

  1 10.1.1.1 124 msec 68 msec 48 msec

  2 192.168.1.4 304 msec 480 msec *

r5#

说明:从上海公司发向北京公司的数据包到达上海的路由器后,可以看出中间只有一跳,就到达了目的地,说明中间的多跳已经被隧道取代为一跳了。

 

 

(7)查看ASA上IKE SA的peer:

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: 12.1.1.1

    Type    : L2L             Role    : initiator

    Rekey   : no              State   : MM_ACTIVE

ciscoasa#

说明:ASA上也看到已经成功与R1建立IKE peer,说明IKE SA也应该成功建立。

 

(8)查看ASA上的激活的隧道数:

 

ciscoasa# show crypto isakmp stats

 

Global IKE Statistics

Active Tunnels: 1

Previous Tunnels: 2

In Octets: 5012

In Packets: 34

In Drop Packets: 5

In Notifys: 10

In P2 Exchanges: 10

In P2 Exchange Invalids: 0

In P2 Exchange Rejects: 0

In P2 Sa Delete Requests: 1

Out Octets: 3648

Out Packets: 24

Out Drop Packets: 0

Out Notifys: 16

Out P2 Exchanges: 1

Out P2 Exchange Invalids: 0

Out P2 Exchange Rejects: 0

Out P2 Sa Delete Requests: 1

Initiator Tunnels: 1

Initiator Fails: 0

Responder Fails: 0

System Capacity Fails: 0

Auth Fails: 0

Decrypt Fails: 0

Hash Valid Fails: 0

No Sa Fails: 0

ciscoasa#

 

说明:如果已经与一方成功建立IKE SA,那么在这里就需要看到至少1个活动隧道(Active Tunnels)。

 

(9)查看ASA上的IPsec SA:

 

ciscoasa# show crypto ipsec sa

interface: outside

    Crypto map tag: l2l, seq num: 1, local addr: 23.1.1.3

 

      access-list vpn permit ip 192.168.1.0 255.255.255.0 10.1.1.0 255.255.255.0

      local ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

      remote ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

      current_peer: 12.1.1.1

 

      #pkts encaps: 6, #pkts encrypt: 6, #pkts digest: 6

      #pkts decaps: 7, #pkts decrypt: 7, #pkts verify: 7

      #pkts compressed: 0, #pkts decompressed: 0

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

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

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

      #send errors: 0, #recv errors: 0

 

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

 

      path mtu 1500, ipsec overhead 58, media mtu 1500

      current outbound spi: F04751E8

 

    inbound esp sas:

      spi: 0x1E66BA90 (510048912)

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

         in use settings ={L2L, Tunnel, }

         slot: 0, conn_id: 8192, crypto-map: l2l

         sa timing: remaining key lifetime (kB/sec): (4274999/3502)

         IV size: 8 bytes

         replay detection support: Y

    outbound esp sas:

      spi: 0xF04751E8 (4031205864)

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

         in use settings ={L2L, Tunnel, }

         slot: 0, conn_id: 8192, crypto-map: l2l

         sa timing: remaining key lifetime (kB/sec): (4274999/3502)

         IV size: 8 bytes

         replay detection support: Y

 

ciscoasa#

说明:IPsec SA中显示了之前通了的包成功被IPsec加密,并且可以看出该SA为Active状态,同样,目前的IPsec mode工作在Tunnel模式。

 

5.测试NAT对LAN-to-LAN 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,并且将所有内网流量通过NAT将源IP转换为外网接口E0/1(即outside口)的地址。

 

(2)从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:和预期一样,IPsec流量是不能穿越NAT的。

 

(3)从北京公司R4向上海公司R5发送流量:

 

r4#ping 10.1.1.5

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r4#

说明:北京公司到上海公司的流量也不能穿越NAT。

 

(4)配置ASA使北京公司到上海公司的流量绕过NAT:

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

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

ciscoasa(config)#

说明:在NAT进程0的流量则不被NAT转换,所以北京公司到上海公司的流量不被NAT转换。

 

(5)再次从北京公司R4向上海公司R5发送流量:

 

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 44/93/232 ms

r5#

说明:因为配置了北京公司到上海公司的流量不被NAT转换,所以北京公司到上海公司的流量再次通过IPsec VPN隧道穿越了Internet。

 

(6)再次从上海公司R5向北京公司R4发送流量:

 

r4#ping 10.1.1.5

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/140/232 ms

r4#

说明:同上原因,上海公司到北京公司的流量再次通过IPsec VPN隧道穿越了Internet。

 

 

 

 

                                                                    返回目录

IPsec Dynamic LAN-to-LAN VPN(DyVPN)

概述

  在普通LAN-to-LAN VPN中,我们在配置ISAKMP Phase one的身份认证时,需要指定对方peer的密码,我们不难发现,这个密码是基于peer邻居指定的,也就是需要为每一个peer定义一个密码,不仅如此,在我们定义crypto map时,同样也需要指定peer的地址,以此来定义加密数据发往的对端,结果就是需要为每一个VPN邻居输入一组相应配置,随着VPN邻居的增加,这样的重复配置就会随之增加,试想一下,假如有个大型公司有1000家分公司,这1000家分公司都要和总公司通过VPN通信,那么就需要让总公司的VPN设备和1000个邻居建立VPN,这样一来,虽然每家分公司只要配置好对总公司的VPN配置,但是总公司的设备却需要为每个分公司配置一组配置,最终就需要配置总共1000组VPN配置,这是一件多么恐怖的工作;并且这台总公司VPN设备会变的难以管理,不可维护,所以普通LAN-to-LAN VPN要用在拥有多个分公司的环境下,是不可取的。并且如果VPN双方有任何一方的IP地址事先不知道或地址不固定,也不能建立VPN

  我们可以仔细分析一下,造成上述问题的原因是,普通LAN-to-LAN VPN需要为每个peer指定认证密码,所以peer的增加,就意味着配置的增加,因为每个peer的认证密码都是需要事先定义好的,如果我们可以使用一条命令为多个peer指定认证密码,这就可以让配置简化,所以就考虑使用像配置ACL的方法一样去定义与密码相对应的peer,只要被该ACL匹配到的peer,都使用该认证密码,比如10.1.1.0 0.0.0.255就能够匹配10.1.1.1至10.1.1.254范围内的所有地址,这种配置认证的方法称为使用通配符的配置方法,可以通过定义peer的地址范围来配置密码,就可以实现密码多用的功能,在peer数量众多的情况下,明显可以减少工作量。令人高兴的是,如果要和多少个peer建立VPN,甚至连peer的地址范围会是多少都不知道的情况下,也没有关系,我们可以将通配符写成0.0.0.0 0.0.0.0,这就表示任意地址,这样的结果就是不管peer是谁,我们定义的认证密码都对它生效,这样一来,不管是要和一千个peer建VPN,还是要和一万个peer建VPN都没关系,因为我们的只需要使用一条命令来定义密码,即可接受任何地址的连接。

 通配符认证配置方法是通过配置IPsec profile来实现的,  第一个被引入的IOS版本是12.2(15)T,但最好在 12.3(3) ,12.3(2)T或之后的,才能成功,之前的版本都有Bug。

 之前我们提到过,不仅需要为每个peer定义认证密码外,还需要为每个peer定义crypto map,在每个crypto map中,指定相应的peer,为每个peer定义认证密码的工作已经通过使用通配符的配置方法解决了工作量,但为每个peer定义crypto map仍然是个恐怖的工作,所以我们也必须想办法配置一次crypto map能够让多个peer使用,这样一个crypto map为多个peer使用的模式,称为dynamic map(动态map),dynamic map不再单独定义每个peer地址,而采用定义0.0.0.0来表示任意地址,即该dynamic map为任何peer使用,这样一来,就是无论有多少个peer,无论peer是谁,都使用dynamic map去应对。

  通过结合使用通配符认证配置方法与dynamic map,就可以不管有多少个VPN peer,我们只需要配置1次认证密码与1个dynamic map就能实现,而且即使VPN peer的数量不停增加也没关系,因为我们的VPN配置可以接受任意地址的连接,所以无论和多少个VPN peer连接,我们的配置始终保持不变,这样的VPN,我们称为IPsec Dynamic LAN-to-LAN VPN(DyVPN),当Dynamic LAN-to-LAN VPN应用在大型公司时,而无论该公司有多少家分公司要和总公司连接VPN,而无论新开的分公司地址是多少,总公司的VPN配置始终保持不变,这使得即使分公司的IP地址是预先不知道的,比如通过拨入ADSL获得的动态IP地址,总公司统统接受他们的VPN连接请求。

Dynamic LAN-to-LAN VPN能够接受任何地址连接的设备,我们称为Hub端,对端称为spoke端,可见Hub端就应用了通配符认证配置方法与dynamic map,但spoke端的配置与普通LAN-to-LAN VPN配置方法一样,没有任何区别;虽然说Dynamic LAN-to-LAN VPN的Hub端可以接受任何spoke端的VPN连接,这只是表示spoke端的IP地址可以是任意地址,但是因为spoke端的配置与普通LAN-to-LAN VPN配置方法一样,需要事先指定peer的地址,所以Hub端的IP地址是必须固定的,否则两端的IP地址都不固定或不知道,那就谈不上建立任何形式的VPN。

 

配置Dynamic LAN-to-LAN VPN时,有两个注意点,即Hub端需要使用通配符认证配置方法和dynamic map技术,其它配置部分与配置需求和普通LAN-to-LAN VPN一样。

 虽然是Dynamic LAN-to-LAN VPN,但工作原理和普通IPsec VPN一样,也需要在双方建立SA,需要知道什么样的流量需要被加密传输,对于spoke路由器,是肯定知道什么样的流量需要加密的,因为它的配置和普通LAN-to-LAN VPN完全一样,而对于Hub端,因为它能够与任何路由器建立VPN,也就是会和什么样的网络通信,发往哪里的数量需要加密,哪个网络的流量该发往哪个peer,这对于Hub来说是不知道的,所以在Hub端,无法事先确定发往每个peer的流量,所以也就无法对于每个peer形成相应的SA,但无论是Hub还是spoke,SA终究是要确定的,这就需要在spoke端去初始化。所以,在Dynamic LAN-to-LAN VPN环境下,只能先由spoke端向Hub端发流量来使Hub端形成相应SA,在spoke端没有向Hub端发流量之前,Hub端是没有SA的,并且Hub端是不能靠自己发流量来初始化SA的建立的。

 

所有的spoke router连接到同hub时,可以是相同的配置,唯一不同的可能就是ACL匹配的流量了。

 

注:

Dynamic LAN-to-LAN VPN的Hub端IP地址必须是spoke事先知道的IP地址,所以应该为固定IP。

Dynamic LAN-to-LAN VPN的spoke端IP地址可以是任意地址,如ADSL通过DHCP获得的IP地址。

Dynamic LAN-to-LAN VPN同时支持Router,PIX防火墙,ASA防火墙。

只能先由spoke端向Hub端发流量来使Hub端形成相应SA,在spoke端没有向Hub端发流量之前,Hub端是没有SA的,并且Hub端是不能靠自己发流量来初始化SA的建立的。

 

所有的spoke router连接到相同hub时,可以是相同的VPN配置,唯一不同的可能就是ACL匹配的感兴趣流量不同。

                                                                    返回目录

Router-to-Router Dynamic LAN-to-LAN VPN

在本小节,我们在Router与Router之间配置Dynamic LAN-to-LAN VPN,即配置Router-to-Router Dynamic LAN-to-LAN VPN。

 

 

配置Router-to-Router Dynamic LAN-to-LAN VPN

 

说明:我们下面需要以上图的环境来演示Dynamic LAN-to-LAN VPN的效果,在图中,有上海、北京和广州共三个公司的网络,上海要同时和北京与广州的网络实现VPN通信,其中北京路由器R3的IP地址是预先知道的,即23.1.1.3,这样上海便能与北京轻松实现VPN,而广州的路由器R4的IP地址是通过DHCP获得的,事先无法知道IP是多少,在这样的情况下,我们通过配置Dynamic LAN-to-LAN VPN来使上海公司的路由器接受任何公司的VPN连接,而不管其IP地址是多少。

注:在上图中,即使VPN场点增加,在上海路由器R1上,不需要更改任何配置,都能接受对方的VPN连接。

 

1.配置基础网络环境

(1)配置R1:

r1(config)#int f0/0

r1(config-if)#ip add 12.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#int f0/1

r1(config-if)#ip add 10.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

说明:配置R1的接口地址,并写默认路由指向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 24.1.1.2 255.255.255.0

r2(config-if)#no sh

r2(config-if)#exit

 

r2(config)#int s1/0

r2(config-if)#encapsulation frame-relay

r2(config-if)#no frame-relay inverse-arp

r2(config-if)#no arp frame-relay

r2(config-if)#ip add 23.1.1.2 255.255.255.0

r2(config-if)#no sh

r2(config-if)#frame-relay map ip 23.1.1.3 203 broadcast

r2(config-if)#exit

 

r2(config)#service dhcp

r2(config)#ip dhcp pool net24

r2(dhcp-config)#network 24.1.1.0 255.255.255.0

r2(dhcp-config)#default-router 24.1.1.2

r2(dhcp-config)#exit

r2(config)#ip dhcp excluded-address 24.1.1.2

说明:配置R2的接口地址,并且在R2上配置DHCP,向广州路由器R4提供动态IP地址,因为R2模拟Internet,R2只需要有公网路由12.1.1.0、23.1.1.0和24.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。

 

(3)配置R3:

r3(config)#int s1/0

r3(config-if)#encapsulation frame-relay

r3(config-if)#no frame-relay inverse-arp

r3(config-if)#no arp frame-relay

r3(config-if)#no sh

r3(config-if)#ip add 23.1.1.3 255.255.255.0

r3(config-if)#frame-relay map ip 23.1.1.2 302 broadcast

r3(config-if)#exit

 

r3(config)#int f0/0

r3(config-if)#ip add 192.168.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)#

说明:配置R3的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2。

 

(4)配置R4:

r4(config)#int f0/0

r4(config-if)#ip add 172.16.1.4 255.255.255.0

r4(config-if)#no sh

r4(config-if)#exit

 

r4(config)#int f0/1

r4(config-if)#ip address dhcp

r4(config-if)#no shutdown

r4(config-if

说明:在R4上配置内网网段172.16.1.0/24,并且在连Internet的接口F0/1上开启DHCP动态获得地址,所以F0/1上的IP地址是多少,事先是不知道的。

 

(5)配置R5:

r5(config)#int f0/1

r5(config-if)#ip add 10.1.1.5 255.255.255.0

r5(config-if)#no sh

r5(config-if)#exit

 

r5(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

说明:配置R5的接口地址,并写默认路由指向上海公司出口路由器R1。

  

2.测试基础网络环境

(1)查看广州路由器R4的IP地址情况:

r4#sh ip int brief

Interface                  IP-Address      OK? Method Status                Protocol

FastEthernet0/0            172.16.1.4      YES manual up                    up     

FastEthernet0/1            24.1.1.1        YES DHCP   up                    up     

Serial1/0                  unassigned      YES unset  administratively down down   

Serial1/1                  unassigned      YES unset  administratively down down   

Serial1/2                  unassigned      YES unset  administratively down down   

Serial1/3                  unassigned      YES unset  administratively down down   

r4#

说明:广州路由器R4除了内网网段172.16.1.0/24之外,外网接口F0/1的地址24.1.1.1是DHCP动态获得的。

 

(2)查看R4的路由表:

r4#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is 24.1.1.2 to network 0.0.0.0

 

     172.16.0.0/24 is subnetted, 1 subnets

C       172.16.1.0 is directly connected, FastEthernet0/0

     24.0.0.0/24 is subnetted, 1 subnets

C       24.1.1.0 is directly connected, FastEthernet0/1

S*   0.0.0.0/0 [254/0] via 24.1.1.2

R

说明:R4将所有未知路由丢向Internet(R2)。

 

(3)测试R1到R3和R4的连通性:

r1#ping 23.1.1.3

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 56/101/136 ms

r1#

r1#

r1#ping 24.1.1.1

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 16/78/152 ms

r1#

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

 

(4)测试R1到北京内网和广州内网的连通性:

r1#ping 192.168.1.3

 

Type escape sequence to abort.

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

U.U.U

Success rate is 0 percent (0/5)

r1#

r1#

r1#ping 172.16.1.4

 

Type escape sequence to abort.

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

U.U.U

Success rate is 0 percent (0/5)

r1#

说明:虽然R1有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0、23.1.1.0和24.1.1.0,只能保证R1与R3和R4的通信,所以R1无法访问北京公司和广州公司的私有网段192.168.1.0与172.16.1.0。

 

(5)测试R5到北京内网和广州内网的连通性:

r5#ping 192.168.1.3

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

r5#ping 172.16.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:同上理由,R2只有公网路由12.1.1.0、23.1.1.0和24.1.10,只能保证R1与R3和R4的通信,所以上海到北京公司和广州公司无法通过私有地址互访。

 

 

(6)查看R2的路由表:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, Serial1/0

     24.0.0.0/24 is subnetted, 1 subnets

C       24.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

r2#

说明:因为R2模拟Internet路由器,所以R2没有写任何路由,R2的责任就只是保证R1与R3和R4能够通信即可。

 

3.配置Dynamic LAN-to-LAN VPN

(1)在R1上配置IKE(ISAKMP)策略:

r1(config)#crypto isakmp policy 1

r1(config-isakmp)#encryption 3des

r1(config-isakmp)#hash sha

r1(config-isakmp)#authentication pre-share

r1(config-isakmp)#group 2

r1(config-isakmp)#exit

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

 

(2)在R1上配置通配符认证方法:

r1(config)#crypto keyring abc      

r1(conf-keyring)#pre-shared-key address 0.0.0.0 0.0.0.0 key cisco123

r1(conf-keyring)#exit

 

r1(config)#crypto isakmp profile ppp

% A profile is deemed incomplete until it has match identity statements

r1(conf-isa-prof)#keyring abc

r1(conf-isa-prof)#match identity address 0.0.0.0

r1(conf-isa-prof)#exit

说明:配置了名为ppp的IPsec profile,并定义任何IP地址的认证密码为cisco123。

 

(3)在R1上配置IPsec transform:

r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r1(cfg-crypto-trans)#exit

说明:配置了transform-set为ccie,其中数据封装使用esp加3des加密,并且使用esp结合sha做hash计算,默认的IPsec mode为tunnel。

 

(4)在R1上定义dynamic map:

r1(config)#crypto dynamic-map dymap 5

r1(config-crypto-map)#set transform-set ccie

r1(config-crypto-map)#set isakmp-profile ppp

r1(config-crypto-map)#exit

说明:定义了名为dymap的dynamic map,并调用名为ppp的IPsec profile和名为ccie的transform-set。

 

(5)在R1上创建crypto map:

r1(config)#crypto map mymap 10 ipsec-isakmp dynamic dymap

说明:定义了名为mymap的Crypto-map ,与常规的Crypto-map不一样,这里的Crypto-map只需要与之前的dynamic crypto map.关联即可,并且配置到这里就结束了,可以看出,Hub端是不需要定义感兴趣流量的。

 

(6)在R1上将crypto map应用于接口:

r1(config)#int f0/0

r1(config-if)#crypto map mymap

r1(config-if)#

*Mar  1 00:42:19.807: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r1(config-if)#exit

说明:将crypto map应用在出接口F0/0上。

 

 

(7)使用常规LAN-to-LAN VPN的方式配置R3:

 

r3(config)#crypto isakmp policy 1

r3(config-isakmp)#encryption 3des

r3(config-isakmp)#hash sha

r3(config-isakmp)#authentication pre-share

r3(config-isakmp)#group 2

r3(config-isakmp)#exit 

r3(config)#crypto isakmp key 0 cisco123 address 12.1.1.1

r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r3(cfg-crypto-trans)#exit

 

r3(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 10.1.1.0 0.0.0.255

 

r3(config)#crypto map l2l 1 ipsec-isakmp

r3(config-crypto-map)#set peer 12.1.1.1

r3(config-crypto-map)#set transform-set ccie

r3(config-crypto-map)#match address 100

r3(config-crypto-map)#exit

r3(config)#

 

r3(config)#int s1/0

r3(config-if)#crypto map l2l

r3(config-if)#

*Mar  1 00:32:58.907: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r3(config-if)#

说明:R3上只需要配置常规的LAN-to-LAN VPN即可。

 

4.测试VPN

(1)从Hub端(上海公司路由器R5)向spoke端(北京公司192.168.1.0)发送流量:

r5#ping 192.168.1.3

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:Dynamic LAN-to-LAN VPN中,Hub端是不能事先向spoke端发起流量来触发自己的SA建立的,所以上海到北京的流量不能通过,Hub端的SA只能由spoke端发送流量来触发。

 

(2)从spoke端(北京公司192.168.1.0)向Hub端(上海公司路由器R5)发送流量:

r3#ping 10.1.1.5 source 192.168.1.3

 

Type escape sequence to abort.

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

Packet sent with a source address of 192.168.1.3

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 104/143/212 ms

r3#

说明:spoke端(北京公司192.168.1.0)向Hub端发送的流量成功穿越VPN。

 

 

(3)再次从Hub端(上海公司路由器R5)向spoke端(北京公司192.168.1.0)发送流量:

r5#ping 192.168.1.3        

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 120/189/344 ms

r5#

说明:当从spoke端向Hub端发送流量初始化后,Hub端到Spoke端的流量才能正常通过VPN。

(4)查看R1上IKE SA的peer:

r1#show crypto isakmp peers

Peer: 23.1.1.3 Port: 500 Local: 12.1.1.1

 Phase1 id: 23.1.1.3

r1#

说明:R1已经成功与R3建立IKE peer,说明IKE SA也应该成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3,目标端口号为500。

 

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

r1#show crypto isakmp sa   

r1#show crypto isakmp sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

12.1.1.1        23.1.1.3        QM_IDLE           1001    0 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

r1#

说明:IKE SA已经成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3,并且为激活状态,如为(delete)状态,则不可用。

 

(6)查看R1上的IPsec SA:

r1#show crypto ipsec sa

 

interface: FastEthernet0/0

    Crypto map tag: mymap, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

   current_peer 23.1.1.3 port 500

     PERMIT, flags={}

    #pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9

    #pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 0, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0x491B6C29(1226533929)

 

     inbound esp sas:

      spi: 0x51A991F7(1370067447)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 1, flow_id: SW:1, crypto map: mymap

        sa timing: remaining key lifetime (k/sec): (4483425/3495)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0x491B6C29(1226533929)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 2, flow_id: SW:2, crypto map: mymap

        sa timing: remaining key lifetime (k/sec): (4483425/3494)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

说明:R1上已经建立从本端10.1.1.0/24发往spoke端192.168.1.0/24的SA。

 

(7)查看R1的dynamic map相关参数:

r1#show crypto dynamic-map

Crypto Map Template"dymap" 5

        ISAKMP Profile: ppp

        No matching address list set.

        Security association lifetime: 4608000 kilobytes/3600 seconds

        PFS (Y/N): N

        Transform sets={

                ccie,

        }

 

r1#

说明:可以参考之前的实验分析当前的参数信息与作用。

 

(8)查看R3上IKE SA的peer:

r3#show crypto isakmp peers

Peer: 12.1.1.1 Port: 500 Local: 23.1.1.3

 Phase1 id: 12.1.1.1

r3#

说明:R3也与R1成功建立IKE peer。

 

(9)查看R3上的IKE SA(ISAKMP SA):

r3#show crypto isakmp sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

12.1.1.1        23.1.1.3        QM_IDLE           1001    0 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

r3#

说明:R3也与R1成功建立IKE SA。

 

(10)查看R3上的IPsec SA:

 

r3#show crypto ipsec sa

 

interface: Serial1/0

    Crypto map tag: l2l, local addr 23.1.1.3

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   current_peer 12.1.1.1 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9

    #pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 1, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb Serial1/0

     current outbound spi: 0x51A991F7(1370067447)

 

     inbound esp sas:

      spi: 0x491B6C29(1226533929)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 1, flow_id: SW:1, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4584630/3398)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0x51A991F7(1370067447)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 2, flow_id: SW:2, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4584630/3397)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r3#

说明:R3上的SA表示从本端192.168.1.0/24发往Hub端10.1.1.0/24的流量被加密。

 

 

5.配置广州公司路由器R4的VPN信息:

(1)使用常规LAN-to-LAN VPN的方式配置广州公司路由器R4:

r4(config)#crypto isakmp policy 1

r4(config-isakmp)#encryption 3des

r4(config-isakmp)#hash sha

r4(config-isakmp)#authentication pre-share

r4(config-isakmp)#group 2

r4(config-isakmp)#exit

r4(config)#crypto isakmp key 0 cisco123 address 12.1.1.1

r4(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r4(cfg-crypto-trans)#exit

r4(config)#access-list 100 permit ip 172.16.1.0 0.0.0.255 10.1.1.0 0.0.0.255

r4(config)#crypto map l2l 1 ipsec-isakmp

% NOTE: This new crypto map will remain disabled until a peer

        and a valid access list have been configured.

r4(config-crypto-map)#set peer 12.1.1.1

r4(config-crypto-map)#set transform-set ccie

r4(config-crypto-map)#match address 100

r4(config-crypto-map)#

r4(config-crypto-map)#exit

r4(config)#int f0/1

r4(config-if)#crypto map l2l

r4(config-if)#exit

r4(config)#

*Mar  1 01:01:24.907: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r4(config)#

说明:可以看出,spoke路由器R3与spoke路由器R4唯一不同的配置就是定义感兴趣流量,其它参数完全一致。

 

(2)从Hub端(上海公司路由器R5)向spoke端(广州公司172.16.1.0)发送流量:

r5#ping 172.16.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:和预计一样,Hub端是不能事先向spoke端发起流量来触发自己的SA建立的,所以上海公司向广州公司发送的流量不能通过。

 

(3)从spoke端(广州公司172.16.1.0)向Hub端(上海公司路由器R5)发送流量:

r4#ping 10.1.1.5 source 172.16.1.4

 

Type escape sequence to abort.

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

Packet sent with a source address of 172.16.1.4

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 100/167/300 ms

r4#

说明:spoke端(广州公司172.16.1.0)向Hub端发送的流量成功穿越VPN。

 

(4)再次从Hub端(上海公司路由器R5)向spoke端(广州公司172.16.1.0)发送流量:

r5#ping 172.16.1.4     

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 32/132/216 ms

r5#

说明:当从spoke端向Hub端发送流量初始化后,Hub端到Spoke端的流量才能正常通过VPN。

 

(5)查看R1上IKE 的peer与IKE SA:

r1#sh crypto isakmp peers

Peer: 23.1.1.3 Port: 500 Local: 12.1.1.1

 Phase1 id: 23.1.1.3

Peer: 24.1.1.1 Port: 500 Local: 12.1.1.1

 Phase1 id: 24.1.1.1

r1#

r1#sh crypto isakmp sa   

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

12.1.1.1        24.1.1.1        QM_IDLE           1002    0 ACTIVE

12.1.1.1        23.1.1.3        QM_IDLE           1001    0 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

 

r1#

说明:上海公司已经成功建立成广州公司之前的IKE SA。

 

(6)查看R1上的IPsec SA:

 

r1#show crypto ipsec sa      

 

interface: FastEthernet0/0

    Crypto map tag: mymap, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)

   current_peer 23.1.1.3 port 500

     PERMIT, flags={}

    #pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9

    #pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 0, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0x491B6C29(1226533929)

 

     inbound esp sas:

      spi: 0x51A991F7(1370067447)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 1, flow_id: SW:1, crypto map: mymap

        sa timing: remaining key lifetime (k/sec): (4483425/3012)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0x491B6C29(1226533929)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 2, flow_id: SW:2, crypto map: mymap

        sa timing: remaining key lifetime (k/sec): (4483425/3009)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (172.16.1.0/255.255.255.0/0/0)

   current_peer 24.1.1.1 port 500

     PERMIT, flags={}

    #pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9

    #pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 0, #recv errors 0

 

     local crypto endpt.: 12.1.1.1, remote crypto endpt.: 24.1.1.1

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0xD79E6F39(3617484601)

 

     inbound esp sas:

      spi: 0x378CAB62(931965794)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 3, flow_id: SW:3, crypto map: mymap

        sa timing: remaining key lifetime (k/sec): (4469278/3541)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0xD79E6F39(3617484601)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 4, flow_id: SW:4, crypto map: mymap

        sa timing: remaining key lifetime (k/sec): (4469278/3540)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

说明:Hub端与多个spoke端建立VPN之后,也应该有与多个spoke对应的SA来保证通信,所以当前Hub端路由器R1不仅可以看到发往北京公司192.168.1.0/24的SA,同时还能看见发往广州公司172.16.1.0/24的SA。

 

(7)查看广州路由器R4上IKE peer和IKE SA:

r4#show crypto isakmp peers

Peer: 12.1.1.1 Port: 500 Local: 24.1.1.1

 Phase1 id: 12.1.1.1

r4#

r4#show crypto isakmp sa   

r4#show crypto isakmp sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

12.1.1.1        24.1.1.1        QM_IDLE           1001    0 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

r4#

说明:R4也与R1成功建立IKE SA。

 

(8)查看R4上的IPsec SA:

r4#show crypto ipsec sa

 

interface: FastEthernet0/1

    Crypto map tag: l2l, local addr 24.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (172.16.1.0/255.255.255.0/0/0)

   remote ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0)

   current_peer 12.1.1.1 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9

    #pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 1, #recv errors 0

 

     local crypto endpt.: 24.1.1.1, remote crypto endpt.: 12.1.1.1

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/1

     current outbound spi: 0x378CAB62(931965794)

 

     inbound esp sas:

      spi: 0xD79E6F39(3617484601)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 1, flow_id: SW:1, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4410663/3507)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0x378CAB62(931965794)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 2, flow_id: SW:2, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4410663/3507)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r4#

说明:spoke端R4上的SA表示从本端172.16.1.0/24发往Hub端10.1.1.0/24的流量被加密。

 

6.测试NAT对Dynamic LAN-to-LAN VPN 的影响:

说明:其实,Dynamic LAN-to-LAN VPN和普通LAN-to-LAN VPN都受到同样的NAT影响。

(1)在R4上配置NAT:

r4(config)#int f0/0

r4(config-if)#ip nat inside

r4(config-if)#exit

 

r4(config)#int f0/1

r4(config-if)#ip nat outside

r4(config-if)#exit

r4(config)#

 

 

r4(config)#access-list 110 permit ip any any

r4(config)#ip nat inside source list 110 interface f0/1 overload

 

(2)测试Hub端R1发往北京公司(没有NAT)和广州公司(有NAT)的流量情况:

北京:

r5#ping 192.168.1.3        

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 144/178/236 ms

r5#

广州:

r5#ping 172.16.1.4      

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:和预期一样,IPsec流量不能到达配置了NAT的广州网络。

 

(3)查看广州路由器上的NAT转换情况:

r4#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

udp 24.1.1.1:500       24.1.1.1:500       12.1.1.1:500       12.1.1.1:500

icmp 24.1.1.1:13       172.16.1.4:13      10.1.1.5:13        10.1.1.5:13

r4#

说明:可以看见,广州公司172.16.1.4去往上海公司10.1.1.5的流量被NAT转换了,所以最后没能通过IPsec。

 

(4)配置R4使广州公司到上海公司的流量绕过NAT:

r4(config)#no access-list 110

r4(config)#access-list 110 deny ip 172.16.1.0 0.0.0.255 10.1.1.0 0.0.0.255

r4(config)#access-list 110 permit ip any any

r4(config)#exit

r4#clear ip nat translation *

r4#

说明:配置使广州公司流量172.16.1.0/24发往上海公司10.1.1.0/24的流量不被NAT转换。注,因为NAT转换正生效,所以清除一下NAT转换状态,否则也可能最后不通。

 

(5)再次从上海向北京公司和广州公司发送流量:

 

r5#ping 192.168.1.3           

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 88/163/332 ms

r5#

r5#ping 172.16.1.4

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 108/160/208 ms

r5#

说明:没有了NAT,上海公司到北京公司和广州公司的流量再次通过IPsec VPN隧道穿越了Internet,所以在IPsec VPN中,保证让需要被IPsec保护的流量不要被NAT转换,否则会出现意外。

 

 

                                                                   返回目录

Router-to-PIX Dynamic LAN-to-LAN VPN

在本小节,我们在Router与PIX之间配置Dynamic LAN-to-LAN VPN,即配置Router-to-PIX Dynamic LAN-to-LAN VPN。

 

配置Router-to-PIX Dynamic LAN-to-LAN VPN

 

说明:我们下面需要以上图的环境来演示Dynamic LAN-to-LAN VPN的效果,在图中,有上海、北京和广州共三个公司的网络,上海要同时和北京与广州的网络实现VPN通信,其中北京路由器R3的IP地址是预先知道的,即23.1.1.3,这样上海便能与北京轻松实现VPN,而广州的路由器R4的IP地址是通过DHCP获得的,事先无法知道IP是多少,在这样的情况下,我们通过配置Dynamic LAN-to-LAN VPN来使上海公司的PIX防火墙接受任何公司的VPN连接,而不管其IP地址是多少。

 

注:在上图中,即使VPN场点增加,在上海PIX防火墙上,不需要更改任何配置,都能接受对方的VPN连接。

 由于在PIX模拟器上无法完整模拟Router-to-PIX Dynamic LAN-to-LAN VPN,所以这里只给出PIX上Dynamic LAN-to-LAN VPN的配置,其它所有过程同Router-to-Router Dynamic LAN-to-LAN VPN一样,只不过这里的PIX防火墙代替了上海R1路由器的配置。

 

 PIX上Dynamic LAN-to-LAN VPN的配置:

pixfirewall(config)# crypto isakmp policy 1
pixfirewall(config-isakmp-policy)# encryption 3des
pixfirewall(config-isakmp-policy)# hash sha
pixfirewall(config-isakmp-policy)# authentication pre-share
pixfirewall(config-isakmp-policy)# group 2
pixfirewall(config-isakmp-policy)# exit
pixfirewall(config)#
pixfirewall(config)# crypto ipsec transform-set ccie esp-3des esp-sha-hmac
pixfirewall(config)# crypto dynamic-map dymap 1 set transform-set ccie
pixfirewall(config)# crypto dynamic-map dymap 1 set reverse-route
pixfirewall(config)# crypto map mymap 10 ipsec-isakmp dynamic dymap
pixfirewall(config)# crypto map mymap interface outside
pixfirewall(config)# isakmp enable outside
pixfirewall(config)# isakmp key cisco123 address 0.0.0.0 netmask 0.0.0.0


 

 

 在这里提供思科文档中心在PIX上配置Dynamic LAN-to-LAN VPN示例的原文链接:
 

 http://www.cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example091
86a00807ea936.shtml

 

                                                                   返回目录

Router-to-ASA Dynamic LAN-to-LAN VPN
在本小节,我们在Router与ASA之间配置Dynamic LAN-to-LAN VPN,即配置Router-to-ASA Dynamic LAN-to-LAN VPN。

配置Router-to-ASA Dynamic LAN-to-LAN VPN


说明:我们下面需要以上图的环境来演示Dynamic LAN-to-LAN VPN的效果,在图中,有上海、北京和广州共三个公司的网络,上海要同时和北京与广州的网络实现VPN通信,其中北京路由器R3的IP地址是预先知道的,即23.1.1.3,这样上海便能与北京轻松实现VPN,而广州的路由器R4的IP地址是通过DHCP获得的,事先无法知道IP是多少,在这样的情况下,我们通过配置Dynamic LAN-to-LAN VPN来使上海公司的ASA防火墙接受任何公司的VPN连接,而不管其IP地址是多少。
注:在上图中,即使VPN场点增加,在上海ASA防火墙上,不需要更改任何配置,都能接受对方的VPN连接。
 


由于在ASA模拟器上无法完整模拟Router-to-ASA Dynamic LAN-to-LAN VPN,所以这里只给出Router-to-ASA Dynamic LAN-to-LAN VPN的配置,其它所有过程同Router-to-Router Dynamic LAN-to-LAN VPN一样,只不过这里的ASA防火墙代替了上海R1路由器的配置。

重点说明:PIX与ASA的Dynamic LAN-to-LAN VPN配置完全相同。


Router-to-ASA Dynamic LAN-to-LAN VPN的配置:

ciscoasa(config)# crypto isakmp policy 1
ciscoasa(config-isakmp-policy)# encryption 3des
ciscoasa(config-isakmp-policy)# hash sha
ciscoasa(config-isakmp-policy)# authentication pre-share
ciscoasa(config-isakmp-policy)# group 2
ciscoasa(config-isakmp-policy)# exit
ciscoasa(config)#
ciscoasa(config)# crypto ipsec transform-set ccie esp-3des esp-sha-hmac
ciscoasa(config)# crypto dynamic-map dymap 1 set transform-set ccie
ciscoasa(config)# crypto dynamic-map dymap 1 set reverse-route
ciscoasa(config)# crypto map mymap 10 ipsec-isakmp dynamic dymap
ciscoasa(config)# crypto map mymap interface outside
ciscoasa(config)# isakmp enable outside
ciscoasa(config)# isakmp key cisco123 address 0.0.0.0 netmask 0.0.0.0
ciscoasa(config)#

在这里提供思科文档中心在ASA上配置Dynamic LAN-to-LAN VPN示例的原文链接:
 

 http://www.cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example091
86a00807ea936.shtml

 

 

                                                                    返回目录

Point-to-Point (p2p) GRE over IPsec

概述

 

        

 

 

 

 

 

 

在如上图所示的网络环境中,当上海和北京两个公司都拥有复杂结构的网络时,两端的网段可能希望能依靠某些动态路由协议来动态分发与传递,但即使在两端通过穿越Internet建立IPsec LAN-to-LAN VPN之后,两个网络之间却还是不能启用动态路由协议来交换路由信息,而只能通过ACL来匹配感兴趣流量指定去向对端的每一个网段;虽然IPsec LAN-to-LAN VPN能够在两端穿越Internet来建立隧道,但IPsec建立的隧道却不能用于传递动态路由协议信息,原因有如下两个:

1.IPsec建立的隧道是逻辑隧道,并不是真正的隧道,没有点对点连接的功能,换句话说,就是IPsec隧道两端的地址是原本的公网地址,这两个地址不可能在同一网段,而对于两端不同网段IP地址的路由器之间,不太可能建立动态路由协议邻居关系,如建立OSPF邻居或EIGRP邻居是办不到的。

2.IPsec建立的隧道在设计时就只支持IP单播,并且也不支持组播,所以IGP动态路由协议的流量不可能穿越IPsec隧道,并且也不支持非IP协议的流量。

 

基于上述原因,在使用IPsec建立VPN的两地网络之间,使用动态路由协议分发和传递路由信息变得难以实现,但是,这并不表示绝对不能实现,因为我们前面详细介绍过IPsec分为两种工作模式:Tunnel mode和Transport mode,当工作在Tunnel mode时,表示IPsec不仅实现数据保护功能,同时还自己实现隧道功能,从而实现完整的VPN功能,这就是IPsec能在自己独立工作而不依靠其它任何技术时能够实现的两个功能,但正时因为IPsec自己的隧道功能的局限性才使得不能运行动态路由协议;除上述之外,我们可以只使用IPsec的数据保护功能,继而引入其它隧道技术而不使用IPsec自身的隧道功能,这样就有办法避免IPsec自己隧道功能的局限性,从而利用其它隧道技术的能力在VPN之间实现动态路由协议的目的,如果只需要使用IPsec的数据保护功能而不使用其自身的隧道功能,这就要求IPsec工作在Transport mode。

如果最后选择工作在Tunnel mode,那么数据包就会再额外增加20字节,其实在p2p GRE over IPsec下,IPsec的两个模式都是可以的,网络都可以正常通信,但Transport mode有时会有一些技术局限性,所以在p2p GRE over IPsec时,都还是保持使用Tunnel mode。

 

当我们将IPsec配置在Transport mode时,这就丢失了隧道功能,也就不能完成VPN功能,所以Transport mode下的IPsec需要引入其它隧道协议来配合完成隧道功能,这时我们就完全可以寻找一个能够传递IP组播与动态路由信息的隧道协议,可选的隧道协议有GRE或VTI,很明显,我们青睐于GRE隧道协议,它完全能够满足我们的要求,不仅能够在配合IPsec使用时即能保护数据之外,还能够为我们提供IP组播与动态路由协议的传递功能,这样的使用称为p2p GRE over IPsec,使用了GRE隧道协议之后,之前的网络就可以演变为如下情况:

 

 上图使用GRE之后的效果是大家应该熟悉和了解的,GRE在穿越Internet后建立了可用于传递IP组播与动态路由协议的隧道,并且应该注意到,GRE隧道两端的IP地址还是同网段的,所以这就更保证了IGP动态路由协议的稳定运行。

 在此还需要说明的是,网络中点到点(Point-to-Point)的链路,通常只能有两个端点,只能有两个设备互联,包括在路由协议中,任何一方只能看到一个邻居,点到点链路上的设备只能和其它一台设备通信,不能和两台以上设备通信。在前面介绍的GRE隧道中,大家应该还记得,GRE两端的设备要建立隧道,必须要有一个事先被对方知道的并且在前端网络(通常是Internet)上是可路由的固定IP地址,双方需要通过对方的可路由IP地址来找到对方从而建立GRE隧道,请试想一下,如果要建立GRE隧道的设备双方连固定IP地址都没有,换句话说就是连对方的IP地址都不知道,还能建立GRE隧道吗?答案当然是非常难,因为你连对方的IP地址都不知道,也就意味着你根本不知道需要和谁建立GRE隧道,所以在IP地址不确定的双方建立GRE隧道会有一定难度,但这并不是一个绝对不能解决的问题,解决的方法会有,但需要看具体情况,如下:

如果是单独建立p2p GRE隧道,当双方的IP地址无法确定时(如通过DHCP获得),这是不可能的。

如果建立的p2p GRE隧道运行在IPsec之上,也就是p2p GRE over IPsec,那么可以允许IP地址是动态的,但条件是必须有一方是固定的静态IP,不能双方同时都为动态无法确定的IP。

当双方都为固定的静态IP时,建立的p2p GRE over IPsec称为Static p2p GRE over IPsec,而如果一方静态IP一方动态IP,这样的p2p GRE over IPsec称为Dynamic p2p GRE over IPsec。

在Dynamic p2p GRE over IPsec的环境下,既然一方是静态IP而另一方是动态IP,那么又怎么能够建立GRE隧道呢?动态IP方可以轻松找到静态IP方从而将数据发到对方,那么静态IP方又如何找到动态IP方呢?这个答案很简单,既然动态IP方能够找到静态IP方,那么静态IP方就当然知道动态IP方在哪,这个前提就是先让动态IP方向静态IP方发送数据,静态IP方根据动态IP方发来的数据的源IP地址,马上就能发现对方的IP地址,所以在Dynamic p2p GRE over IPsec环境下,必须让动态IP方先向静态IP方发送数据,否则GRE隧道是不可能建立的,那么后面的VPN也就不可能通了。我们的做法通常就是到动态IP方的设备上向静态IP方发送ICMP包或者其它数据包,发出的数据包首先会促发ISAKMP的协商数据包,当数据包发向静态IP方时,那么静态IP方就根据动态IP方发来的ISAKMP的协商数据包的源IP地址,从而知道对方的真正IP地址。

因为动态IP方没有固定的IP地址,所以在建立p2p GRE隧道时,难以确定自己的源点地址,所以这时可以为该路由器单独创建一个Loopback地址,这个地址通常可以是任意地址,但最好分配一个私有IP地址,然后将本端GRE的源点定义为该Loopback的地址,其实这个IP地址对于静态IP方来说是不可达的,但没关系,因为最后数据的地址并不会使用这个地址,只是个形式而已,所以最终p2p GRE over IPsec照样能成功,对方动态方作为GRE源点的Loopback地址,静态方需要写条路由指向自己的公网出口,这是需要做的,虽然从公网是不可达的。

 

在配置p2p GRE over IPsec时,和配置常规LAN-to-LAN VPN一样,还需要配置Crypto map,因为p2p GRE over IPsec分为两种情况,所以在Static p2p GRE over IPsec下,需要配置static map,而在Dynamic p2p GRE over IPsec下,则需要在静态IP方配置dynamic map,在动态IP方还是配置static map;对于p2p GRE over IPsec下的Crypto map应用方法,根据IOS的不同,应用方法有所不同,在IOS Release 12.2(13)T之前的版本,Crypto map必须同时应用于物理接口和GRE隧道接口下,在IOS Release 12.2(13)T以及之后的版本,Crypto map只在物理接口下应用即可,不需要在GRE隧道接口下应用了。

 

 

注:

p2p GRE over IPsec能够支持IP单播,IP组播以及非IP协议的传递功能。

即使是p2p GRE over IPsec模式,但IPsec部分仍然是LAN-to-LAN VPN,所以您可以选择使用普通LAN-to-LAN VPN或Dynamic LAN-to-LAN VPN(DyVPN),这取决与你的分支场点的IP地址是固定的还是不可预知的,从而选择是配置Static p2p GRE over IPsec还是Dynamic p2p GRE over IPsec。

在Dynamic p2p GRE over IPsec环境下,必须先从动态IP方向静态IP方发送数据,否则GRE隧道无法建立,VPN无法完成。

因为GRE Tunnel只支持路由器,不支持集中器和PIX以及ASA,所以也就谈不上在PIX和ASA上配置p2p GRE over IPsec了。

在IOS Release 12.2(13)T之前的版本,Crypto map必须同时应用于物理接口和GRE隧道接口下。

在IOS Release 12.2(13)T以及之后的版本,Crypto map只在物理接口下应用即可,不需要在GRE隧道接口下应用了。

p2p GRE over IPsec的IPsec部分和LAN-to-LAN VPN一样,但唯一的区别就是定义的感兴趣流量,定义的感兴趣流量是双方用来建立GRE隧道的公网IP地址,并且协议为GRE,而不是内网网段,因为内网网段是要靠路由协议来传递的。

通过p2p GRE over IPsec通信的内网流量不会被物理接口的NAT影响,但会受GRE接口NAT的影响。

一方静态IP和一方动态IP之间建立p2p GRE接口时,如果不配置p2p GRE over IPsec,那么p2p GRE接口是不能工作,毫无用处的。

                                                                    返回目录

Static p2p GRE over IPsec

在本小节,我们在Router与Router之间配置Static p2p GRE over IPsec,因为GRE Tunnel只支持路由器,不支持集中器和PIX以及ASA,所以也就谈不上在PIX和ASA上配置p2p GRE over IPsec了。

 

配置Static p2p GRE over IPsec

 

 

说明:我们下面需要以上图的环境来演示Static p2p GRE over IPsec的效果,在图中,有上海和北京两个公司的网络,上海要和北京的网络实现VPN通信, 并且需要通过动态路由协议EIGRP交换双方内网的网段信息,所以我们需要在两地路由器之间建立p2p GRE隧道,然后再使用IPsec来保护隧道中的数据,这样即达到了路由协议交换路由的目的,又让数据得到了保护,还实现了VPN功能,一举三得;因为两地路由器连接Internet的接口都有固定公网IP地址,所以我们配置Static p2p GRE over IPsec。

 

1.配置基础网络环境

(1)配置R1:

r1(config)#int f0/0

r1(config-if)#ip add 12.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#int f0/1

r1(config-if)#ip add 10.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

说明:配置R1的接口地址,并写默认路由指向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的接口地址,因为R2模拟Internet,R2只需要有公网路由12.1.1.0、23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。

 

(3)配置R3:

r3(config)#int f0/0

r3(config-if)#ip add 192.168.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的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2。

 

(4)配置R4:

r4(config)#int f0/0

r4(config-if)#ip add 192.168.1.4 255.255.255.0

r4(config-if)#no sh

r4(config-if)#exit

 

r4(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.3

说明:配置R4的接口地址,并写默认路由指向北京公司出口路由器R3。

 

(5)配置R5:

r5(config)#int f0/1

r5(config-if)#ip add 10.1.1.5 255.255.255.0

r5(config-if)#no sh

r5(config-if)#exit

 

r5(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

说明:配置R5的接口地址,并写默认路由指向上海公司出口路由器R1。

 

2.测试基础网络环境

(1)测试R1到R3的连通性:

r1#ping 23.1.1.3

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 28/62/112 ms

r1#

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

 

(2)测试R1到R4的连通性:

r1#ping 192.168.1.4

 

Type escape sequence to abort.

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

U.U.U

Success rate is 0 percent (0/5)

r1#

说明:虽然R1有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与R3的通信,所以R1无法访问北京公司的私有网段192.168.1.0。

 

(3)测试R5到R4的连通性:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:同上理由,R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与R3的通信,所以上海和北京公司无法通过私有地址互访。

(4)查看R2的路由表:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

r2#

说明:因为R2模拟Internet路由器,所以R2没有写任何路由,R2的责任就只是保证R1与R3能够通信即可。

 

3.配置Static p2p GRE over IPsec

(1)在R1上配置终点为R3的p2p GRE隧道:

r1(config)#interface tunnel 1

r1(config-if)#ip address 1.1.1.1 255.255.255.0

r1(config-if)#tunnel source 12.1.1.1

r1(config-if)#tunnel destination 23.1.1.3

r1(config-if)#exit

说明:R1到R3的p2p GRE隧道接口号为1,隧道地址为1.1.1.1,隧道的源点为外网接口地址12.1.1.1,隧道的终点为R3的外网接口地址23.1.1.3,隧道起点和终点地址在Internet上是可路由的。

 

(2)在R3上配置终点为R1的p2p GRE隧道:

r3(config)#int tunnel 3

r3(config-if)#ip address 1.1.1.3 255.255.255.0

r3(config-if)#tunnel source 23.1.1.3

r3(config-if)#tunnel destination 12.1.1.1

r3(config-if)#exit

说明:R3到R1的p2p GRE隧道接口号为3,隧道地址为1.1.1.3,隧道的源点为外网接口地址23.1.1.3,隧道的终点为R1的外网接口地址12.1.1.1,隧道起点和终点地址在Internet上是可路由的。

 

(3)在R1上配置普通LAN-to-LAN VPN参数:

r1(config)#crypto isakmp policy 1

r1(config-isakmp)#encryption 3des

r1(config-isakmp)#hash sha

r1(config-isakmp)#authentication pre-share

r1(config-isakmp)#group 2

r1(config-isakmp)#exit

 

r1(config)#crypto isakmp key 0 cisco123 address 23.1.1.3

 

r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r1(cfg-crypto-trans)#exit

 

 

r1(config)#access-list 100 permit gre host 12.1.1.1 host 23.1.1.3

 

r1(config)#crypto map l2l 1 ipsec-isakmp

r1(config-crypto-map)#set peer 23.1.1.3

r1(config-crypto-map)#set transform-set ccie

r1(config-crypto-map)#match address 100

r1(config-crypto-map)#exit

说明:IPsec部分和普通LAN-to-LAN VPN一样,但唯一的区别就是定义的感兴趣流量,定义的感兴趣流量是双方用来建立GRE隧道的公网IP地址,并且协议为GRE,而不是内网网段,因为内网网段是要靠路由协议来传递的。

 

(4)在R1上应用crypto map:

因为R1的IOS版本高于12.2(13)T,如下:

r1#sh version

Cisco IOS Software, 2600 Software (C2691-ADVENTERPRISEK9_IVS-M), Version 12.4(9)T7, RELEASE SOFTWARE (fc3)

Technical Support: http://www.cisco.com/techsupport

Copyright (c) 1986-2008 by Cisco Systems, Inc.

Compiled Thu 10-Jan-08 16:20 by prod_rel_team

 

ROM: ROMMON Emulation Microcode

ROM: 2600 Software (C2691-ADVENTERPRISEK9_IVS-M), Version 12.4(9)T7, RELEASE SOFTWARE (fc3)

 

r1 uptime is 18 minutes

System returned to ROM by unknown reload cause - suspect boot_data[BOOT_COUNT] 0x0, BOOT_COUNT 0, BOOTDATA 19

System image file is "tftp://255.255.255.255/unknown"

 

 

This product contains cryptographic features and is subject to United

States and local country laws governing import, export, transfer and

use. Delivery of Cisco cryptographic products does not imply

third-party authority to import, export, distribute or use encryption.

Importers, exporters, distributors and users are responsible for

compliance with U.S. and local country laws. By using this product you

agree to comply with applicable laws and regulations. If you are unable

to comply with U.S. and local laws, return this product immediately.

 

A summary of U.S. laws governing Cisco cryptographic products may be found at:

http://www.cisco.com/wwl/export/crypto/tool/stqrg.html

 

If you require further assistance please contact us by sending email to

export@cisco.com.

 

Cisco 2691 (R7000) processor (revision 0.1) with 124928K/6144K bytes of memory.

Processor board ID XXXXXXXXXXX

R7000 CPU at 160MHz, Implementation 39, Rev 2.1, 256KB L2, 512KB L3 Cache

2 FastEthernet interfaces

4 Serial interfaces

DRAM configuration is 64 bits wide with parity enabled.

55K bytes of NVRAM.

16384K bytes of ATA System CompactFlash (Read/Write)

 

Configuration register is 0x2142

 

r1#

 

所以crypto map只需要应用在物理接口下即可:

r1(config)#int f0/0

r1(config-if)#crypto map l2l

r1(config-if)#exit

r1(config)#

*Mar  1 00:21:45.171: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r1(config)#

 

(5)同R1的方法配置R3的IPsec部分:

 

r3(config)#crypto isakmp policy 1

r3(config-isakmp)#encryption 3des

r3(config-isakmp)#hash sha

r3(config-isakmp)#authentication pre-share

r3(config-isakmp)#group 2

r3(config-isakmp)#exit 

r3(config)#crypto isakmp key 0 cisco123 address 12.1.1.1

r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r3(cfg-crypto-trans)#exit

 

r3(config)#access-list 100 permit gre host 23.1.1.3 host 12.1.1.1

r3(config)#

 

r3(config)#crypto map l2l 1 ipsec-isakmp

r3(config-crypto-map)#set peer 12.1.1.1

r3(config-crypto-map)#set transform-set ccie

r3(config-crypto-map)#match address 100

r3(config-crypto-map)#exit

r3(config)#

 

r3(config)#int f0/1

r3(config-if)#crypto map l2l

r3(config-if)#

*Mar  1 00:32:58.907: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON

r3(config-if)#

说明:同R1的方法配置R3的IPsec部分。

 

 

4 .测试p2p GRE over IPsec

(1)从R1向R3方发送流量激活隧道:

r1#ping 1.1.1.3

 

Type escape sequence to abort.

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

.!!!!

Success rate is 80 percent (4/5), round-trip min/avg/max = 200/227/260 ms

r1#

说明:因为是static p2p GRE over IPsec,流量在任何一方发起都可以,从结果中可以看出,GRE隧道目前正常。

 

(2)在R1上查看IKE SA的peer:

r1#show crypto isakmp peers

Peer: 23.1.1.3 Port: 500 Local: 12.1.1.1

 Phase1 id: 23.1.1.3

r1#

说明:R1已经成功与R3建立IKE peer,说明IKE SA也应该成功建立,建立时R1本地源地址为12.1.1.1,目标为23.1.1.3,而不是GRE隧道的地址。

 

 

(3)在R1上查看IKE SA(ISAKMP SA):

r1#show crypto isakmp sa

IPv4 Crypto ISAKMP SA

dst             src             state          conn-id slot status

23.1.1.3        12.1.1.1        QM_IDLE           1001    0 ACTIVE

 

IPv6 Crypto ISAKMP SA

 

r1#

说明:IKE SA状态也正常。

 

 

 

(4)查看R1上的IPsec SA:

 

r1#show crypto ipsec sa

 

interface: FastEthernet0/0

    Crypto map tag: l2l, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (12.1.1.1/255.255.255.255/47/0)

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

   current_peer 23.1.1.3 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4

    #pkts decaps: 4, #pkts decrypt: 4, #pkts verify: 4

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 1, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0xD3601778(3546290040)

 

     inbound esp sas:

      spi: 0x319BADC2(832286146)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 1, flow_id: SW:1, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4564467/3542)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0xD3601778(3546290040)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 2, flow_id: SW:2, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4564467/3537)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

说明:IPsec SA也显示为活动状态,并且加密的数据包就是我们指定的双方建立GRE时用到的公网地址。

 

(5)测试上海公司10.1.1.0到北京公司192.168.1.0的双方内网通信情况:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:因为目前的IPsec只加密了双方建立GRE时用到的公网地址,而不包含双方内网地址,所以双方内网通信不成功,但这就是我们要使用动态协议的理由。

 

5.在双方配置动态路由协议EIGRP

(1)在R1上配置EIGRP:

r1(config)#router eigrp 1

r1(config-router)#no auto-summary

r1(config-router)#network 1.1.1.1 0.0.0.0

r1(config-router)#network 10.1.1.1 0.0.0.0

r1(config-router)#exit

说明:在R1上配置EIGRP,AS号为1,并且将内网网段10.1.1.0和GRE接口放进EIGRP进程,以便通过GRE隧道和北京公司建立EIGRP邻居,从而交换双方内网网段信息。

 

(2)在R3上配置EIGRP:

r3(config)#router eigrp 1

r3(config-router)#no auto-summary

r3(config-router)#network 1.1.1.3 0.0.0.0

r3(config-router)#network 192.168.1.3 0.0.0.0

r3(config-router)#

说明:在R3上配置EIGRP,AS号为1,并且将内网网段192.168.1.0和GRE接口放进EIGRP进程,以便通过GRE隧道和北京公司建立EIGRP邻居,从而交换双方内网网段信息。

 

(3)在R1上查看EIGRP邻居:

r1#show ip eigrp neighbors

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

                                            (sec)         (ms)       Cnt Num

0   1.1.1.3                 Tu1               14 00:00:42  264  5000  0  4

r1#

说明:R1已经通过GRE接口与R3正常建立EIGRP邻居。

 

(4)在R1上查看路由表:

r1#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is 12.1.1.2 to network 0.0.0.0

 

     1.0.0.0/24 is subnetted, 1 subnets

C       1.1.1.0 is directly connected, Tunnel1

     10.0.0.0/24 is subnetted, 1 subnets

C       10.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

D    192.168.1.0/24 [90/297246976] via 1.1.1.3, 00:00:39, Tunnel1

S*   0.0.0.0/0 [1/0] via 12.1.1.2

r1#

说明:R1已经通过EIGRP正常学到北京公司的内网网段信息。

 

(5)查看R3上的EIGRP邻居和路由表信息:

r3#show ip eigrp neighbors

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

                                            (sec)         (ms)       Cnt Num

0   1.1.1.1                 Tu3               13 00:01:15 1320  5000  0  2

r3#

r3#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is 23.1.1.2 to network 0.0.0.0

 

     1.0.0.0/24 is subnetted, 1 subnets

C       1.1.1.0 is directly connected, Tunnel3

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     10.0.0.0/24 is subnetted, 1 subnets

D       10.1.1.0 [90/297246976] via 1.1.1.1, 00:01:16, Tunnel3

C    192.168.1.0/24 is directly connected, FastEthernet0/0

S*   0.0.0.0/0 [1/0] via 23.1.1.2

r3#

说明:R3也已经通过GRE接口与R1正常建立了EIGRP邻居,并且也学到了上海公司的内网网段信息。

 

(6)再次测试上海公司10.1.1.0到北京公司192.168.1.0的双方内网通信情况:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 28/118/220 ms

r5#

说明:因为双方EIGRP邻居正常,路由正常,所以双方内网通信正常,达到了我们最终的要求。

 

 

(7)查看上海公司向北京公司发送数据包的路径走向:

r5#traceroute 192.168.1.4

 

Type escape sequence to abort.

Tracing the route to 192.168.1.4

 

  1 10.1.1.1 32 msec 96 msec 24 msec

  2 1.1.1.3 192 msec 124 msec 168 msec

  3 192.168.1.4 204 msec *  312 msec

r5#

说明:从上海公司发向北京公司的数据包到达上海的路由器后,可以看出中间只有一跳,从GRE隧道过去就到达了目的地,说明中间的多跳已经GRE隧道取代为一跳了。

 

(8)测试北京公司192.168.1.0到上海公司10.1.1.0的双方内网通信情况:

r4#ping 10.1.1.5

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 40/112/244 ms

r4#

说明:双方内网通信正常,没有任何问题。

 

6.测试NAT对p2p GRE over IPsec的影响:

(1)在R1上配置NAT:

r1(config)#interface f0/1

r1(config-if)#ip nat inside

r1(config-if)#exit

 

r1(config)#int f0/0

r1(config-if)#ip nat outside

 

r1(config)#access-list 111 permit ip any any

r1(config)#ip nat inside source list 111 interface f0/0 overload

 

说明:在上海公司路由器R1上开启NAT,内网接口F0/1为inside,外网接口F0/0为outside,并且将所有内网流量通过NAT将源IP转换为外网接口F0/0的地址。

 

(2)从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 56/133/240 ms

r5#

说明:因为从上海公司到北京公司的流量都是从GRE隧道过去的而不是从物理接口F0/0过去的,所以在F0/0上配置的NAT没有对上海公司到北京公司的流量产生影响,所以最后流量正常到达北京。

 

 

(3)在R2和R4上开放VTY线路登录:

r2(config)#line vty 0 15

r2(config-line)#no logi

r2(config-line)#exit

r2(config)#

 

r4(config)#line vty 0 15

r4(config-line)#no log

r4(config-line)#no logi

r4(config-line)#no login

r4(config-line)#exit

 

(4)测试从上海公司R5到北京公司R4的流量以及源IP情况:

r5#telnet 192.168.1.4

Trying 192.168.1.4 ... Open

 

r4>

r4>who

    Line       User       Host(s)              Idle       Location

   0 con 0                idle                 00:00:11  

* 66 vty 0                idle                 00:00:00 10.1.1.5

 

  Interface    User               Mode         Idle     Peer Address

 

r4>

说明:上海公司R5到北京公司R4的流量的源IP地址还是10.1.1.5,和原始IP一样不变,所以两个通过p2p GRE over IPsec通信的内网流量没有被物理接口的NAT影响。

 

(5)测试从上海公司R5到R2的流量以及源IP情况:

r5#telnet 12.1.1.2

Trying 12.1.1.2 ... Open

 

r2>

r2>who

    Line       User       Host(s)              Idle       Location

   0 con 0                idle                 00:02:08  

* 66 vty 0                idle                 00:00:00 12.1.1.1

 

  Interface    User               Mode         Idle     Peer Address

 

r2>

说明:上海公司R5到R2的流量的源IP是12.1.1.1,说明R5到R2的流量的源IP被物理接口的NAT转换成了物理接口的IP地址。

 

(6)查R1上的NAT转换表,EIGRP邻居以及路由表情况:

r1#sh ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

tcp 12.1.1.1:64840     10.1.1.5:64840     12.1.1.2:23        12.1.1.2:23

r1#

 

r1#sh ip eig neighbors

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

                                            (sec)         (ms)       Cnt Num

0   1.1.1.3                 Tu1               14 00:06:44  308  5000  0  4

r1#

r1#

r1#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is 12.1.1.2 to network 0.0.0.0

 

     1.0.0.0/24 is subnetted, 1 subnets

C       1.1.1.0 is directly connected, Tunnel1

     10.0.0.0/24 is subnetted, 1 subnets

C       10.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

D    192.168.1.0/24 [90/297246976] via 1.1.1.3, 00:06:42, Tunnel1

S*   0.0.0.0/0 [1/0] via 12.1.1.2

r1#

说明:从以上输出可以看出,物理接口上开启的NAT没有对靠p2p GRE over IPsec通信的流量造成任何影响,

 

(7)将NAT改为在GRE接口上开启:

r1(config)#no ip nat inside source list 111 interface f0/0 overload

r1(config)#int f0/0

r1(config-if)#no ip nat outside

 

r1(config)#int tunnel 1

r1(config-if)#ip nat outside

 

r1(config)#ip nat inside source list 111 interface tunnel 1 overload

 

 

(8)在GRE接口上开启NAT后,再次从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4            

 

Type escape sequence to abort.

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

.....

Success rate is 0 percent (0/5)

r5#

说明:因为GRE接口上的NAT会对通过p2p GRE over IPsec通信的内网流量造成影响,所以上海公司R5向北京公司R4发送流量失败。

 

(9)查看R1上的EIGRP邻居,路由表,以及R3上的EIGRP邻居:

 

r1#sh ip eig neighbors

IP-EIGRP neighbors for process 1

H   Address                 Interface       Hold Uptime   SRTT   RTO  Q  Seq

                                            (sec)         (ms)       Cnt Num

0   1.1.1.3                 Tu1               11 00:01:17    1  5000  1  0

r1#

 

r1#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is 12.1.1.2 to network 0.0.0.0

 

     1.0.0.0/24 is subnetted, 1 subnets

C       1.1.1.0 is directly connected, Tunnel1

     10.0.0.0/24 is subnetted, 1 subnets

C       10.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

S*   0.0.0.0/0 [1/0] via 12.1.1.2

r1#

 

 

R3:

r3#sh ip eig neighbors

IP-EIGRP neighbors for process 1

r3#

说明:虽然R1上还能看见EIGRP邻居,因为EIGRP邻居是单向的,你以为对方是邻居,但对方不一定认为你是邻居,而且R1自己的路由表也没有了对方的内网网段信息,从R3可以看到,因为对方GRE接口上的NAT,所以和对方的EIGRP邻居已经丢失。

 

(10)改变NAT的感兴趣流量,将通过p2p GRE over IPsec通信的内网流量绕过NAT:

r1(config)#no access-list 111

r1(config)#access-list 111 deny ip host 1.1.1.1 any

r1(config)#access-list 111 deny ip 10.1.1.0 0.0.0.255 any

r1(config)#access-list 111 permit ip any any

说明:定义的感兴趣流量必须排除本端GRE接口地址以及本端内网地址出去的流量,但目的地址是多少,这个,本人也无法得知,谢谢。

 

(11)排除本端GRE接口地址以及本端内网地址出去的流量被NAT转换后,再次从上海公司R5向北京公司R4发送流量:

r5#ping 192.168.1.4            

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 168/218/320 ms

r5#

说明:通过p2p GRE over IPsec通信的内网流量被NAT排除后,双方内网流量恢复通信,也更加说明了通过p2p GRE over IPsec通信的内网流量虽然不会被物理接口的NAT影响,但会受GRE接口NAT的影响。

 

7.测试IPsec Mode

说明:IPsec默认的mode是Tunnel mode,这个应该是大家都不会有疑问的。

1)测试将R3的IPsec Mode改为transport mode:

r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r3(cfg-crypto-trans)#mode transport

 

 

清除双方SA:

r3#clear crypto sa

r3#

说明:改变mode后,清除双方SA以便重新连接。

 

(2)查看R3当前的IPsec Mode:

r3#sh crypto ipsec sa

 

interface: FastEthernet0/1

    Crypto map tag: l2l, local addr 23.1.1.3

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (23.1.1.3/255.255.255.255/47/0)

   remote ident (addr/mask/prot/port): (12.1.1.1/255.255.255.255/47/0)

   current_peer 12.1.1.1 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 275, #pkts encrypt: 275, #pkts digest: 275

    #pkts decaps: 274, #pkts decrypt: 274, #pkts verify: 274

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 3, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/1

     current outbound spi: 0xAC4D735E(2890756958)

 

     inbound esp sas:

      spi: 0x453ACED4(1161481940)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 5, flow_id: SW:5, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4435093/3563)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0xAC4D735E(2890756958)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Tunnel, }

        conn id: 6, flow_id: SW:6, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4435092/3563)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r3#

说明:虽然已经将R3的IPsec Mode改为transport mode,但还是工作在Tunnel mode,因为对方没有改,只有双方都改时,才会改变最终工作的mode。

 

(3)测试双方内网的通信情况:

 

r5#ping 192.168.1.4            

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 128/216/308 ms

r5#

说明:因为双方的工作mode还是一致的,所以双方内网的通信情况正常。

 

(4)再将R1的IPsec Mode改为transport mode:

r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac

r1(cfg-crypto-trans)#mode transport

 

 

清除双方SA:

r1#clear crypto sa

r1#

说明:将R1的IPsec Mode也改为了transport mode。

 

(5)再次查看R1和R3现在的IPsec Mode:

R1:

r1#sh crypto ipsec sa

 

interface: FastEthernet0/0

    Crypto map tag: l2l, local addr 12.1.1.1

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (12.1.1.1/255.255.255.255/47/0)

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

   current_peer 23.1.1.3 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 1080, #pkts encrypt: 1080, #pkts digest: 1080

    #pkts decaps: 1079, #pkts decrypt: 1079, #pkts verify: 1079

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 4, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0

     current outbound spi: 0xB08775D1(2961667537)

 

     inbound esp sas:

      spi: 0xCD9A6D66(3449449830)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Transport, }

        conn id: 11, flow_id: SW:11, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4380219/3470)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0xB08775D1(2961667537)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Transport, }

        conn id: 12, flow_id: SW:12, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4380219/3469)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r1#

 

R3:

r3#sh crypto ipsec sa

 

interface: FastEthernet0/1

    Crypto map tag: l2l, local addr 23.1.1.3

 

   protected vrf: (none)

   local  ident (addr/mask/prot/port): (23.1.1.3/255.255.255.255/47/0)

   remote ident (addr/mask/prot/port): (12.1.1.1/255.255.255.255/47/0)

   current_peer 12.1.1.1 port 500

     PERMIT, flags={origin_is_acl,}

    #pkts encaps: 1231, #pkts encrypt: 1231, #pkts digest: 1231

    #pkts decaps: 1231, #pkts decrypt: 1231, #pkts verify: 1231

    #pkts compressed: 0, #pkts decompressed: 0

    #pkts not compressed: 0, #pkts compr. failed: 0

    #pkts not decompressed: 0, #pkts decompress failed: 0

    #send errors 1, #recv errors 0

 

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

     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/1

     current outbound spi: 0xCD9A6D66(3449449830)

 

     inbound esp sas:

      spi: 0xB08775D1(2961667537)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Transport, }

        conn id: 11, flow_id: SW:11, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4396862/3453)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     inbound ah sas:

 

     inbound pcp sas:

 

     outbound esp sas:

      spi: 0xCD9A6D66(3449449830)

        transform: esp-3des esp-sha-hmac ,

        in use settings ={Transport, }

        conn id: 12, flow_id: SW:12, crypto map: l2l

        sa timing: remaining key lifetime (k/sec): (4396861/3453)

        IV size: 8 bytes

        replay detection support: Y

        Status: ACTIVE

 

     outbound ah sas:

 

     outbound pcp sas:

r3#

说明:将双方的IPsec Mode改为transport mode后,最终双方工作在了transport mode,在此还需要强烈说明和提醒,只有在p2p GRE over IPsec的情况下,IPsec Mode的工作模式才能是transport mode,否则即使强制改变双方的mode为transport mode,最终双方也会依然工作在Tunnel mode。

 

 

(6)再次测试双方内网的通信情况:

r5#ping 192.168.1.4            

 

Type escape sequence to abort.

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

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 52/117/212 ms

r5#

说明:虽然现在双方的IPsec Mode为transport mode,但不影响流量,所以双方内网的通信情况依然正常。

 

 

 

                                                                    返回目录

Dynamic p2p GRE over IPsec

在上一小节中,我们介绍了Router与Router之间配置Static p2p GRE over IPsec,在本小节中,我们来介绍Router与Router之间配置Dynamic p2p GRE over IPsec。

 

配置Dynamic p2p GRE over IPsec

 

 

说明:我们下面需要以上图的环境来演示Dynamic p2p GRE over IPsec的效果,在图中,有上海和北京两个公司的网络,上海要和北京的网络实现VPN通信, 并且需要通过动态路由协议EIGRP交换双方内网的网段信息,所以我们需要在两地路由器之间建立p2p GRE隧道,然后再使用p2p GRE over IPsec来保护隧道中的数据,但是两地路由器中北京路由器连接Internet的接口没有固定公网IP地址,为DHCP动态获得的IP,这就给GRE隧道的建立带来了一定的麻烦,所以我们配置Dynamic p2p GRE over IPsec来解决其中的问题。

 

1.配置基础网络环境

(1)配置R1:

r1(config)#int f0/0

r1(config-if)#ip add 12.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#int f0/1

r1(config-if)#ip add 10.1.1.1 255.255.255.0

r1(config-if)#no sh

r1(config-if)#exit

 

r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

说明:配置R1的接口地址,并写默认路由指向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)#service dhcp

r2(config)#ip dhcp pool net23

r2(dhcp-config)#network 23.1.1.0 255.255.255.0

r2(dhcp-config)#default-router 23.1.1.2

r2(dhcp-config)#exit

r2(config)#ip dhcp excluded-address 23.1.1.2

说明:配置R2的接口地址,并且在R2上配置DHCP,向北京路由器R3提供动态IP地址,因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。

 

 

(3)配置R3:

r3(config)#int f0/0

r3(config-if)#ip add 192.168.1.3 255.255.255.0

r3(config-if)#no sh

r3(config-if)#exit

 

r3(config)#int f0/1

r3(config-if)#ip address dhcp

r3(config-if)#no sh

r3(config-if)#exit

 

 

r3(config)#int loopback 0

r3(config-if)#ip add 3.3.3.3 255.255.255.255

r3(config-if)#exit

说明:在R3连Internet的接口F0/1上开启DHCP动态获得地址,所以F0/1上的IP地址是多少,事先是不知道的,并且创建一个Loopback 0(地址3.3.3.3/32)作为本端p2p GRE隧道的源点地址。

 

(4)配置R4:

r4(config)#int f0/0

r4(config-if)#ip add 192.168.1.4 255.255.255.0

r4(config-if)#no sh