Cisco经典文档 VPN完整版
文档下载: 目录
简述
友情提示: ★本文旨在努力使用最简单明了的语言与实验向您解述当前最常用的几乎所有类型的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。
由于在某些环境下,通过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,总共分为三步: 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隧道接口没有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。 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 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的目的是要建立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中也就谈不了密钥算法了,但也可以强制再算。
因为 在实施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 是一组算法集合,通过它来定义使用怎样的算法来封装数据包,比如之前所说的ESP封装,AH封装都需要通过Transform set来定义,还可以定义其它一些加密算法以及HMAC算法;通过定义transform set,就可以让用户来选择保护数据的强度,因此transform set就是定义了数据包是受到怎样的保护。
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只在远程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中的一些策略,包括加密算法(Encryption),Hash算法(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与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与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的配置:
在这里提供思科文档中心在PIX上配置Dynamic
LAN-to-LAN VPN示例的原文链接:
http://www.cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example091
Router-to-ASA Dynamic LAN-to-LAN VPN
http://www.cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example091
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接口是不能工作,毫无用处的。 在本小节,我们在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,但不影响流量,所以双方内网的通信情况依然正常。
在上一小节中,我们介绍了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 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)查看广州路由器R3的IP地址情况: r3#show ip interface brief Interface IP-Address OK? Method Status Protocol FastEthernet0/0 192.168.1.3 YES manual up up FastEthernet0/1 23.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 Loopback0 3.3.3.3 YES manual up up r3# 说明:北京路由器R3除了内网网段192.168.1.0/24之外,外网接口F0/1的地址23.1.1.1是DHCP动态获得的。
(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
3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 23.0.0.0/24 is subnetted, 1 subnets C 23.1.1.0 is directly connected, FastEthernet0/1 C 192.168.1.0/24 is directly connected, FastEthernet0/0 S* 0.0.0.0/0 [254/0] via 23.1.1.2 r3# 说明:R4将所有未知路由丢向Internet(R2)。
(3)测试R1到R3的连通性: r1#ping 23.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 23.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 32/63/108 ms r1# 说明:因为R1和R3都有默认路由指向Internet(路由器R2),而R2与R1和R3都是可达的,所以R1和R3通信正常。
(4)测试R1到北京内网的连通性: 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。
(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 0 percent (0/5) r5# 说明:同上理由,R2只有公网路由12.1.1.0和23.1.1.0,只能保证R1与R3的通信,所以上海和北京公司无法通过私有地址互访。
(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, 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.配置Dynamic 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 3.3.3.3 r1(config-if)#exit
r1(config)#ip route 3.3.3.3 255.255.255.255 12.1.1.2 说明:R1到R3的p2p GRE隧道接口号为1,隧道地址为1.1.1.1,隧道的源点为外网接口地址12.1.1.1,而隧道的终点为R3的Loopback 0接口地址3.3.3.3,虽然隧道终点地址在Internet上是不可路由的,但必须写静态路由将3.3.3.3/32指向自己的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 loopback 0 r3(config-if)#tunnel destination 12.1.1.1 r3(config-if)#exit 说明:R3到R1的p2p GRE隧道接口号为3,隧道地址为1.1.1.3,隧道的源点为Loopback 0接口地址3.3.3.3,隧道的终点为R1的外网接口地址12.1.1.1。
(3)在R1上查看当前p2p GRE隧道接口的状态与连通性: r1#sh ip int brief Interface IP-Address OK? Method Status Protocol FastEthernet0/0 12.1.1.1 YES manual up up FastEthernet0/1 10.1.1.1 YES manual 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 Tunnel1 1.1.1.1 YES manual up up r1# 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 0 percent (0/5) r1# 说明:当前p2p GRE隧道接口的状态正常,但不能使用,因为当一方静态IP和一方动态IP之间建立p2p GRE接口时,如果不配置p2p GRE over Ipse,那么p2p GRE接口是不能工作,毫无用处的。
(4)在R1上配置Dynamic 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 0.0.0.0 0.0.0.0 r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(config)#crypto dynamic-map ddd 10 r1(config-crypto-map)#set transform-set ccie r1(config-crypto-map)#exit r1(config)#crypto map mymap 10 ipsec-isakmp dynamic ddd r1(config)#crypto map mymap local-address fastEthernet 0/0 r1(config)#
r1(config)#int f0/0 r1(config-if)#crypto map mymap r1(config-if)#exit *Mar 1 00:32:44.307: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config)# 说明:静态IP方R1的配置和Dynamic LAN-to-LAN VPN稍微不同之处在于,多了这样一条命令“crypto map mymap local-address fastEthernet 0/0”,因为本实验环境使用的IOS版本高于12.2(13)T,所以Crypto map只在物理接口下应用即可,不需要在GRE隧道接口下应用。
(5)在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 gre host 3.3.3.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)#crypto map l2l local-address f0/1
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)# 说明:动态IP方R3和配置和普通LAN-to-LAN VPN的稍微不同之处在于,多了这样一条命令“crypto map l2l local-address f0/1”,因为本实验环境使用的IOS版本高于12.2(13)T,所以Crypto map只在物理接口下应用即可,不需要在GRE隧道接口下应用。
(6)查看R1当前的ISAKMP peer和ISAKMP SA: r1#show crypto isakmp peers
r1# r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
r1# 说明:当前R1还没有任何ISAKMP peer和ISAKMP SA。
(7)从静态IP方R1向动态IP方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 0 percent (0/5) r1#
r1#ping 3.3.3.3
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r1# 说明:无论如何发送流量,ISAKMP SA都无法建立,因为在Dynamic p2p GRE over IPsec环境下,必须先从动态IP方向静态IP方发送数据,否则GRE隧道无法建立,VPN无法完成。
(8)改从动态IP方R3方向静态IP方R1发送流量激活隧道: r3#ping 1.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 192/229/272 ms r3# r3# 说明:从动态IP方向静态IP方发送数据后, GRE隧道已经正常,ISAKMP状态和后续IPsec也应该变的正常。
(9)再次查看R1当前的ISAKMP peer和ISAKMP SA: r1#show crypto isakmp peers Peer: 23.1.1.1 Port: 500 Local: 12.1.1.1 Phase1 id: 23.1.1.1 r1# r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 12.1.1.1 23.1.1.1 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:从动态IP方向静态IP方发送数据后, GRE隧道已经正常,ISAKMP状态也变的正常。
(10)查看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): (12.1.1.1/255.255.255.255/47/0) remote ident (addr/mask/prot/port): (3.3.3.3/255.255.255.255/47/0) current_peer 23.1.1.1 port 500 PERMIT, flags={} #pkts encaps: 171, #pkts encrypt: 171, #pkts digest: 171 #pkts decaps: 159, #pkts decrypt: 159, #pkts verify: 159 #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.1 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x4ACFBE5E(1255128670)
inbound esp sas: spi: 0x5CC1DC94(1556208788) 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): (4533978/3409) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x4ACFBE5E(1255128670) 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): (4533972/3407) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:R1当前IPsec SA也显示为活动状态,并且加密的数据包就是我们指定的从本端公网接口到R3的Loopback 0。
(11)再次从静态IP方R1向动态IP方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 100 percent (5/5), round-trip min/avg/max = 192/208/236 ms r1# 说明:因为动态IP方R3向静态IP方发起过流量,所以GRE隧道已经被激活,变的正常。
(12)测试R1到R3的Loopback 0的通信情况: r1#ping 3.3.3.3
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r1# r1# 说明:虽然GRE已经活动,但动态IP方R3的私有IP接口Loopback 0的地址是始终都不可能通的。
4.在双方配置动态路由协议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 10 00:01:02 348 5000 0 4 r1# r1#sh ip rou 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 3.0.0.0/32 is subnetted, 1 subnets S 3.3.3.3 [1/0] via 12.1.1.2 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:59, Tunnel1 S* 0.0.0.0/0 [1/0] via 12.1.1.2 r1# 说明:R1与R3正常建立EIGRP邻居,并且也通过EIGRP正常学到北京公司的内网网段信息,说明目前Dynamic p2p GRE over IPsec是完全正常的。
(4)在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 11 00:01:21 297 5000 0 2 r3# r3#sh ip rou 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 3.0.0.0/32 is subnetted, 1 subnets C 3.3.3.3 is directly connected, Loopback0 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:23, Tunnel3 C 192.168.1.0/24 is directly connected, FastEthernet0/0 S* 0.0.0.0/0 [254/0] via 23.1.1.2 r3# 说明:R3和R1一样,也正常和对方建立了,EIGRP邻居,并且也通过EIGRP正常学到了上海公司的内网网段信息,说明目前Dynamic p2p GRE over IPsec是完全正常的。
(5)测试双方内网流量的通信情况: 上海到北京: 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/140/288 ms 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 = 36/144/404 ms r4# r4# 说明:因为我们配置的Dynamic p2p GRE over IPsec是完全正常的,所以上海与北京双方的内网通信也是完全正常的。
5.测试NAT对p2p GRE over IPsec的影响: 说明:在上一个Static p2p GRE over IPsec的实验中,我们已经测试过了NAT对p2p GRE over IPsec的影响,Dynamic p2p GRE over IPsec与Static p2p GRE over IPsec受NAT的影响是一样的,所以这里也就不再重复测试了,请大家参见上一个实验的详细部分。
Dynamic Multipoint VPN(DMVPN) 如果一个零售行业的大公司告诉你他们公司在公中国有上千家门店,并且新开的门店还在不断增加,而这些门店的局域网需要和总公司的内网通信,现在让你帮他们设计门店与总公司的VPN网络,并且希望总公司和门店之前能够使用动态路由协议来交换双方的内网信息,您觉得您会怎么设计?从前面介绍过的VPN类型分析,您觉得什么样的VPN可以应对这家公司的需求呢? 从这样的环境和需求中,我们可以整理得出以下一些信息: 因为总公司要和许许多多的门店建立VPN,而且VPN的peer会不断增加,所以为了方便配置,并且在新增门店时,不用对总公司路由器进行配置修改,这样就能方便维护并且节省工作量,我们可以考虑Dynamic LAN-to-LAN VPN,这样就能保证在新开门店时,即使门店的IP地址是动态的不固定的地址,这时都不用更改总公司VPN路由器的配置,便能够接受任何门店的VPN连接。 虽然Dynamic LAN-to-LAN VPN满足了一些需求,能够在总公司VPN路由器拥有大量VPN peer的环境下,将VPN变得易于维护和管理,但是对于在总公司与门店的VPN之间运行动态路由协议来交换双方内网网段信息,这对于Dynamic LAN-to-LAN VPN来说是办不到的,但有没有哪个类型的VPN能达到这个功能呢?很显然,大家应该马上就会想到Dynamic p2p GRE over IPsec,因为Dynamic p2p GRE over IPsec除了能够提供IPsec的数据保证功能之外,还能够在VPN peer之间运行动态路由协议,不仅如此,就算各门店的IP地址是浮动不定的,也没关系,Dynamic p2p GRE over IPsec照样能正常建立VPN,看来Dynamic p2p GRE over IPsec能够满足该公司的需求。但是在选择使用Dynamic p2p GRE over IPsec时,请不要忘记一个重点,那就是它是工作在p2p GRE之上的,p2p GRE隧道只能有两个点,也就是只能一对一,是一台路由器对一台路由器的网络结构,但是这家零售公司的总公司要和上千家的门店建立VPN,如果使用Dynamic p2p GRE over IPsec,那就需要在总公司VPN路由器上为每家门店都创建一个单独的p2p GRE隧道,最终需要在总公司VPN路由器上创建上千条p2p GRE隧道,并且每新增一家门店,就得去总公司VPN路由器上添加一次配置,相信这活你绝对不会去干,我也不会去干。 从上面分析的结果来看,Dynamic LAN-to-LAN VPN并不能完全满足该公司的需求,而Dynamic p2p GRE over IPsec能够满足要求,但面对Dynamic p2p GRE over IPsec令人恐惧的配置量,不可能有人在这种环境下选择它,所以我们便试图寻找能够解决问题的其它类型的VPN。其实我们仔细回想一下,不难发现这里有一个情况:Dynamic p2p GRE over IPsec能够满足该公司所有的需求,其中包括无论对方门店的IP地址是静态的还是动态的,总公司的VPN路由器都够和对方建立VPN连接,并且Dynamic p2p GRE over IPsec还能在VPN peer之间运行动态路由协议,而Dynamic p2p GRE over IPsec的唯一缺点就是在门店增加的时候,必须到总公司VPN路由器上增加配置才能和新开门店建立VPN连接;但我们应该记得,Dynamic LAN-to-LAN VPN就能从总公司一台路由器和任意数量的门店建立VPN连接,也无论门店增加多少家,总公司的VPN路由器都不需要添加和更改任何配置就能接受门店的VPN连接,便于管理和维护;所以我们就设想,要是能够将Dynamic LAN-to-LAN VPN这种Hub上不增加和更改任何配置就能接受任何VPN连接的功能移植到Dynamic p2p GRE over IPsec中,结合两类VPN的优势所在,那将是一个完善的结局,但令人高兴的是,这样结合的VPN确实是存在的,这个我们苦苦找寻的VPN就是本节要讲解的Dynamic Multipoint VPN(DMVPN)。
在Cisco IOS中,完成DMVPN的功能,需要靠以下两个技术来实现: Next Hop Resolution Protocol (NHRP)
下面我们来详细介绍这两个技术的功能与用途:
因为Dynamic p2p GRE over IPsec是工作在p2p GRE之上的,p2p GRE隧道只能有两个点,也就是只能一对一,是一台路由器对一台路由器的网络结构,如果一台路由器要和多台路由器通过p2p GRE通信,那就需要每个peer都创建一个单独的p2p GRE隧道,如下图所示:
上图就是个p2p GRE的例子,其中路由器HUB需要和多台路由器,如R1、R2、R3、X通过p2p GRE通信,所以在路由器上就需要为每个peer单独创建一条p2p GRE,结果路由器HUB上创建了多条p2p GRE接口(Tunnel 1为R1,Tunnel 2为R2,Tunnel 3为R3,Tunnel X为X),如果HUB的peer还在不断增加,那么每增加一个peer,路由器HUB都要增加相应的p2p GRE接口配置,这确实是一个相当繁琐且繁重的工作。 为了能够拥有像Dynamic LAN-to-LAN VPN那样,无论有多少个peer要和自己连接,也无论peer增加多少个,HUB上都不需要添加和更改任何配置,所以将p2p GRE扩展为multipoint GRE (mGRE),mGRE能够像Dynamic LAN-to-LAN VPN那样,无论要和多少个peer建立连接,自己始终都保持只有一个接口,并且无论有多少个peer或者无论peer增加多少个,自己始终都不增加和更改任何配置就能保持和对方的GRE连接,如下图:
在上图的mGRE示例中,虽然路由器HUB需要和多台路由器,如R1、R2、R3、X通过GRE通信,但因为HUB上配置了mGRE接口,所以HUB不再需要为每个peer单独创建一条GRE接口而始终保持一个mGRE接口即可。 在mGRE中,核心路由器称为Hub,而分支路由器称为spoke,在配置时,Hub上必须将GRE接口类型指定为multipoint GRE (mGRE),但spoke上无论是multipoint GRE (mGRE)还是p2p GRE都不会有问题,但两者之间会有不同之处。 在DMVPN中,同样需要使用IPsec来保护数据的安全,所以在这里也需要配置IKE(IPsec profile),在没有配置IPsec profile之前, mGRE和IPsec隧道是不会起作用的,DMVPN并不会改变标准IPsec VPN 隧道,但会改变他们的配置方式,就像Dynamic LAN-to-LAN VPN一样,因为根本不知道会和哪些peer的哪些网段要通信,所以就无法事先确定IPsec SA,那么在配置DMVPN时就不需要通过配置ACL来定义感兴趣流量了,当然传统的crypto map中也不需要指定peer address这样的参数了。 虽然不再需要定义ACL和peer address,便还是需要定义transform set的。
注: ★无论mGRE中Hub要和多少个spoke连接,所有Hub和所有spoke的IP地址必须在同网段。 ★在mGRE中,Hub的物理IP必须固定,Spoke的物理IP可随意。 ★IPsec不再需要通过配置ACL来定义感兴趣流量。 Next Hop Resolution Protocol (NHRP) 因为在DMVPN中,mGRE需要具有Dynamic LAN-to-LAN VPN那样无论和多少个peer建立连接,自己始终都只需要一个接口的功能,并且无论有多少个peer或者无论peer增加多少个,自己始终都不增加和更改任何配置就能保持和对方的GRE连接,这里就隐含了一个东西,是什么呢?那就是和Hub建立mGRE的spoke,因为Hub根本不知道会有哪些spoke和它建立连接,也不知道会增加多少个spoke,所以对于Hub来说,和它建立GRE的spoke的地址全部都算是未知的,mGRE的Hub要和数个未知地址的spoke建立连接,那么如何获得对方的真实地址成了个问题。大家应该还记得,在Dynamic p2p GRE over IPsec情况下,因为可以一方是静态IP,而另一方是动态IP,双方要成功建立GRE,必须都知道对方的真实IP地址(通常是公网IP地址),那么静态IP方又是如何知道动态IP方的IP地址的呢,那就是先让动态IP方向静态IP方发送数据,静态IP方根据动态IP方发来的数据的源IP地址,马上就能发现对方的IP地址,通常就是动态IP方的设备上向静态IP方发送ICMP包或者其它数据包,发出的数据包首先会促发ISAKMP的协商数据包,当数据包发向静态IP方时,那么静态IP方就根据动态IP方发来的ISAKMP的协商数据包的源IP地址,从而知道对方的真正IP地址,这个过程就能够让建立GRE的双方都能知道对方的真实IP地址,从而成功建立GRE。对于mGRE,它利用了一个单独的协议去单独解决Hub获得spoke真实IP地址的问题,这个协议就是Next Hop Resolution Protocol (NHRP),因为只要动态IP地址方先向静态IP地址方发送数据,静态IP地址方就能够知道动态IP地址方的地址是什么,所以mGRE的Hub就可以在spoke发给自己的数据包中得知spoke的真实IP地址,根据这个原因,NHRP就强制规定spoke必须主动向Hub告知自己的真实IP地址,这样就能使HUB轻松获得所有spoke的真实IP地址,从而正常建立mGRE中的所有GRE,最终实现DMVPN。 在NHRP中,是以Client and Server的模式工作的,mGRE中的Hub就是server,而spoke则是client,在Hub(NHRP Server)上,维护着一个拥有所有spoke(NHRP Client)物理接口真实IP地址的数据库,通过此数据库,就能使双方都能知道对方的真实IP地址从而建立GRE;NHRP规定了Client在启动后就必须马上向Server告知自己的物理接口真实IP地址, 所以mGRE在NHRP的大力协助下,Hub在知道每个spoke的真实IP地址后,方可建立GRE隧道,从而完成DMVPN功能。 在某些情况下,spoke不仅仅只需要和Hub通信,可能还需要和其它spoke通信,因为所有spoke和Hub都是通的,所以只要spoke将数据发送到Hub,Hub就一定能代为转发给其它目标spoke,但是我们不难发现,如果所有spoke之间的通信流量都先发送到Hub,然后再由Hub中转,这必定会给Hub造成强大的压力和负担,但是我们仔细想一下,为什么spoke之间的通信流量都要先发到Hub呢?因为spoke与spoke之间就从来没有建立过Tunnel,而spoke只是与Hub建立了tunnel,这才导致spoke与spoke的通信流量都必须通过Hub来中转,那么需要通信的spoke与spoke之间为什么不直接建立Tunnel从而直接通信呢?因为spoke与spoke双方都并不知道对方的真实IP地址,所以无法建立Tunnel,但是因为Hub维护着所有spoke的真实IP地址的数据库,所以spoke要获得想要和其它spoke通信的真实IP地址并不难,只要去问Hub要就可以了;因此,当一个spoke要和其它spoke通信时,通常是spoke直接与其它目标spoke建立Tunnel,当通信结束后,再将Tunnel拆除,这样的通信称为spoke-to-spoke,这样的spoke与spoke之间建立的Tunnel称为spoke-to-spoke tunnel,也称为临时Tunnel,有超时时间,过了这个时间,临时Tunnel自动拆除;而Hub与spoke通信称为hub-to-spoke,Hub与spoke建立的Tunnel称为hub-to-spoke tunnel,并且是永久的Tunnel。 当一个spoke要和其它spoke通信时,要做的第一件事情就是向Hub(NHRP Server) 查询目标spoke的真实公网IP,当Hub返回目标spoke的真实IP之后,源spoke就可以向目标spoke触发一个dynamic ipsec tunnel,当目标spoke收到相关数据包之后,也采用同样的方法向Hub查询源spoke的真实公网IP,从而在双方直接建立Tunnel。在这里,一个spoke又是如何确定它的数据的目标是去往其它spoke的呢?答案是Hub会和spoke之间运行动态路由协议,Hub也会将从一个spoke那里学来的路由信息在不改变下一跳地址的情况下直接发给其它spoke,所以当spoke发现去往目标网段的下一跳地址不是Hub,但却和Hub的地址在同一网段时,便确定这是其它spoke。 在DMVPN的mGRE上可运行的动态路由协议包括: EIGRP,OSPF,BGP,RIPv2,ODR 协议和协议之间通告的路由的下一跳地址都为mGRE的接口地址。
注: ★spoke可以通过Hub发送的路由更新中学习到Hub和spoke的私有网段信息。 ★GRE keepalive是不支持DMVPN的。 ★要很好的运行DMVPN,要求的IOS最低版本是: 12.4 mainline,12.4T或 12.2(18)SXF。 ★DMVPN也支持Cisco 6500 和Cisco 7600的,但会有特殊要求,比如引擎版本。
spoke-to-spoke tunnel的建立如下:
在上图的DMVPN中,R1和R3都与HUB运行动态路由协议,其中R1上有网段192.168.1.0/24,且物理接口地址为101.1.1.1,mGRE接口地址为10.1.1.1;R3上有网段192.168.3.0/24,且物理接口地址为103.1.1.1,mGRE接口地址为10.1.1.3;HUB上有网段192.168.10.0/24,且的物理接口地址为110.1.1.1,mGRE接口地址为10.1.1.10;R1收到的路由192.168.1.0/24的下一跳为HUB的mGRE接口地址10.1.1.10,收到的路由192.168.3.0/24的下一跳为R3的mGRE接口地址10.1.1.3,R1的路由表中已经反映了该情况。当R1要与R3的直连网段192.168.3.0/24通信时,情况如下:
R1通过192.168.3.0/24的下一跳地址为10.1.1.3得知该地址与自己的mGRE接口同网段,于是断定该目标网段为其它spoke上的网段,所以发送NHRP查询消息向HUB查询10.1.1.3的真实IP地址,情况如下:
因为HUB为NHRP Server,所以它的NHRP数据库中存放着spoke R1的mGRE接口地址10.1.1.1对应的真实IP地址101.1.1.1,以及spoke R3的mGRE接口地址10.1.1.3对应的真实IP地址103.1.1.1,所以HUB将10.1.1.3对应的真实地址为103.1.1.1的信息回给R1,情况如下:
当R1从HUB返回的信息中得知10.1.1.3对应的真实地址为103.1.1.1之后,便向103.1.1.1发起dynamic ipsec tunnel请求,试图与R3建立spoke-to-spoke tunnel,当R3收到该请求后,采取与R1相同的过程得到R1的真实IP地址,从而在双向完成spoke-to-spoke tunnel的建立,最终R1与R3的通信直接在spoke-to-spoke tunnel上传递而不需要通过HUB中转。
注: ★Spoke与spoke之间的通信是通过HUB中转(即hub-and-spoke形式),还是通过创建spoke-to-spoke tunnel直接通信,取决于spoke的GRE隧道模式,只有spoke也选择mGRE模式才行,否则不能建立spoke-to-spoke tunnel. ★mGRE与NHRP的配置步骤和配置要点将在实验部分详细介绍,谢谢.
说明:我们下面需要以上图的环境来演示DMVPN的效果,在图中,有上海、北京和广州共三个公司的网络,上海要同时和北京与广州的网络实现VPN通信,其中北京和广州的路由器的IP地址都是通过DHCP获得的,事先无法知道IP是多少,在这样的情况下,我们通过配置DMVPN(即mGRE配合NHRP并集成IPsec)来使上海公司的路由器接受任何公司的VPN连接,而不管其IP地址是多少,很明显,上图中上海公司路由器R1为Hub,而北京和广州的路由器都为spoke。 注:在上图中,即使VPN场点增加,在上海路由器R1(Hub)上,不需要更改任何配置,都能接受对方的VPN连接。
1.配置基础网络环境 (1)配置R1: r1(config)#int f0/0 r1(config-if)#ip add 10.1.1.1 255.255.255.0 r1(config-if)#no shut r1(config-if)#exit
r1(config)#int s1/0 r1(config-if)#encapsulation frame-relay r1(config-if)#no frame-relay inverse-arp r1(config-if)#no arp frame-relay r1(config-if)#ip add 12.1.1.1 255.255.255.0 r1(config-if)#no sh r1(config-if)#frame-relay map ip 12.1.1.2 102 broadcast
r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2 r1(config)# 说明:配置R1的接口地址,并写默认路由指向Internet(路由器R2),地址12.1.1.2。
(2)配置R2:
r2(config)#int f0/0 r2(config-if)#ip add 23.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int f0/1 r2(config-if)#ip address 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 12.1.1.2 255.255.255.0 r2(config-if)#no shutdown r2(config-if)#frame-relay map ip 12.1.1.1 201 broadcast 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 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 23.1.1.2 r2(config)#ip dhcp excluded-address 24.1.1.2 r2(config)#
说明:配置R2的接口地址,并且在R2上配置DHCP,向北京和广州的路由器提供动态IP地址,因为R2模拟Internet,R2只需要有公网路由12.1.1.0、23.1.1.0和24.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip address dhcp r3(config-if)#no shutdown r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip address 192.168.1.3 255.255.255.0 r3(config-if)#no shutdown r3(config-if)#exit 说明:在R3上配置内网网段192.168.1.0/24,并且在连Internet的接口F0/0上开启DHCP动态获得地址,所以F0/0上的IP地址是多少,事先是不知道的。
(4)配置R4: r4(config)#int f0/0 r4(config-if)#ip address 172.16.1.4 255.255.255.0 r4(config-if)#no shutdown r4(config-if)#exit
r4(config)#int f0/1 r4(config-if)#ip address dhcp r4(config-if)#no shutdown r4(config-if)#exit 说明:在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)查看北京路由器R3的IP地址情况: r3#show ip int brief Interface IP-Address OK? Method Status Protocol FastEthernet0/0 23.1.1.1 YES DHCP up up FastEthernet0/1 192.168.1.3 YES manual 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 r3# 说明:北京路由器R3除了内网网段192.168.1.0/24之外,外网接口F0/0的地址23.1.1.1是DHCP动态获得的。
(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
23.0.0.0/24 is subnetted, 1 subnets C 23.1.1.0 is directly connected, FastEthernet0/0 C 192.168.1.0/24 is directly connected, FastEthernet0/1 S* 0.0.0.0/0 [254/0] via 23.1.1.2 r3# 说明:R3将所有未知路由丢向Internet(R2)。
(3)查看广州路由器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.3 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.3是DHCP动态获得的。
(4)查看广州路由器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 r4# 说明:R4将所有未知路由丢向Internet(R2)。
(5)测试R1到R3和R4的连通性: r1#ping 23.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 23.1.1.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 36/110/176 ms r1# r1#ping 24.1.1.3
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 24.1.1.3, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 44/92/172 ms r1#
说明:因为R1、R3和R4都有默认路由指向Internet(路由器R2),而R2与R1、R3和R4都是可达的,所以R1与R3和R4通信正常。
(6)测试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#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。
(7)测试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的通信,所以上海到北京公司和广州公司无法通过私有地址互访。
3.配置DM VPN (1)在R1上配置DMVPN: 说明:R1为Hub 配置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
配置PSK认证密钥,必须使用通配符认证方法: r1(config)#crypto isakmp key 0 cisco123 address 0.0.0.0
配置IPsec transform: r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit
配置IPsec profile: r1(config)#crypto ipsec profile cisco r1(ipsec-profile)#set transform-set ccie r1(ipsec-profile)#exit
创建Tunnel接口1,号码任意: r1(config)#int tunnel 1
为高层协议改变带宽值,只影响路由协议的Metric值计算,而并非QOS,默认带宽为9: r1(config-if)#bandwidth 1000
配置GRE接口地址为100.1.1.1/24: r1(config-if)#ip address 100.1.1.1 255.255.255.0
将MTU改为1400,如果不改,下一跳路由器将会对数据包分片并重新封装: r1(config-if)#ip mtu 1400
设置认证密码,同一个mGRE中所有点(包括所有Hub和所有spoke)的密码必须一致: r1(config-if)#ip nhrp authentication ccie123
自动将spoke的地址加入组播映射中,否则与spoke之间使用组播的路由协议不能正常运行: r1(config-if)#ip nhrp map multicast dynamic
配置网络标识号,等于是启用NHRP,同一个mGRE中所有点(包括所有Hub和所有spoke)的号码必须一致:
r1(config-if)#ip nhrp network-id 1
关闭EIGRP水平分割,否则从一个spoke的EIGRP学习到的路由不能发给另一个spoke: r1(config-if)#no ip split-horizon eigrp 1
定义mGRE的源地址为S1/0的地址,即源地址为12.1.1.1: r1(config-if)#tunnel source s1/0
定义GRE接口的类型为mGRE,Hub上的类型必须为mGRE: r1(config-if)#tunnel mode gre multipoint
定义Tunnel接口ID,此步并不是必须的,如果定义,同一个mGRE中所有点(包括所有Hub和所有spoke)的号码必须一致: r1(config-if)#tunnel key 10000
将IPsec profile关联到mGRE接口,用于保护mGRE接口的流量: r1(config-if)#tunnel protection ipsec profile cisco r1(config-if)#exit
(2)在R3上配置DMVPN: 说明:R3为spoke 配置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
配置PSK认证密钥,必须使用通配符认证方法: r1(config)#crypto isakmp key 0 cisco123 address 0.0.0.0
配置IPsec transform: r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit
配置IPsec profile: r1(config)#crypto ipsec profile cisco r1(ipsec-profile)#set transform-set ccie r1(ipsec-profile)#exit
创建Tunnel接口3,号码任意: r3(config)#int tunnel 3
为高层协议改变带宽值,只影响路由协议的Metric值计算,而并非QOS,默认带宽为9: r3(config-if)#bandwidth 1000
配置GRE接口地址为100.1.1.3/24: r3(config-if)#ip address 100.1.1.3 255.255.255.0
将MTU改为1400,如果不改,下一跳路由器将会对数据包分片并重新封装: r3(config-if)#ip mtu 1400
设置认证密码,同一个mGRE中所有点(包括所有Hub和所有spoke)的密码必须一致: r3(config-if)#ip nhrp authentication ccie123
将Hub的GRE接口地址100.1.1.1和公网IP地址12.1.1.1静态映射绑定: r3(config-if)#ip nhrp map 100.1.1.1 12.1.1.1
开启能向Hub发送组播的功能,从而开启动态路由协议的功能: r3(config-if)#ip nhrp map multicast 12.1.1.1
配置网络标识号,等于是启用NHRP,同一个mGRE中所有点(包括所有Hub和所有spoke)的号码必须一致: r3(config-if)#ip nhrp network-id 1
将Hub路由器指定为NHRP Server: r3(config-if)#ip nhrp nhs 100.1.1.1
定义mGRE的源地址为F0/0的地址: r3(config-if)#tunnel source f0/0
定义GRE接口的类型为mGRE,spoke也可以选择直接指Hub的目标地址(即命令tunnel destination),如果需要使用spoke-to-spoke tunnel传递功能,必须配置为mGRE,指目标地址只能工作在hub-and-spoke tunnel: r3(config-if)#tunnel mode gre multipoint
定义Tunnel接口ID,此步并不是必须的,如果定义,同一个mGRE中所有点(包括所有Hub和所有spoke)的号码必须一致: r3(config-if)#tunnel key 10000
将IPsec profile关联到mGRE接口,用于保护mGRE接口的流量: r3(config-if)#tunnel protection ipsec profile cisco r3(config-if)#exit
4.测试DMVPN (1)从Hub端R1向spoke端R3发送流量测试mGRE接口状况: r1#ping 100.1.1.3
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 100.1.1.3, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 188/222/264 ms r1# 说明:Hub端R1的mGRE接口到spoke端R3的mGRE接口通信正常。
(2)查看Hub端R1的NHRP映射情况:
r1#show ip nhrp brief Target Via NBMA Mode Intfc Claimed 100.1.1.3/32 100.1.1.3 23.1.1.1 dynamic Tu1 < > r1# r1# r1#show ip nhrp 100.1.1.3/32 via 100.1.1.3, Tunnel1 created 00:02:05, expire 01:57:54 Type: dynamic, Flags: unique nat registered NBMA address: 23.1.1.1 r1# 说明:Hub路由器R1上已经存在spoke路由器R3的mGRE接口地址100.1.1.3对应的公网地址23.1.1.1的映射,并且显示为动态映射的,即spoke自动注册的。
(3)查看spoke端R3的NHRP映射情况: r3#show ip nhrp 100.1.1.1/32 via 100.1.1.1, Tunnel3 created 00:10:03, never expire Type: static, Flags: nat used NBMA address: 12.1.1.1 r3# r3#show ip nhrp brie r3#show ip nhrp brief Target Via NBMA Mode Intfc Claimed 100.1.1.1/32 100.1.1.1 12.1.1.1 static Tu3 < > r3# 说明:spoke路由器R3上同样存在Hub路由器R1的mGRE接口地址100.1.1.1对应的公网地址12.1.1.1的映射,并且显示为静态映射的。
(4)查看R1上IKE SA的peer: r1#show crypto isakmp peers Peer: 23.1.1.1 Port: 500 Local: 12.1.1.1 Phase1 id: 23.1.1.1 r1# 说明:R1已经成功与R3建立IKE peer,说明IKE SA也应该成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3,目标端口号为500,建立IKE还是使用的公网IP地址。
(5)查看R1上IKE SA的SA: r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 12.1.1.1 23.1.1.1 QM_IDLE 1014 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:IKE SA已经成功建立。
(6)查看R1上的IPsec SA:
r1#show crypto ipsec sa
interface: Tunnel1 Crypto map tag: Tunnel1-head-0, 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.1/255.255.255.255/47/0) current_peer 23.1.1.1 port 500 PERMIT, flags={origin_is_acl,} #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: 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.1 path mtu 1500, ip mtu 1500, ip mtu idb Serial1/0 current outbound spi: 0xD5A0B371(3584078705)
inbound esp sas: spi: 0x9E89DA8C(2659834508) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 35, flow_id: SW:35, crypto map: Tunnel1-head-0 sa timing: remaining key lifetime (k/sec): (4422895/3576) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0xD5A0B371(3584078705) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 36, flow_id: SW:36, crypto map: Tunnel1-head-0 sa timing: remaining key lifetime (k/sec): (4422895/3575) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:IPsec SA中只包含公网IP地址相互的流量。
5.在上海与北京路由器之间基于mGRE配置动态路由协议EIGRP,动态交换双方内网信息:
(1)在上海路由器R1上配置EIGRP: r1(config)#router eigrp 1 r1(config-router)#no auto-summary r1(config-router)#network 10.1.1.1 0.0.0.0 r1(config-router)#network 100.1.1.1 0.0.0.0 r1(config-router)#exi 说明:在R1上启动EIGRP,AS号1,并将内网接口10.1.1.1和mGRE接口100.1.1.1都放入EIGRP进程。
(2)在北京路由器R3上配置EIGRP: r3(config)#router eigrp 1 r3(config-router)#no auto-summary r3(config-router)#network 192.168.1.3 0.0.0.0 r3(config-router)#network 100.1.1.3 0.0.0.0 r3(config-router)#exit 说明:在R3上启动EIGRP,AS号1,并将内网接口192.168.1.3和mGRE接口100.1.1.3都放入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 100.1.1.3 Tu1 11 00:00:31 321 1926 0 2 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
100.0.0.0/24 is subnetted, 1 subnets C 100.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/0 12.0.0.0/24 is subnetted, 1 subnets C 12.1.1.0 is directly connected, Serial1/0 D 192.168.1.0/24 [90/15362560] via 100.1.1.3, 00:00:33, Tunnel1 S* 0.0.0.0/0 [1/0] via 12.1.1.2 r1# 说明:R1已经与R3正常建立EIGRP邻居,并且正常收到北京内网192.168.1.0/24的路由。
(4)在北京路由器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 100.1.1.1 Tu3 13 00:00:58 320 1920 0 3 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
100.0.0.0/24 is subnetted, 1 subnets C 100.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/0 10.0.0.0/24 is subnetted, 1 subnets D 10.1.1.0 [90/15362560] via 100.1.1.1, 00:00:59, Tunnel3 C 192.168.1.0/24 is directly connected, FastEthernet0/1 S* 0.0.0.0/0 [254/0] via 23.1.1.2 r3# 说明:R3已经与R1正常建立EIGRP邻居,并且正常收到上海内网10.1.1.0 /24的路由。
(5)测试上海路由器R1到北京内网192.168.1.0/24的通信情况: 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: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 196/239/300 ms r1# 说明:因为上海路由器R1到北京内网192.168.1.0/24的路由正常从mGRE接口出去,所以通信也正常。
(6)测试上海内网路由器R5到北京内网192.168.1.0/24的通信情况: 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 = 100/188/312 ms r5# 说明:上海内网到北京内网通信正常。
(6)查看上海公司向北京公司发送数据包的路径走向:
r5#traceroute 192.168.1.3
Type escape sequence to abort. Tracing the route to 192.168.1.3
1 10.1.1.1 60 msec 76 msec 8 msec 2 100.1.1.3 184 msec * 244 msec r5# 说明:从上海公司发向北京公司的数据包到达上海的路由器后,可以看出中间只有一跳,因为直接从GRE隧道过去就到达了目的地,说明中间的多跳已经GRE隧道取代为一跳了。
(7)测试上海内网路由器R5到广州内网172.16.1.0/24的通信情况: 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# 说明:目前上海路由器与广州路由器毫无关联,所以上海内网到广州内网172.16.1.0/24的通信失败。
6.将广州路由器加入DMVPN (1)使用类似于spoke路由器R3的配置方法来配置广州路由器R4的DMVPN:
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 0.0.0.0 r43(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r4(cfg-crypto-trans)#exit
r4(config)#crypto ipsec profile cisco r4(ipsec-profile)#set transform-set ccie r4(ipsec-profile)#exit r4(config)#
r4(config)#int tunnel 4 r4(config-if)#bandwidth 1000 r4(config-if)#ip address 100.1.1.4 255.255.255.0 r4(config-if)#ip mtu 1400 r4(config-if)#ip nhrp authentication ccie123 r4(config-if)#ip nhrp map 100.1.1.1 12.1.1.1 r4(config-if)#ip nhrp map multicast 12.1.1.1 r4(config-if)#ip nhrp network-id 1 r4(config-if)#ip nhrp nhs 100.1.1.1 r4(config-if)#tunnel source f0/1 r4(config-if)#tunnel mode gre multipoint r4(config-if)#tunnel key 10000 r4(config-if)#tunnel protection ipsec profile cisco r4(config-if)#exit 说明:R4上DMVPN的各参数请参考R3上的配置解释。
(2)从spoke端R4向Hub端R1发送流量测试mGRE接口状况: r4#ping 100.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 100.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 196/221/244 ms r4# 说明:spoke端R4的mGRE接口到Hub端R1的mGRE接口通信正常。
(3)查看Hub端R1的NHRP映射情况: r1#show ip nhrp 100.1.1.3/32 via 100.1.1.3, Tunnel1 created 00:15:09, expire 01:44:50 Type: dynamic, Flags: unique nat registered NBMA address: 23.1.1.1 100.1.1.4/32 via 100.1.1.4, Tunnel1 created 00:01:49, expire 01:59:32 Type: dynamic, Flags: unique nat registered NBMA address: 24.1.1.3 r1# r1#show ip nhrp brief Target Via NBMA Mode Intfc Claimed 100.1.1.3/32 100.1.1.3 23.1.1.1 dynamic Tu1 < > 100.1.1.4/32 100.1.1.4 24.1.1.3 dynamic Tu1 < > r1# 说明:Hub路由器R1上在已经有了对R3的NHRP映射之外,同时增加了对spoke路由器R4的mGRE接口地址100.1.1.4对应的公网地址24.1.1.3的映射,并且显示为动态映射的,即是spoke路由器R4自动注册的。
(4)查看spoke端R4的NHRP映射情况: r4#show ip nhrp 100.1.1.1/32 via 100.1.1.1, Tunnel4 created 00:04:20, never expire Type: static, Flags: nat used NBMA address: 12.1.1.1 r4# r4#show ip nhrp brie r4#show ip nhrp brief Target Via NBMA Mode Intfc Claimed 100.1.1.1/32 100.1.1.1 12.1.1.1 static Tu4 < > r4# 说明:spoke路由器R4上同样存在Hub路由器R1的mGRE接口地址100.1.1.1对应的公网地址12.1.1.1的映射,并且显示为静态映射的。
(5)在广州路由器R4上启用EIGRP:
r4(config)#router eigrp 1 r4(config-router)#no auto-summary r4(config-router)#network 172.16.1.4 0.0.0.0 r4(config-router)#network 100.1.1.4 0.0.0.0 说明:在R4上启动EIGRP,AS号1,并将内网接口172.16.1.4和mGRE接口100.1.1.4都放入EIGRP进程。
(6)在上海路由器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 1 100.1.1.4 Tu1 12 00:00:40 323 2907 0 2 0 100.1.1.3 Tu1 12 00:12:33 333 1998 0 2 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
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, Tunnel1 172.16.0.0/24 is subnetted, 1 subnets D 172.16.1.0 [90/15362560] via 100.1.1.4, 00:00:42, Tunnel1 10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, FastEthernet0/0 12.0.0.0/24 is subnetted, 1 subnets C 12.1.1.0 is directly connected, Serial1/0 D 192.168.1.0/24 [90/15362560] via 100.1.1.3, 00:12:35, Tunnel1 S* 0.0.0.0/0 [1/0] via 12.1.1.2 r1# 说明:R1上不仅保持着北京的EIGRP邻居与内网网段,同时增加了广州路由器的EIGRP邻居与广州内网网段。
(7)在广州路由器R4上查看EIGRP邻居与路由表情况:
r4#show ip eigrp neighbors IP-EIGRP neighbors for process 1 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 100.1.1.1 Tu4 12 00:01:07 338 2028 0 6 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
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, Tunnel4 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 10.0.0.0/24 is subnetted, 1 subnets D 10.1.1.0 [90/15362560] via 100.1.1.1, 00:01:08, Tunnel4 D 192.168.1.0/24 [90/28162560] via 100.1.1.1, 00:01:08, Tunnel4 S* 0.0.0.0/0 [254/0] via 24.1.1.2 r4# 说明:广州路由器R4已经与上海路由器R1成功建立EIGRP邻居,请注意路由表中,现在广州到上海的网段10.1.1.0/24和到北京的网段192.168.1.0/24的下一跳地址都为上海路由器的mGRE接口地址100.1.1.1,所以这说明现在spoke与spoke之间的通信仍然需要通过Hub路由器中转,即通信方式仍然为hub-and-spoke tunnel的形式。
(8)测试广内网172.16.1.0/24到上海内网10.1.1.0/24和到北京内网192.168.1.0/24的通信情况: 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 100 percent (5/5), round-trip min/avg/max = 108/152/192 ms r4#
r4#ping 192.168.1.3 source 172.16.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.3, timeout is 2 seconds: Packet sent with a source address of 172.16.1.4 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 220/260/296 ms r4# 说明:因为动态路由协议EIGRP在全网间通告路由信息,所以所有网段之间通信正常。
(9)查看广州内网到上海公司和北京公司数据包的路径走向: r4#traceroute 10.1.1.5
Type escape sequence to abort. Tracing the route to 10.1.1.5
1 100.1.1.1 216 msec 244 msec 276 msec 2 10.1.1.5 236 msec * 176 msec r4# r4#traceroute 192.168.1.3
Type escape sequence to abort. Tracing the route to 192.168.1.3
1 100.1.1.1 332 msec 208 msec 188 msec 2 100.1.1.3 308 msec * 336 msec r4# 说明:结果显示,广州内网无论到上海公司还是北京公司数据包都先发到100.1.1.1,即通过hub-and-spoke tunnel的方式从Hub中转,这种通信是不理想的。
7.配置spoke-to-spoke tunnel 通信方式 (1)在Hub路由器R1的mGRE接口上改变EIGRP下一跳规则: r1(config)#int tunnel 1 r1(config-if)#no ip next-hop-self eigrp 1 r1(config-if)# 说明:让Hub路由器R1不再将从一个spoke收到的路由发给另一个spoke时将下一跳地址改为自己,而是保持原来的下一跳地址不变,即spoke到另外一个spoke的下一跳地址还是源spoke而不是Hub路由器。
(2)再次查看广州路由器R4上的路由表情况: r4#show 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
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, Tunnel4 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 10.0.0.0/24 is subnetted, 1 subnets D 10.1.1.0 [90/15362560] via 100.1.1.1, 00:00:38, Tunnel4 D 192.168.1.0/24 [90/28162560] via 100.1.1.3, 00:00:38, Tunnel4 S* 0.0.0.0/0 [254/0] via 24.1.1.2 r4# 说明:广州路由器R4到上海的网段10.1.1.0/24的下一跳还是直接发到上海路由器100.1.1.1的,而到北京的网段192.168.1.0/24的路由则变成了直接发到北京路由器R3的mGRE接口地址100.1.1.3,说明现在spoke与spoke之间的通信没有通过Hub路由器中转,而是改成了spoke-and-spoke tunnel的形式。
(3)再次查看广州内网到上海公司和北京公司数据包的路径走向: r4#traceroute 10.1.1.5
Type escape sequence to abort. Tracing the route to 10.1.1.5
1 100.1.1.1 192 msec 204 msec 276 msec 2 10.1.1.5 220 msec * 128 msec r4# r4#traceroute 192.168.1.3
Type escape sequence to abort. Tracing the route to 192.168.1.3
1 100.1.1.3 248 msec * 240 msec r4# 说明:广州路由器R4到上海的网段10.1.1.0/24的下一跳还是直接发到上海路由器100.1.1.1的,而到北京的网段192.168.1.0/24则变成了直接发到北京路由器R3的mGRE接口地址100.1.1.3,说明现在spoke与spoke之间的通信没有通过Hub路由器中转,而是改成了spoke-and-spoke tunnel的形式。
(4)再次查看spoke端R4的NHRP映射情况: r4#show ip nhrp 100.1.1.1/32 via 100.1.1.1, Tunnel4 created 00:12:20, never expire Type: static, Flags: nat used NBMA address: 12.1.1.1 100.1.1.3/32 via 100.1.1.3, Tunnel4 created 00:03:37, expire 01:56:23 Type: dynamic, Flags: router nat implicit used NBMA address: 23.1.1.1 100.1.1.4/32 via 100.1.1.4, Tunnel4 created 00:03:36, expire 01:56:23 Type: dynamic, Flags: router unique nat local NBMA address: 24.1.1.3 (no-socket) r4# r4#show ip nhrp brie r4#show ip nhrp brief Target Via NBMA Mode Intfc Claimed 100.1.1.1/32 100.1.1.1 12.1.1.1 static Tu4 < > 100.1.1.3/32 100.1.1.3 23.1.1.1 dynamic Tu4 < > 100.1.1.4/32 100.1.1.4 24.1.1.3 dynamic Tu4 < > r4# 说明:因为要使用spoke-and-spoke tunnel的通信方式,所以R4上通过查询Hub路由器R1得到了到北京路由器的NHRP映射(即北京路由器R3的mGRE接口地址100.1.1.3映射到公网地址23.1.1.1)。
8.测试DMVPN中的OSPF情况: (1)在所有路由器上将EIGRP改为OSPF: R1: r1(config)#no router eigrp 1
*Mar 1 00:59:58.175: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 100.1.1.4 (Tunnel1) is down: interface down *Mar 1 00:59:58.187: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 100.1.1.3 (Tunnel1) is down: interface down r1(config)#
r1(config)#router ospf 1 r1(config-router)#network 100.1.1.1 0.0.0.0 area 0 r1(config-router)#network 10.1.1.1 0.0.0.0 area 0 r1(config-router)#exit r1(config)#
R3: r3(config)#no router eigrp 1 r3(config)# r3(config)#router ospf 1 r3(config-router)#network 100.1.1.3 0.0.0.0 area 0 r3(config-router)#network 192.168.1.3 0.0.0.0 area 0 r3(config-router)#
R4: r4(config)#no router eigrp 1 r4(config)# r4(config)#router ospf 1 r4(config-router)#network 100.1.1.4 0.0.0.0 area 0 r4(config-router)#network 172.16.1.4 0.0.0.0 area 0 r4(config-router)#exit r4(config)# 说明:已经在各路由器上取消EIGRP进程,并配置了OSPF。
(2)查看上海路由器R1上的OSPF情况: r1# *Mar 1 01:09:55.047: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.1.4 on Tunnel1 from FULL to DOWN, Neighbor Down: Adjacency forced to reset *Mar 1 01:09:55.307: %OSPF-4-NONEIGHBOR: Received database description from unknown neighbor 172.16.1.4 *Mar 1 01:09:56.219: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.3 on Tunnel1 from LOADING to FULL, Loading Done r1# *Mar 1 01:10:00.543: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.1.3 on Tunnel1 from FULL to DOWN, Neighbor Down: Adjacency forced to reset *Mar 1 01:10:00.759: %OSPF-4-NONEIGHBOR: Received database description from unknown neighbor 192.168.1.3 *Mar 1 01:10:01.287: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.1.4 on Tunnel1 from LOADING to FULL, Loading Done r1# 说明:还不用查看,已经看到OSPF邻居一会儿down,一会儿up,
(3)在R1上查看mGRE在OSPF下的网络类型: r1#show ip ospf interface tunnel 1 Tunnel1 is up, line protocol is up Internet Address 100.1.1.1/24, Area 0 Process ID 1, Router ID 100.1.1.1, Network Type POINT_TO_POINT, Cost: 100 Transmit Delay is 1 sec, State POINT_TO_POINT Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 oob-resync timeout 40 Hello due in 00:00:00 Supports Link-local Signaling (LLS) Cisco NSF helper support enabled IETF NSF helper support enabled Index 1/1, flood queue length 0 Next 0x0(0)/0x0(0) Last flood scan length is 1, maximum is 1 Last flood scan time is 4 msec, maximum is 4 msec Neighbor Count is 1, Adjacent neighbor count is 1 Adjacent with neighbor 172.16.1.4 Suppress hello for 0 neighbor(s) r1# 说明:因为mGRE接口默认情况在被OSPF定义为POINT_TO_POINT的网络类型,而因为POINT_TO_POINT网络类型的接口只能有一个OSPF邻居,所以现在要和两个路由器建OSPF邻居就出现了问题,因为我们必须改变mGRE接口在OSPF下的网络类型。
(4)改变所有路由器mGRE接口在OSPF下的网络类型为point-to-multipoint: r1(config)#int tunnel 1 r1(config-if)#ip ospf network point-to-multipoint r1(config-if)#
r3(config)#int tunnel 3 r3(config-if)#ip ospf network point-to-multipoint r3(config-if)#
r4(config)#int tunnel 4 r4(config-if)#ip ospf network point-to-multipoint r4(config-if)# 说明:已经将所有路由器的mGRE接口的OSPF网络类型改为point-to-multipoint。
(5)查看上海路由器R1上的OSPF邻居与路由表情况: r1#sh ip os neighbor
Neighbor ID Pri State Dead Time Address Interface 172.16.1.4 0 FULL/ - 00:01:55 100.1.1.4 Tunnel1 192.168.1.3 0 FULL/ - 00:01:45 100.1.1.3 Tunnel1 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
100.0.0.0/8 is variably subnetted, 3 subnets, 2 masks O 100.1.1.4/32 [110/100] via 100.1.1.4, 00:00:24, Tunnel1 C 100.1.1.0/24 is directly connected, Tunnel1 O 100.1.1.3/32 [110/100] via 100.1.1.3, 00:00:24, Tunnel1 172.16.0.0/24 is subnetted, 1 subnets O 172.16.1.0 [110/101] via 100.1.1.4, 00:00:24, Tunnel1 10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, FastEthernet0/0 12.0.0.0/24 is subnetted, 1 subnets C 12.1.1.0 is directly connected, Serial1/0 O 192.168.1.0/24 [110/101] via 100.1.1.3, 00:00:24, Tunnel1 S* 0.0.0.0/0 [1/0] via 12.1.1.2 r1# 说明:因为将mGRE接口的OSPF网络类型改为point-to-multipoint,所以正常与R3和R4建立OSPF邻居,并且正常学到北京和广州的路由信息。
(6)查看北京路由器R3上的OSPF邻居与路由表情况:
r3#sh ip os neighbor
Neighbor ID Pri State Dead Time Address Interface 100.1.1.1 0 FULL/ - 00:01:53 100.1.1.1 Tunnel3 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
100.0.0.0/8 is variably subnetted, 3 subnets, 2 masks O 100.1.1.4/32 [110/200] via 100.1.1.1, 00:00:52, Tunnel3 C 100.1.1.0/24 is directly connected, Tunnel3 O 100.1.1.1/32 [110/100] via 100.1.1.1, 00:00:52, Tunnel3 23.0.0.0/24 is subnetted, 1 subnets C 23.1.1.0 is directly connected, FastEthernet0/0 172.16.0.0/24 is subnetted, 1 subnets O 172.16.1.0 [110/201] via 100.1.1.1, 00:00:52, Tunnel3 10.0.0.0/24 is subnetted, 1 subnets O 10.1.1.0 [110/101] via 100.1.1.1, 00:00:52, Tunnel3 C 192.168.1.0/24 is directly connected, FastEthernet0/1 S* 0.0.0.0/0 [254/0] via 23.1.1.2 r3# 说明:北京路由器已经与上海路由器正常建立OSPF邻居,并正常学到上海网段10.1.1.0/24和广州网段172.16.1.0,但下一跳地址都为上海路由器的mGRE接口100.1.1.1,所以OSPF下无法实现spoke-and-spoke tunnel的通信方式。
(7)查看广州路由器R4上的OSPF邻居与路由表情况: r4#sh ip os neighbor
Neighbor ID Pri State Dead Time Address Interface 100.1.1.1 0 FULL/ - 00:01:48 100.1.1.1 Tunnel4 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
100.0.0.0/8 is variably subnetted, 3 subnets, 2 masks C 100.1.1.0/24 is directly connected, Tunnel4 O 100.1.1.1/32 [110/100] via 100.1.1.1, 00:01:27, Tunnel4 O 100.1.1.3/32 [110/200] via 100.1.1.1, 00:01:27, Tunnel4 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 10.0.0.0/24 is subnetted, 1 subnets O 10.1.1.0 [110/101] via 100.1.1.1, 00:01:27, Tunnel4 O 192.168.1.0/24 [110/201] via 100.1.1.1, 00:01:27, Tunnel4 S* 0.0.0.0/0 [254/0] via 24.1.1.2 r4# 说明:广州路由器已经与上海路由器正常建立OSPF邻居,并正常学到上海网段10.1.1.0/24和北京网段192.168.1.0,但下一跳地址都为上海路由器的mGRE接口100.1.1.1,所以OSPF下无法实现spoke-and-spoke tunnel的通信方式。
(8)再次查看广州到上海公司和北京公司的通信情况与数据包的路径走向: 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 = 132/200/272 ms r4# r4#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 = 220/321/384 ms r4# r4#tr r4#traceroute 10.1.1.5
Type escape sequence to abort. Tracing the route to 10.1.1.5
1 100.1.1.1 224 msec 136 msec 220 msec 2 10.1.1.5 156 msec * 368 msec r4# r4#tr r4#traceroute 192.168.1.3
Type escape sequence to abort. Tracing the route to 192.168.1.3
1 100.1.1.1 236 msec 192 msec 264 msec 2 100.1.1.3 352 msec * 372 msec r4#
说明:广州到上海公司和北京公司的通信正常,但数据包都是先发到上海路由器,所以仍然工作在hub-and-spoke tunnel而无法实现spoke-and-spoke tunnel的通信方式。
IPsec Dead Peer Detection(IPsec DPD) 无论是IKE SA还是IPsec SA,都会有lifetime,IKE SA的lifetime默认为86400 seconds,即一天,IPsec SA的lifetime默认为3600 seconds,即1小时,建立IPsec VPN的peer双方之间是没有hello包的,如果其中一个peer出现故障失去连接时,VPN peer的另一方是无法检测出来的,只有在SA的lifetime超时后才会删除与对端peer的SA,那么也就是在VPN其中的一个peer断开以后,另一个peer至少要等待3600 second(1小时)才能发现,这种情况会让人难以接受。 为了解决上述问题,在VPN peer之间引入一个类似于OSPF和EIGRP邻居之间的hello机制,通过在peer之间定期交换hello包,如果超过一定时间没有收到对方的hello包,便认为对方已经失效,从而立刻删除与对方的SA,这个机制就是IPsec Dead Peer Detection(IPsec DPD),IPsec DPD就是在IPsec中用来检测IKE peer状态的。 IPsec DPD分两种模式 Periodic (周期性的) on-demand (按需的) Periodic模式就是peer双方会每隔一个固定时间就会向对方发送一个hello包,也表示每隔一个固定时间就会从邻居peer收到一个hello包,如果超过一定的时间没有收到对方peer的hello包,则认为对方peer已经失效,从而立刻删除与对方的SA。 在配置Periodic模式时,除了需要配置hello的间隔时间之外,还可以选择配置retry时间,例如hello间隔是10秒,retry时间是2秒,那就表示每10秒都应该收到邻居一个hello包,但如果到了10秒都没收到邻居的hello包,则不会再等10秒,而是会在retry的时间2秒后再向对方发送hello,默认连续5个,即10秒后就认为邻居失效。retry默认时间为2秒、5个。
on-demand模式则不会定期在peer双方发送hello,而是根据流量来的,只有在要发数据时,才发送hello去查询邻居状态,如果没有数据要发送,就不会发送hello,所以在没有数据要发时,即使邻居失效了,本地也是不知道的,除非SA的lifetime超时,
注: ★IPsec DPD支持的设备包括路由器,PIX防火墙,并且支持各种LAN-to-LAN VPN以及Easy VPN。 ★一定要先配置了IPsec DPD,才能应用crypto map到接口,如果先应用crypto map到接口再配IPsec DPD,是不生效的。 ★IPsec DPD在peer双方都要配置。
配置IPsec DPD
说明:以上图为例,在R1、R2、R3之间配置IPsec LAN-to-LAN VPN来测试IPsec DPD的效果,其中R1相当于是Hub,同时和R2与R3建立IPsec LAN-to-LAN VPN,而R2与R3之间不做任何配置。
1.配置基础网络环境 (1)配置R1: r1(config)#int f0/0 r1(config-if)#ip add 100.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 20.1.1.0 255.255.255.0 100.1.1.2 r1(config)#ip route 30.1.1.0 255.255.255.0 100.1.1.3 r1(config)# 说明:配置R1的接口地址,并写静态路由指向R2与R3相连的网段。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 100.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 20.1.1.1 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit r2(config)#ip route 0.0.0.0 0.0.0.0 100.1.1.1 r2(config)# 说明:配置R2的接口地址,并写默认路由指向R1。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 100.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 30.1.1.1 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 100.1.1.1 r3(config)# 说明:配置R3的接口地址,并写默认路由指向R1。
2.配置IPsec LAN-to-LAN VPN (1)在R1上配置IPsec 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)# r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.2 r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.3 r1(config)# r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(config)# r1(config)#access-list 120 permit ip 10.1.1.0 0.0.0.255 20.1.1.0 0.0.0.255 r1(config)#access-list 130 permit ip 10.1.1.0 0.0.0.255 30.1.1.0 0.0.0.255 r1(config)# r1(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. r1(config-crypto-map)#set peer 100.1.1.2 r1(config-crypto-map)#set transform-set ccie r1(config-crypto-map)#match address 120 r1(config-crypto-map)#exit r1(config)# r1(config)#crypto map l2l 2 ipsec-isakmp % NOTE: This new crypto map will remain disabled until a peer and a valid access list have been configured. r1(config-crypto-map)#set peer 100.1.1.3 r1(config-crypto-map)#set transform-set ccie r1(config-crypto-map)#match address 130 r1(config-crypto-map)#exit r1(config)# r1(config)#int f0/0 r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 00:14:32.083: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#exit r1(config)# 说明:在R1上配置分别与R2和R3之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(2)在R2上配置IPsec LAN-to-LAN VPN: r2(config)#crypto isakmp policy 1 r2(config-isakmp)#encryption 3des r2(config-isakmp)#hash sha r2(config-isakmp)#authentication pre-share r2(config-isakmp)#group 2 r2(config-isakmp)#exit r2(config)# r2(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r2(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r2(cfg-crypto-trans)#exit r2(config)# r2(config)#access-list 100 permit ip 20.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r2(config)# r2(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. r2(config-crypto-map)#set peer 100.1.1.1 r2(config-crypto-map)#set transform-set ccie r2(config-crypto-map)#match address 100 r2(config-crypto-map)#exit r2(config)# r2(config)#int f0/0 r2(config-if)#crypto map l2l r2(config-if)# *Mar 1 00:10:03.175: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r2(config-if)#exit r2(config)# 说明:在R2上配置与R1之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(3)在R3上配置IPsec 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)# r3(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r3(cfg-crypto-trans)#exit r3(config)# r3(config)#access-list 100 permit ip 30.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r3(config)# r3(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. r3(config-crypto-map)#set peer 100.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/0 r3(config-if)#crypto map l2l r3(config-if)# *Mar 1 00:10:38.971: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r3(config-if)#exit r3(config)# 说明:在R3上配置与R1之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
3.测试IPsec LAN-to-LAN VPN (1)查看R1上的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当前没有任何IKE SA。
(2)查看R1上的IPsec SA: r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.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): (20.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.2 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.: 100.1.1.1, remote crypto endpt.: 100.1.1.2 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:
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): (30.1.1.0/255.255.255.0/0/0) current_peer 100.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.: 100.1.1.1, remote crypto endpt.: 100.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上始终有分别到R2与R3的IPsec SA,因为没有流量,所以目前IPsec SA不是活动状态。
(3)发送流量激活IKE SA: r1#ping 20.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 20.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 120/169/212 ms r1# 说明:R1向R2连接的网段20.1.1.0/24发送流量激活IKE SA。
(4)再次查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.2 100.1.1.1 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:因为R1向R2连接的网段20.1.1.0/24发送了流量,所以IKE SA被激活。
(5)再次查看R1上的IPsec SA: r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.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): (20.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.2 port 500 PERMIT, flags={origin_is_acl,ipsec_sa_request_sent} #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.: 100.1.1.1, remote crypto endpt.: 100.1.1.2 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x13D515D9(332731865)
inbound esp sas: spi: 0x3F0697DF(1057396703) 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): (4549469/3583) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x13D515D9(332731865) 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): (4549469/3583) 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): (30.1.1.0/255.255.255.0/0/0) current_peer 100.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.: 100.1.1.1, remote crypto endpt.: 100.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向R2连接的网段20.1.1.0/24发送了流量,所以R1与R2的IPsec SA为活动状态,而与R3的IPsec SA却为非活动状态。
(5)发送流量激活与R3的IKE SA: r1#ping 30.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 30.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 140/170/240 ms r1# 说明:R1向R3连接的网段30.1.1.0/24发送流量激活IKE SA。
(6)再次查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.3 100.1.1.1 QM_IDLE 1002 0 ACTIVE 100.1.1.2 100.1.1.1 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:因为R1向R2和R3连接的网段都发送了流量,所以与R2和R3的IKE SA都被激活了。
(7)再次查看R1上的IPsec SA: r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.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): (20.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.2 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.: 100.1.1.1, remote crypto endpt.: 100.1.1.2 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x13D515D9(332731865)
inbound esp sas: spi: 0x3F0697DF(1057396703) 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): (4549469/3539) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x13D515D9(332731865) 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): (4549469/3537) 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): (30.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.3 port 500 PERMIT, flags={origin_is_acl,ipsec_sa_request_sent} #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.: 100.1.1.1, remote crypto endpt.: 100.1.1.3 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0xA480ABFA(2759896058)
inbound esp sas: spi: 0x8FCB9CC8(2412485832) 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): (4492074/3591) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0xA480ABFA(2759896058) 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): (4492074/3591) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:因为R1向R2和R3连接的网段都发送了流量,所以与R2和R3的IPsec SA都为活动状态。
(8)查看R1目前与R2和R3建立的IKE SA时间: r1#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1002 100.1.1.1 100.1.1.3 ACTIVE 3des sha psk 2 23:59:25 Engine-id:Conn-id = SW:2
1001 100.1.1.1 100.1.1.2 ACTIVE 3des sha psk 2 23:58:30 Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r1# 说明:目前R1与R2建立的IKE SA的lifetime还剩23小时58分,与R3的lifetime还剩23小时59分为,最新建立的为24小时。
4.测试IPsec DPD: (1)断开R2与R1相连的接口F0/0: r2(config)#int f0/0 r2(config-if)#shutdown r2(config-if)# 说明:断开R2与R1相连的接口F0/0,测试SA状态。
(2)测试R1分别到R2与R3直连网段的通信情况: r1#ping 30.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 30.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 148/174/196 ms r1# r1#ping 20.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 20.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 ..... Success rate is 0 percent (0/5) r1# 说明:R1到R3直连网段的通信正常,但因为R2的接口已经断开,所以与R2直连网段的通信失败。
(3)查看R1当前的IKE SA状态: r1#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1002 100.1.1.1 100.1.1.3 ACTIVE 3des sha psk 2 23:51:41 Engine-id:Conn-id = SW:2
1001 100.1.1.1 100.1.1.2 ACTIVE 3des sha psk 2 23:50:47 Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r1#
r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.3 100.1.1.1 QM_IDLE 1002 0 ACTIVE 100.1.1.2 100.1.1.1 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1#
说明:虽然R2与R1相连的接口已经断开,但R1上并未发现,可以看见目前IKE SA的状态依然正常,并且时间已经过了很久,只有在SA的lifetime超时后才会删除。
(4)在R1、R2、R3上配置IPsec DPD:
R3: r3(config)#crypto isakmp keepalive 10 periodic r3(config)#int f0/0 r3(config-if)#no crypto map l2l r3(config-if)# *Mar 1 00:21:17.511: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF r3(config-if)# r3(config-if)#crypto map l2l r3(config-if)#
R2: r2 (config)#crypto isakmp keepalive 10 periodic
r2 (config)#int f0/0 r2 (config-if)#no crypto map l2l r2 (config-if)# *Mar 1 00:18:41.363: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF r2 (config-if)# r2 (config-if)#crypto map l2l r2 (config-if)# *Mar 1 00:18:47.195: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r2 (config-if)#
R1: r1(config)#crypto isakmp keepalive 10 periodic
r1(config)#int f0/0 r1(config-if)#no crypto map l2l r1(config-if)# *Mar 1 00:18:41.363: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF r1(config-if)# r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 00:18:47.195: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)# 说明:配置了IPsec DPD之后,必须重新应用crypto map才能生效。
(5)再次查看R1当前的IKE SA状态:
r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.3 100.1.1.1 QM_IDLE 1003 0 ACTIVE 100.1.1.2 100.1.1.1 MM_NO_STATE 1001 0 ACTIVE (deleted)
IPv6 Crypto ISAKMP SA
r1# 说明:因为R1不可能收到R2的IPsec DPD的hello,所以确定将与R2的IKE SA删除。
(6)再次查看R1当前的IKE SA状态: r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.3 100.1.1.1 QM_IDLE 1003 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:因为R1收不到R2的IPsec DPD的hello,所以已经将与R2的IKE SA删除。
当IPsec VPN peer之间建立IPsec SA之后,路由器在维护IPsec SA状态时是需要消耗系统资源的,因为要占用内存和CPU,如果某台路由器拥有大量的VPN peer,那么也将消耗大量的系统资源来维护IPsec SA。与邻居之间的IPsec SA在lifetime没有超时之前,是不会被删除的,即使是配置了IPsec DPD,也只有在VPN peer失效后才会删除相应IPsec SA;但如果该VPN路由器与某些peer之间没有流量要传递,那么与这些peer之间的IPsec SA就是空闲的,有和没有是一样的,所以当与某些peer之间没有流量时,我们就想办法让VPN路由器删除这些空闲的IPsec SA,从而节省系统资源和内存空间,等到需要传递流量时,再建立相应IPsec SA,这样就可以充份利用系统资源。 要达到在IPsec SA空闲时将其删除的目的,需要使用IPsec SA Idle Timer机制,IPsec SA Idle Timer为IPsec SA设置空闲时间,在这个时间内没有流量传递,就认为该IPsec SA是空闲的,从而将其删除。 IPsec SA Idle Timer和IPsec DPD不一样,IPsec DPD只有在peer不可用时才会删除SA,而IPsec SA Idle Timer时在没有流量的情况下就会删除SA。
注: ★如果IPsec SA被删除了,那么IKE SA也照样会[被删除的。 ★IOS 12.3(14)T以及之后版本才支持IPsec SA Idle Timer。 ★IPsec SA Idle Timer可以在全局(globally)下配,也可以在crypto map下配,全局下配的对所有SA生效,而在crypto map下配的则只针对特定peer的SA生效。 ★一定要先配置了IPsec SA Idle Timer,才能应用crypto map到接口,如果先应用crypto map到接口再配IPsec DPD,是不生效的。 ★IPsec SA Idle Timer不需要在peer双方都配置,单方配置也可以。
配置IPsec SA Idle Timer
说明:以上图为例,在R1、R2、R3之间配置IPsec LAN-to-LAN VPN来测试IPsec SA Idle Timer的效果,其中R1相当于是Hub,同时和R2与R3建立IPsec LAN-to-LAN VPN,而R2与R3之间不做任何配置。
1.配置基础网络环境 (1)配置R1: r1(config)#int f0/0 r1(config-if)#ip add 100.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 20.1.1.0 255.255.255.0 100.1.1.2 r1(config)#ip route 30.1.1.0 255.255.255.0 100.1.1.3 r1(config)# 说明:配置R1的接口地址,并写静态路由指向R2与R3相连的网段。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 100.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 20.1.1.1 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit r2(config)#ip route 0.0.0.0 0.0.0.0 100.1.1.1 r2(config)# 说明:配置R2的接口地址,并写默认路由指向R1。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 100.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 30.1.1.1 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 100.1.1.1 r3(config)# 说明:配置R3的接口地址,并写默认路由指向R1。
2.配置IPsec LAN-to-LAN VPN (1)在R1上配置IPsec 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)# r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.2 r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.3 r1(config)# r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(config)# r1(config)#access-list 120 permit ip 10.1.1.0 0.0.0.255 20.1.1.0 0.0.0.255 r1(config)#access-list 130 permit ip 10.1.1.0 0.0.0.255 30.1.1.0 0.0.0.255 r1(config)# r1(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. r1(config-crypto-map)#set peer 100.1.1.2 r1(config-crypto-map)#set transform-set ccie r1(config-crypto-map)#match address 120 r1(config-crypto-map)#exit r1(config)# r1(config)#crypto map l2l 2 ipsec-isakmp % NOTE: This new crypto map will remain disabled until a peer and a valid access list have been configured. r1(config-crypto-map)#set peer 100.1.1.3 r1(config-crypto-map)#set transform-set ccie r1(config-crypto-map)#match address 130 r1(config-crypto-map)#exit r1(config)# r1(config)#int f0/0 r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 00:14:32.083: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#exit r1(config)# 说明:在R1上配置分别与R2和R3之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(2)在R2上配置IPsec LAN-to-LAN VPN: r2(config)#crypto isakmp policy 1 r2(config-isakmp)#encryption 3des r2(config-isakmp)#hash sha r2(config-isakmp)#authentication pre-share r2(config-isakmp)#group 2 r2(config-isakmp)#exit r2(config)# r2(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r2(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r2(cfg-crypto-trans)#exit r2(config)# r2(config)#access-list 100 permit ip 20.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r2(config)# r2(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. r2(config-crypto-map)#set peer 100.1.1.1 r2(config-crypto-map)#set transform-set ccie r2(config-crypto-map)#match address 100 r2(config-crypto-map)#exit r2(config)# r2(config)#int f0/0 r2(config-if)#crypto map l2l r2(config-if)# *Mar 1 00:10:03.175: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r2(config-if)#exit r2(config)# 说明:在R2上配置与R1之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(3)在R3上配置IPsec 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)# r3(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r3(cfg-crypto-trans)#exit r3(config)# r3(config)#access-list 100 permit ip 30.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r3(config)# r3(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. r3(config-crypto-map)#set peer 100.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/0 r3(config-if)#crypto map l2l r3(config-if)# *Mar 1 00:10:38.971: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r3(config-if)#exit r3(config)# 说明:在R3上配置与R1之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(4)发送流量激活IKE SA:
r1#ping 20.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 20.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 104/146/200 ms r1# r1#ping 30.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 30.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 ..!!! Success rate is 60 percent (3/5), round-trip min/avg/max = 124/181/280 ms r1# 说明:R1向R2和R3连接的网段发送流量激活IKE SA。
(5)查看R1上的IKE SA(ISAKMP SA):
r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.3 100.1.1.1 QM_IDLE 1007 0 ACTIVE 100.1.1.2 100.1.1.1 QM_IDLE 1006 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:因为R1向R2和R3连接的网段都发送了流量,所以与R2和R3的SA都被激活了。
(6)查看R1目前与R2和R3建立的IKE SA时间: r1#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1007 100.1.1.1 100.1.1.3 ACTIVE 3des sha psk 2 23:59:03 Engine-id:Conn-id = SW:7
1006 100.1.1.1 100.1.1.2 ACTIVE 3des sha psk 2 23:58:47 Engine-id:Conn-id = SW:6
IPv6 Crypto ISAKMP SA
r1# 说明:目前R1与R2建立的IKE SA的lifetime还剩23小时58分,与R3的lifetime还剩23小时59分为,最新建立的为24小时。
(7)再次查看R1上的IPsec SA: r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.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): (20.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.2 port 500 PERMIT, flags={origin_is_acl,} #pkts encaps: 5, #pkts encrypt: 5, #pkts digest: 5 #pkts decaps: 5, #pkts decrypt: 5, #pkts verify: 5 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 0, #pkts compr. failed: 0 #pkts not decompressed: 0, #pkts decompress failed: 0 #send errors 5, #recv errors 0
local crypto endpt.: 100.1.1.1, remote crypto endpt.: 100.1.1.2 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x3622878D(908232589)
inbound esp sas: spi: 0xFE1DEB40(4263373632) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 11, flow_id: SW:11, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4407583/3553) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x3622878D(908232589) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 12, flow_id: SW:12, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4407583/3552) 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): (30.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.3 port 500 PERMIT, flags={origin_is_acl,} #pkts encaps: 3, #pkts encrypt: 3, #pkts digest: 3 #pkts decaps: 3, #pkts decrypt: 3, #pkts verify: 3 #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.: 100.1.1.1, remote crypto endpt.: 100.1.1.3 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0xC5C19F0A(3317800714)
inbound esp sas: spi: 0x9EA781(10397569) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 13, flow_id: SW:13, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4439668/3569) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0xC5C19F0A(3317800714) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 14, flow_id: SW:14, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4439668/3568) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:因为R1向R2和R3连接的网段都发送了流量,所以与R2和R3的IPsec SA都为活动状态。
3.测试IPsec SA Idle Timer (1)在R1上配置IPsec SA Idle Timer:
r1(config)#crypto ipsec security-association idle-time 60 r1(config)# r1(config)#int f0/0 r1(config-if)#no crypto map l2l r1(config-if)# *Mar 1 00:30:20.555: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF r1(config-if)# r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 00:30:24.791: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)# 说明:配置了IPsec SA Idle Timer之后,必须重新应用crypto map才能生效;IPsec SA Idle Timer不需要在peer双方都配置,在R1单方配置也可以。
(2)在R3上向R1长时间发送流量: r3#ping 10.1.1.1 source 30.1.1.1 repeat 10000000
Type escape sequence to abort. Sending 10000000, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: Packet sent with a source address of 30.1.1.1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 说明:使用以上命令在R3上向R1长时间发送流量,以免SA空闲。
(3)再次查看R1当前的IKE SA状态: r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.1 100.1.1.3 QM_IDLE 1008 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:在R1上配置了IPsec SA Idle Timer之后,因为与R2之间没有流量,所以与R2的IKE SA被认为是空闲SA而被删除了,但由于R3与R1之间长时间有流量,所以与R3之间的IKE SA还是正常状态。
(4)再次查看R1当前的IPsec SA状态: r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.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): (20.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.2 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.: 100.1.1.1, remote crypto endpt.: 100.1.1.2 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:
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): (30.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.3 port 500 PERMIT, flags={origin_is_acl,} #pkts encaps: 582, #pkts encrypt: 582, #pkts digest: 582 #pkts decaps: 582, #pkts decrypt: 582, #pkts verify: 582 #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.: 100.1.1.1, remote crypto endpt.: 100.1.1.3 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0xB5D4399C(3050584476)
inbound esp sas: spi: 0xE4D4B738(3839145784) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 15, flow_id: SW:15, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4489233/3496) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0xB5D4399C(3050584476) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 16, flow_id: SW:16, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4489233/3496) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:因为R1与R2之间没有流量,所以与R2之间的IPsec SA为非活动状态,而与R3之间长时间有流量,所以与R3的IPsec SA为正常状态。
有时为了网络冗余性,会设计一个场点两台VPN路由器,使用两台路由器来和对方建立VPN连接,对于VPN路由器来说,如果要同时和对方一台以上的路由器建立VPN连接,这并不困难,但有时希望只和对方某单台路由器建立VPN连接,只有当使用中的VPN路由器不可用时,再启用其它路由器作备用;这种IPsec VPN使用情况,我们称为IPsec Preferred Peer。 IPsec Preferred Peer由两个部件组成: Default peer IPsec DPD
Default peer就是在和多台路由器建立VPN连接时,其中优先被使用的那台称为Default peer,而其它都是备用路由器,只有在Default peer不可用时,才会尝试和其它备路由器连接。Default peer是在crypto map下通过多条命令“set peer”指定多个peer来实现的,而Default peer必须是第一个指定,就是希望被优先使用的那台路由器必须写在第一条。 因为在和多台路由器建立VPN连接后,只有当Default peer不可用时,才会尝试和其它备路由器建立连接,那么什么时候才认为Default peer不可用呢?如果靠SA的lifetime,会让任何人都无法接受,所以在实施Default peer时,必须配置IPsec DPD,但是否配置IPsec SA Idle-Timer是自己决定的,如果要配置IPsec SA Idle-Timer,必须在crypto map下配置,不能在globally下配置,但如果globally下已经有了配置,那么crypto map下的值必须和globally的不同,否则是不生效的。
配置IPsec Preferred Peer
说明:以上图为例,在R1、R2、R3之间配置IPsec LAN-to-LAN VPN来测试IPsec Preferred Peer的效果,其中R1相当于是Hub,同时和R2与R3建立IPsec LAN-to-LAN VPN,而R2与R3之间不做任何配置。
1.配置基础网络环境 (1)配置R1: r1(config)#int f0/0 r1(config-if)#ip add 100.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 20.1.1.0 255.255.255.0 100.1.1.2 r1(config)#ip route 30.1.1.0 255.255.255.0 100.1.1.3 r1(config)# 说明:配置R1的接口地址,并写静态路由指向R2与R3相连的网段。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 100.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 20.1.1.1 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit r2(config)#ip route 0.0.0.0 0.0.0.0 100.1.1.1 r2(config)# 说明:配置R2的接口地址,并写默认路由指向R1。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 100.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 30.1.1.1 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 100.1.1.1 r3(config)# 说明:配置R3的接口地址,并写默认路由指向R1。
2.配置和测试IPsec Preferred Peer (1)在R1上配置IPsec Preferred Peer: 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)# r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.2 r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.3 r1(config)# r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(config)# r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 20.1.1.0 0.0.0.255 r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 30.1.1.0 0.0.0.255 r1(config)# r1(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. r1(config-crypto-map)#set peer 100.1.1.2 default r1(config-crypto-map)#set peer 100.1.1.3 r1(config-crypto-map)#set transform-set ccie r1(config-crypto-map)#match address 120 r1(config-crypto-map)#exit r1(config)# r1(config)# r1(config)#int f0/0 r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 00:12:49.247: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#exit r1(config)# 说明:在R1上同时配置与R2和R3建立IPsec LAN-to-LAN VPN,其中R2(100.1.1.2)为Default peer,所以只有当R2不可用时,才会使用R3(100.1.1.3)。
(2)在R2上配置IPsec LAN-to-LAN VPN: r2(config)#crypto isakmp policy 1 r2(config-isakmp)#encryption 3des r2(config-isakmp)#hash sha r2(config-isakmp)#authentication pre-share r2(config-isakmp)#group 2 r2(config-isakmp)#exit r2(config)# r2(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r2(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r2(cfg-crypto-trans)#exit r2(config)# r2(config)#access-list 100 permit ip 20.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r2(config)# r2(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. r2(config-crypto-map)#set peer 100.1.1.1 r2(config-crypto-map)#set transform-set ccie r2(config-crypto-map)#match address 100 r2(config-crypto-map)#exit r2(config)# r2(config)#int f0/0 r2(config-if)#crypto map l2l r2(config-if)# *Mar 1 00:10:03.175: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r2(config-if)#exit r2(config)# 说明:在R2上配置与R1之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(3)在R3上配置IPsec 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)# r3(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r3(cfg-crypto-trans)#exit r3(config)# r3(config)#access-list 100 permit ip 30.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r3(config)# r3(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. r3(config-crypto-map)#set peer 100.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/0 r3(config-if)#crypto map l2l r3(config-if)# *Mar 1 00:10:38.971: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r3(config-if)#exit r3(config)# 说明:在R3上配置与R1之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(4)发送流量激活IKE SA: r1#ping 20.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 20.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 132/174/248 ms r1# r1# r1#ping 30.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 30.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 ..... Success rate is 0 percent (0/5) r1# 说明:R1目前只能与R2相连的网段20.1.1.0/24通信,不能与R3相连的网段30.1.1.0/24通信,因为R2是default peer,所以在R2不可用之前,R3是被启用的。
(5)查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.2 100.1.1.1 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:R1目前只建立了与R2的IKE SA,因为R2是default peer,所以在R2不可用之前,R3是被启用的。
(6)查看R1上的IPsec SA(IPsec SA):
r1# r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.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): (20.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.2 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.: 100.1.1.1, remote crypto endpt.: 100.1.1.2 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0xB98C42DF(3112977119)
inbound esp sas: spi: 0x1CE09B84(484481924) 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): (4383483/3533) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0xB98C42DF(3112977119) 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): (4383483/3532) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas:
local crypto endpt.: 100.1.1.1, remote crypto endpt.: 100.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:
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): (30.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.2 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 15, #recv errors 0
local crypto endpt.: 100.1.1.1, remote crypto endpt.: 100.1.1.2 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:
local crypto endpt.: 100.1.1.1, remote crypto endpt.: 100.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与R2的IPsec SA为活动状态,而与R3的IPsec SA为非活动状态
(7)断开R2的VPN接口F0/0: r2(config)#interface f0/0 r2(config-if)#shutdown r2(config-if)# 说明:断开R2与R1相连的接口F0/0,用以测试IPsec Preferred Peer。
(8)再次查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.2 100.1.1.1 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:虽然R2已经断开,但R1无法检测到,所以R1不会尝试与R3建立VPN连接,除非配置IPsec DPD让R1能够检测到R2已经不可用。
(9)在R1和R3上配置IPsec DPD: R1: r1(config)#crypto isakmp keepalive 10 periodic r1(config)#int f0/0 r1(config-if)#no crypto map l2l r1(config-if)# *Mar 1 01:02:20.055: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF r1(config-if)# r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 01:02:25.615: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#
R3: r3(config)#crypto isakmp keepalive 10 periodic r3(config)#int f0/0 r3(config-if)#no crypto map l2l r3(config-if)# *Mar 1 01:02:25.055: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF r3(config-if)# r3(config-if)#crypto map l2l r3(config-if)# *Mar 1 01:02:26.612: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r3(config-if)# 说明:在R1和R3上配置上IPsec DPD,用以检测对方peer的状态。
(10)R1再次向R2和R3发送流量: r1#ping 20.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 20.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 ..... Success rate is 0 percent (0/5) r1#
r1#ping 30.1.1.1 source 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 30.1.1.1, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 84/201/324 ms r1# 说明:因为R2已经断开了,所以与备路由器R3建立VPN连接。
(11)再次查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.2 100.1.1.1 MM_NO_STATE 0 0 ACTIVE (deleted) 100.1.1.3 100.1.1.1 QM_IDLE 1004 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:与R2的IKE SA即将被删除,而与R3的IKE SA已经建立。
(12)再次查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.3 100.1.1.1 QM_IDLE 1005 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:与R2的IKE SA已经完全被删除,从而被备路由器R3的IKE SA取代。
在配置IPsec VPN时,通常我们需要配置ACL来定义感兴趣流,被ACL匹配的流量就是需要通过IPsec 隧道来加密传输的流量,同时,IPsec 建立的IPsec SA会话里也会记录着VPN双方哪些流量是需要通过IPsec 隧道来加密传输的,很显然,这些需要通过IPsec 隧道来加密传输的流量应该被发到相应的VPN peer,这里就衍生出了一个机制,称为Reverse route injection (RRI),RRI是为需要通过IPsec 隧道来加密传输的流量自动创建下一跳指向相应VPN peer的静态路由。 当配置的crypto map是静态crypto map时,RRI是根据crypto map中的ACL所定义的流量来自动创建静态路由的,但在配置动态crypto map时,是不会通过ACL来定义感兴趣流的,所以此时RRI就无法自动创建静态路由,因为事先根本无法知道哪些流量需要通过IPsec 隧道来加密传输,所以crypto map中,只能在建立IPsec SA后,根据IPsec SA中指示的需要被保护的流量来自动创建静态路由。 RRI自动创建的静态路由可以重分布进任何动态路由协议后向邻居传递。
配置RRI的方法是在crypto map下输入命令reverse-route。
静态crypto map的静态路由是根据ACL自动创建的,路由的下一跳是crypto map中指定的peer,只要peer或ACL没了,路由也就没了,但有没有IPsec SA不影响静态路由。 动态crypto map的静态路由是根据IPsec SA自动创建的,如果IPsec SA没了,那么自动创建的静态路由也会随之消失。 在IOS 12.3(14)T和之后的版本,配置RRI的命令应该输入reverse-route static,无论什么情况下静态路由都会生效。 在使用ACL定义感兴趣流量时,不得出现“any”字样。
配置Reverse route injection (RRI)
说明:以上图为例,在R1和R3之间配置IPsec LAN-to-LAN VPN来测试Reverse route injection (RRI)的效果,在R1上配置RRI之后,还将在R1与R2之间配置OSPF动态路由协议,将RRI自动创建的静态路由重分布进OSPF,从而让R1的OSPF邻居R2能够动态学习到需要被IPsec 隧道加密的网段信息。
1.配置基础网络环境 (1)配置R1: r1(config)#int f0/0 r1(config-if)#ip add 100.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 100.1.1.3
r1(config)#router ospf 1 r1(config-router)#network 10.1.1.1 0.0.0.0 area 0 r1(config-router)#exit‘ 说明:配置R1的接口地址,并写默认路由指向R3,同时与R2之间启用OSPF动态路由协议。
(2)配置R2: r2(config)#int f0/1 r2(config-if)#ip add 10.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#router ospf 1 r2(config-router)#network 10.1.1.2 0.0.0.0 area 0 r2(config-router)#exit
说明:配置R2的接口地址,并与R1之间启用OSPF动态路由协议。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip address 100.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 30.1.1.1 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 100.1.1.1 说明:配置R3的接口地址,并写默认路由指向R1。
(4)查看R2上的OSPF状态: r2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface 100.1.1.1 1 FULL/DR 00:00:34 10.1.1.1 FastEthernet0/1 r2# 说明:R2已经和R1正常建立OSPF邻居关系。
(5)查看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 10.1.1.1 to network 0.0.0.0
10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, FastEthernet0/1 r2# 说明:R2没有通过OSPF从R1那里收到任何路由。
2.配置IPsec LAN-to-LAN VPN (1)在R1上配置IPsec 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)# r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.3 r1(config)# r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(config)# r1(config)# r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 30.1.1.0 0.0.0.255 r1(config)# r1(config)# r1(config)# r1(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. r1(config-crypto-map)#set peer 100.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)# r1(config)# r1(config)#int f0/0 r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 00:05:44.615: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#exit 说明:在R1上配置与R3之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(2)在R3上配置IPsec 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)# r3(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r3(cfg-crypto-trans)#exit r3(config)# r3(config)#access-list 100 permit ip 30.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r3(config)# r3(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. r3(config-crypto-map)#set peer 100.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/0 r3(config-if)#crypto map l2l r3(config-if)# *Mar 1 00:06:23.499: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r3(config-if)# r3(config-if)#exit 说明:在R3上配置与R1之间的IPsec LAN-to-LAN VPN,各参数命令请参考前文说明。
(3)在R1上向R3发送流量激活IKE SA: r2#ping 30.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 30.1.1.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 96/139/240 ms r2# 说明:R1向R3连接的网段发送流量激活IKE SA。
(4)查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.3 100.1.1.1 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:因为R1向R3连接的网段都发送了流量,所以与R3的SA都被激活了。
(5)查看R1上的IPsec SA:
r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.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): (30.1.1.0/255.255.255.0/0/0) current_peer 100.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.: 100.1.1.1, remote crypto endpt.: 100.1.1.3 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x87A7BBC5(2275916741)
inbound esp sas: spi: 0xEBC08B2A(3955264298) 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): (4546772/3573) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x87A7BBC5(2275916741) 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): (4546772/3572) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:R1的IPsec SA中显示的加密流量和ACL所配置的一样,即为10.1.1.0/24到30.1.1.0/24。
(6)查看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.3 to network 0.0.0.0
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, FastEthernet0/0 10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, FastEthernet0/1 S* 0.0.0.0/0 [1/0] via 100.1.1.3 r1# 说明:因为没有配置RRI,所以R1上目前没有为需要加密的流量自动创建静态路由。
3.配置RRI (1)在R1上配置RRI: r1(config)#crypto map l2l 1 ipsec-isakmp r1(config-crypto-map)#reverse-route static This will remove all existing SAs on this map r1(config-crypto-map)# 说明:因为本路由器IOS高于IOS 12.3(14)T,所以使用命令reverse-route static。
(2)再次查看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.3 to network 0.0.0.0
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, FastEthernet0/0 10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, FastEthernet0/1 30.0.0.0/24 is subnetted, 1 subnets S 30.1.1.0 [1/0] via 100.1.1.3 S* 0.0.0.0/0 [1/0] via 100.1.1.3 r1# 说明:因为配置了RRI,,所以R1上为需要加密的流量自动创建了静态路由。
(3)再次查看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 10.1.1.1 to network 0.0.0.0
10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, FastEthernet0/1 r2# 说明:R2上依然没有从R1那里收到任何路由。
(4)在R1上重分布静态路由进OSPF: r1(config)#router ospf 1 r1(config-router)#redistribute static subnets r1(config-router)# 说明:在R1上将RRI自动创建的静态路由重分布进OSPF。
(5)再次查看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 10.1.1.1 to network 0.0.0.0
10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, FastEthernet0/1 30.0.0.0/24 is subnetted, 1 subnets O E2 30.1.1.0 [110/20] via 10.1.1.1, 00:00:04, FastEthernet0/1 r2# 说明:因为R1将RRI自动创建的静态路由重分布进了OSPF,所以R2收到了相应路由。
(6)测试R2到R3的流量情况:
r2#ping 30.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 30.1.1.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 100/149/216 ms r2#
说明:R2收到路由后,可以与VPN隧道对端的网段通信了。
在考虑网络冗余性时,会设计一个场点两台VPN路由器,这两台VPN路由器执行完全相同的功能,其中的一台是优先被使用的,而其它的都作为备用路由器,只有当主用路由器不可用时,才转而使用备路由器,从而实现网络的高可用性(High Availability)。要达到这样的目的,前面讲述的IPsec Preferred Peer可以实现这样的功能,但我们不难发现,如果要使用IPsec Preferred Peer,有一些很明显的弊端,比如这些结合工作的多台路由器各自都拥有独立的IP地址,对于VPN peer来说都是不同的对等体,并且在对端VPN peer上需要为多台路由器做好配置,所以IPsec Preferred Peer需要VPN双方共同协作才能实现高可用性,并且这种高可用性不是透明的。
为了将网络高可用性做的更好,我们需要实施IPsec VPN High Availability(IPsec VPN HA),实现的方法就是将在一个场点布署的多台VPN路由器通过HSRP虚拟成同一个IP地址,然后多台VPN路由器中HSRP角色为Active的路由器以HSRP虚拟IP地址为源负责与对端建立IPsec连接,当Active路由器不可用之后,其它再次成为Active的备路由器再次以同一个HSRP虚拟IP地址为源与对端建立IPsec连接,从而为用户提供不间断服务,并且这对端远端VPN peer来说,不需要做额外的配置,只要保持正常配置即可,因为布署IPsec VPN HA的多台路由器无论何时都像是同一台路由器。
在实施IPsec VPN HA时,需要同时完成两个功能组件: Reverse Route Injection (RRI) Hot Standby Router Protocol and IPsec (HSRP)
其中RRI的功能已经在上一节中介绍过,可以将需要被IPsec VPN隧道加密的网段信息动态地通告给内网路由器; HSRP的功能在此更加清晰明了,目的就是为了将实现IPsec VPN HA的多台路由器虚拟成同一台路由器,即同一个IP地址。 因为HSRP是工作在以太网链路上的,HSRP必须将多台路由器用来建立IPsec VPN连接的外网地址虚拟成同一个IP地址,所以实现IPsec VPN HA的多台路由器的外网接口必须通过交换机或Hub相连,且IP地址都在同网段,否则难以实现IPsec VPN HA。 当HSRP组中Active的路由器不可用之后,再次成为Active的备路由器会接替IPsec VPN的工作,在VPN对端上的IPsec连接也必须和新的Active路由器重新建立,那么此时老的IPsec连接就应该尽快删除,所以在布署IPsec VPN HA时,IPsec DPD还是需要配置的。 当HSRP组中Active的路由器不可用之后,再次成为Active的备路由器是需要和VPN对端重新建立IPsec会话的,而不是继续使用原来的IPsec会话,因为再次成为Active的备路由器原本就没有IPsec会话,所以要重新建立。 在配置HSRP时,接口上需要定义HSRP name,当该name或接口地址改变时,所应用的crypto map也要重新应用。 在配置IPsec VPN HA中的HSRP时,多台路由器的优先级建议设置成相同或保持默认而不做更改,Active的角色则依靠IP地址大小来选举。
注: ★实施IPsec VPN HA时也需要配置IPsec DPD。 ★在Active的路由器不可用之后,再次成为Active的备路由器和VPN对端的IPsec会话是新建立的,所以VPN流量会丢包。 ★IPsec VPN HA中路由器的HSRP优先级建议设置成相同或保持默认,最终依靠IP地址大小来选举。 ★在多台VPN路由器之间配置HSRP组时,应该Track自己的内网接口,在自己内网接口不可用时,则让出自己的Active角色。 ★HSRP必须在路由器的外网接口上配置,但内网接口不一定要配置。
配置IPsec VPN HA
说明:以上图为例,在R1、R2、R3之间配置IPsec LAN-to-LAN VPN来测试IPsec VPN HA的效果,其中R2和R3通过HSRP虚拟成单台VPN路由器,虚拟IP地址为100.1.1.10,然后以该虚拟IP地址为源和R1建立VPN连接,在任何时候,R2和R3中只有Active的那台路由器负责和对端建立VPN连接,在Active路由器不可用时,则备用路由器接替原Active的角色。R2和R3同时还与内部路由器R4启用OSPF动态路由协议,并且通过配置RRI然后重分布进OSPF,将去往对端VPN网段信息通告给R4,最终让R4通过VPN隧道与R1相连的网段10.1.1.0/24通信。
1.配置基础网络环境 (1)配置R1: r1(config)#int f0/0 r1(config-if)#ip add 100.1.1.1 255.255.255.0 r1(config-if)#no sh r1(config-if)#exi r1(config)#
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 100.1.1.10 r1(config)# 说明:配置R1的接口地址,并写默认路由指向R2和R3通过HSRP虚拟的IP地址100.1.1.10。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 100.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 30.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#ip route 0.0.0.0 0.0.0.0 100.1.1.1
r2(config)#router ospf 1 r2(config-router)#network 30.1.1.2 0.0.0.0 area 0 r2(config-router)#redistribute static subnets r2(config-router)#exit 说明:配置R2的接口地址,并写默认路由指向R1,然后和R4之间启用OSPF动态路由协议,将静态路由重分布进OSPF。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 100.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 30.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 100.1.1.1
r3(config)#router ospf 1 r3(config-router)#network 30.1.1.3 0.0.0.0 area 0 r3(config-router)#redistribute static subnets r3(config-router)#exit 说明:配置R3的接口地址,并写默认路由指向R1,然后和R4之间启用OSPF动态路由协议,将静态路由重分布进OSPF。
(4)配置R4: r4(config)#int f0/1 r4(config-if)#ip add 30.1.1.4 255.255.255.0 r4(config-if)#no sh r4(config-if)#exit
r4(config)#router ospf 1 r4(config-router)#network 30.1.1.4 0.0.0.0 area 0 r4(config-router)#exit 说明:配置R4的接口地址,并且和R2与R3之间启用OSPF动态路由协议。
(5)查看R4上的OSPF状态: r4#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface 100.1.1.2 1 FULL/DR 00:00:30 30.1.1.2 FastEthernet0/1 100.1.1.3 1 FULL/BDR 00:00:34 30.1.1.3 FastEthernet0/1 r4# 说明:R4已经和R2与R3建立OSPF邻居。
(6)查看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 not set
30.0.0.0/24 is subnetted, 1 subnets C 30.1.1.0 is directly connected, FastEthernet0/1 r4# 说明:R4还没有通过OSPF从R2与R3那里收到任何路由。
2.配置IPsec VPN HA (1)在R1上配置IPsec 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)# r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.10 r1(config)# r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(config)# r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 30.1.1.0 0.0.0.255 r1(config)# r1(config)# r1(config)#crypto isakmp keepalive 10 periodic r1(config)# r1(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. r1(config-crypto-map)#set peer 100.1.1.10 r1(config-crypto-map)#set transform-set ccie r1(config-crypto-map)#match address 100 r1(config-crypto-map)#exit r1(config)# r1(config)#int f0/0 r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 00:41:43.791: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)# r1(config-if)#exit 说明:R1上正常配置IPsec LAN-to-LAN VPN,但R1的VPN peer则指向R2和R3通过HSRP虚拟的IP地址100.1.1.10,而不是指向R2与R3的真实地址。
(2)在R2上配置IPsec LAN-to-LAN VPN,并配置IPsec VPN HA: r2(config)#crypto isakmp policy 1 r2(config-isakmp)#encryption 3des r2(config-isakmp)#hash sha r2(config-isakmp)#authentication pre-share r2(config-isakmp)#group 2 r2(config-isakmp)#exit r2(config)# r2(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r2(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r2(cfg-crypto-trans)#exit r2(config)# r2(config)#access-list 100 permit ip 30.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r2(config)#crypto isakmp keepalive 10 periodic r2(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. r2(config-crypto-map)#set peer 100.1.1.1 r2(config-crypto-map)#set transform-set ccie r2(config-crypto-map)#match address 100 r2(config-crypto-map)#reverse-route static This will remove all existing SAs on this map r3(config-crypto-map)# r2(config-crypto-map)#exit r2(config)# r2(config)#int f0/0 r2(config-if)#standby 1 ip 100.1.1.10 r2(config-if)#standby 1 preempt r2(config-if)#standby 1 track f0/1 r2(config-if)#standby 1 name chinaccie r2(config-if)#crypto map l2l redundancy chinaccie r2(config-if)#exit *Mar 1 00:44:54.563: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r2(config-if)#exit 说明:在R2上配置IPsec LAN-to-LAN VPN,并开启RRI功能,在外网接口上和R3配置HSRP组,同时跟踪连接R4的内部接口F0/1,在F0/1不可用时,将HSRP active的角色让给R3。
(3)在R3上配置IPsec LAN-to-LAN VPN,并配置IPsec VPN HA: 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)# r3(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r3(cfg-crypto-trans)#exit r3(config)# r3(config)#access-list 100 permit ip 30.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r3(config)#crypto isakmp keepalive 10 periodic r3(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. r3(config-crypto-map)#set peer 100.1.1.1 r3(config-crypto-map)#set transform-set ccie r3(config-crypto-map)#match address 100 r3(config-crypto-map)#reverse-route static This will remove all existing SAs on this map r3(config-crypto-map)# r3(config-crypto-map)#exit r3(config)# r3(config)#int f0/0 r3(config-if)#standby 1 ip 100.1.1.10 r3(config-if)#standby 1 preempt r3(config-if)#standby 1 track f0/1 r3(config-if)#standby 1 name chinaccie r3(config-if)#crypto map l2l redundancy chinaccie r3(config-if)# *Mar 1 00:46:54.895: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r3(config-if)#exit
说明:在R3上配置IPsec LAN-to-LAN VPN,并开启RRI功能,在外网接口上和R3配置HSRP组,同时跟踪连接R4的内部接口F0/1,在F0/1不可用时,将HSRP active的角色让给R2。
(4)查看R3当前的HSRP状态: r3#show standby brief P indicates configured to preempt. | Interface Grp Pri P State Active Standby Virtual IP Fa0/0 1 100 P Active local 100.1.1.2 100.1.1.10 r3# 说明:因为没有配置HSRP优先级,所以R3靠IP地址获得了Active的角色。
(5)查看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 100.1.1.1 to network 0.0.0.0
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, FastEthernet0/0 10.0.0.0/24 is subnetted, 1 subnets S 10.1.1.0 [1/0] via 100.1.1.1 30.0.0.0/24 is subnetted, 1 subnets C 30.1.1.0 is directly connected, FastEthernet0/1 S* 0.0.0.0/0 [1/0] via 100.1.1.1 r3# 说明:由于配置了RRI,所以R3为需要被IPsec保护的流量自动创建了指向对方Peer的静态路由。
(6)再次查看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 not set
10.0.0.0/24 is subnetted, 1 subnets O E2 10.1.1.0 [110/20] via 30.1.1.3, 00:01:18, FastEthernet0/1 30.0.0.0/24 is subnetted, 1 subnets C 30.1.1.0 is directly connected, FastEthernet0/1 r4# 说明:R4已经从R3那里收到了需要被IPsec保护的网段信息。
(7)查看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 100.1.1.1 to network 0.0.0.0
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, FastEthernet0/0 10.0.0.0/24 is subnetted, 1 subnets O E2 10.1.1.0 [110/20] via 30.1.1.3, 00:05:15, FastEthernet0/1 30.0.0.0/24 is subnetted, 1 subnets C 30.1.1.0 is directly connected, FastEthernet0/1 S* 0.0.0.0/0 [1/0] via 100.1.1.1 r2# 说明:因为R3才是Active角色,所以R2选择从R3去往被IPsec保护的目标网段。
(8)从R4上发送流量激活IKE SA: r4#ping 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 96/202/412 ms r4# 说明:R4向IPsec保护网段发送流量激活IKE SA:
(10)查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.1 100.1.1.10 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:R1已经建立了与100.1.1.10的IKE SA,这就是R2和R3通过HSRP虚拟的IP地址。
(11)查看R1目前与对端建立的IKE SA时间: r1#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1002 100.1.1.1 100.1.1.10 ACTIVE 3des sha psk 2 23:58:32 D Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r1# 说明:目前R1与对端建立的IKE SA的lifetime还剩23小时58分,最新建立的为24小时,并且请注意Conn-id = SW:1。
(12)查看R1上的IPsec SA:
r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.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): (30.1.1.0/255.255.255.0/0/0) current_peer 100.1.1.10 port 500 PERMIT, flags={origin_is_acl,} #pkts encaps: 5, #pkts encrypt: 5, #pkts digest: 5 #pkts decaps: 5, #pkts decrypt: 5, #pkts verify: 5 #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.: 100.1.1.1, remote crypto endpt.: 100.1.1.10 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x548C3B44(1418476356)
inbound esp sas: spi: 0x7D1744FF(2098676991) 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): (4423799/3519) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x548C3B44(1418476356) 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): (4423799/3519) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:R1上当前的IPsec SA显示了正确的网段信息与状态。
(13)查看R3上的IKE SA(ISAKMP SA): r3#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.1 100.1.1.10 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r3# 说明:R3也显示已经与R1建立了的IKE SA。
(14)查看R1目前与对端建立的IKE SA时间: r3#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1001 100.1.1.10 100.1.1.1 ACTIVE 3des sha psk 2 23:58:07 D Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r3# 说明:目前R3与R1建立的IKE SA的lifetime还剩23小时58分,最新建立的为24小时,并且请注意Conn-id = SW:1。
(15)查看R3上的IPsec SA: r3#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.1.1.10
protected vrf: (none) local ident (addr/mask/prot/port): (30.1.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 100.1.1.1 port 500 PERMIT, flags={origin_is_acl,} #pkts encaps: 5, #pkts encrypt: 5, #pkts digest: 5 #pkts decaps: 5, #pkts decrypt: 5, #pkts verify: 5 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 0, #pkts compr. failed: 0 #pkts not decompressed: 0, #pkts decompress failed: 0 #send errors 5, #recv errors 0
local crypto endpt.: 100.1.1.10, remote crypto endpt.: 100.1.1.1 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x7D1744FF(2098676991)
inbound esp sas: spi: 0x548C3B44(1418476356) 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): (4539265/3481) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x7D1744FF(2098676991) 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): (4539265/3480) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r3# 说明:R3上当前的IPsec SA显示了正确的网段信息与状态。
(16)查看R2上的IKE SA(ISAKMP SA): r2#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
r2# 说明:因为R2不是Active角色,所以不负责VPN连接,也就看不到任何SA信息。
(17)查看R4到VPN对端的流量路径情况: r4#traceroute 10.1.1.1
Type escape sequence to abort. Tracing the route to 10.1.1.1
1 30.1.1.3 76 msec 64 msec 136 msec 2 100.1.1.1 256 msec * 224 msec r4# 说明:因为R3是Active角色,所以R4去往VPN对端的流量先发到R3,然后由R3转发出去。
3.测试IPsec VPN HA: (1)断开R3的内网接口: r3(config)#int f0/1 r3(config-if)#shutdown r3(config-if)# 说明:断开R3与R4相连的内网接口F0/1:
(2)查看R3的HSRP状态: r3#show standby brief P indicates configured to preempt. | Interface Grp Pri P State Active Standby Virtual IP Fa0/0 1 90 P Standby 100.1.1.2 local 100.1.1.10 r3# 说明:由于R3的内网接口F0/1已经断开,所以HSRP的角色从Active变成了Standby。
(3)查看R2的HSRP状态: r2#sh standby brief P indicates configured to preempt. | Interface Grp Pri P State Active Standby Virtual IP Fa0/0 1 100 P Active local 100.1.1.3 100.1.1.10 r2# 说明:由于R3的内网接口F0/1已经断开,所以R2的HSRP的角色从Standby变成了Active。
(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 100.1.1.1 to network 0.0.0.0
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, FastEthernet0/0 10.0.0.0/24 is subnetted, 1 subnets S 10.1.1.0 [1/0] via 100.1.1.1 30.0.0.0/24 is subnetted, 1 subnets C 30.1.1.0 is directly connected, FastEthernet0/1 S* 0.0.0.0/0 [1/0] via 100.1.1.1 r2# 说明:R2原本从R3到被IPsec保护的目标网段现在改从自己直接出去了。
(5)再次查看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 not set
10.0.0.0/24 is subnetted, 1 subnets O E2 10.1.1.0 [110/20] via 30.1.1.2, 00:02:07, FastEthernet0/1 30.0.0.0/24 is subnetted, 1 subnets C 30.1.1.0 is directly connected, FastEthernet0/1 r4# 说明:R4原本从R3到被IPsec保护的目标网段现在也改从R2走了。
(6)测试R4到VPN对端的通信情况: r4#ping 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 92/192/304 ms r4# 说明:R4到VPN对端的通信正常。
(7)查看R2上的IKE SA(ISAKMP SA): r2#sh crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.1 100.1.1.10 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r2# 说明:R2现在已经与R1建立了的IKE SA。
(8)查看R2目前与对端建立的IKE SA时间: r2#sh crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1001 100.1.1.10 100.1.1.1 ACTIVE 3des sha psk 2 23:59:29 D Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA 说明:目前R2与R1建立的IKE SA的lifetime还剩23小时59分,最新建立的为24小时,说明此连接是全新建立的。
(9)查看R2上的IPsec SA: r2#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.1.1.10
protected vrf: (none) local ident (addr/mask/prot/port): (30.1.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 100.1.1.1 port 500 PERMIT, flags={origin_is_acl,} #pkts encaps: 5, #pkts encrypt: 5, #pkts digest: 5 #pkts decaps: 5, #pkts decrypt: 5, #pkts verify: 5 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 0, #pkts compr. failed: 0 #pkts not decompressed: 0, #pkts decompress failed: 0 #send errors 5, #recv errors 0
local crypto endpt.: 100.1.1.10, remote crypto endpt.: 100.1.1.1 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0xEDCF7EFD(3989798653)
inbound esp sas: spi: 0x12CF9A71(315595377) 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): (4440233/3565) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0xEDCF7EFD(3989798653) 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): (4440233/3564) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r2# 说明:R2上当前的IPsec SA显示了正确的网段信息与状态。
(10)再次查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1002 100.1.1.1 100.1.1.10 ACTIVE 3des sha psk 2 23:56:48 D Engine-id:Conn-id = SW:2
IPv6 Crypto ISAKMP SA
r1# 说明:现在R1上建立的IKE SA的lifetime还剩23小时56分,但现在显示了Conn-id = SW:2,而之前的为Conn-id = SW:1,所以R1上的IKE SA也是新建立的。
(11)再次查看R3上的IKE SA(ISAKMP SA): r3#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
r3# 说明:因为R3的HSRP角色已经由Active变成了Standby,IPsec VPN连接的工作将由R2接替,所以IKE SA也就被删除了。
(12)再次查看R4到VPN对端的流量路径情况: r4#traceroute 10.1.1.1
Type escape sequence to abort. Tracing the route to 10.1.1.1
1 30.1.1.2 88 msec 56 msec 112 msec 2 100.1.1.1 152 msec * 292 msec r4# 说明:之前R4去往VPN对端的流量先发到R3,然后由R3转发出去,而现在则先发 到R2,由R2转发出去。
虽然在设计网络冗余性时,可以通过在一个场点布署两台或更多VPN路由器,然后通过前面介绍的IPsec VPN HA让多台VPN路由器执行完全相同的功能,当主路由器在任何情况下停止工作时,备用路由器将立刻接替主路由器的工作为用户转发数据。 但是IPsec VPN HA并不是很完美,因为在主路由器不可用时,备用路由器在接替主路由器的工作后,需要重新与VPN对端建立IPsec连接,这必定会造成用户的数据丢包。造成这个问题的原因就是与VPN对端的IPsec会话信息只在主路由器上存在,而备路由器上是没有IPsec会话信息的,所以在备用路由器接替主路由器的工作时,必须再次重新和VPN对端建立IPsec会话,从而造成用户数据丢包,如果在任何时候,主备路由器都拥有着完全相同的IPsec会话信息,那么在备用路由器接替主路由器的工作时就不需要再次重新和VPN对端建立IPsec会话,就能直接使用当前的IPsec会话,这样用户的数据就不会丢包了,这才是真正的高可用性,实现主备路由器之间的无缝切换,并且对用户来说是完全透明的,要实现这样的功能,就需要靠Stateful Failover for IPsec。 Stateful Failover for IPsec让主备路由器之间在任何时候都共享完全相同的IPsec会话信息,在任何路由器成为主路由器后都可以直接使用当前已有的IPsec会话而不用重新和VPN对端建立IPsec会话,所以Stateful Failover for IPsec最大的优势就是能够在主备路由器之间共享IPsec会话信息,让主备路由器随时都拥有着完全相同的IPsec会话信息,从而在任何路由器为用户提供服务时都不会造成网络中断,Stateful Failover for IPsec靠以下两个组件来完成:
Stateful Switchover (SSO) Hot Standby Routing Protocol (HSRP)
SSO的功能就是在主备路由器之间共享IPsec会话信息(包括IKE SA 和IPsec SA),让路由器之间随时都拥有着完全相同的IPsec会话信息,任何路由器在任何时间都能成为活动路由器,从而在任何路由器为用户提供服务时都不会造成网络中断。 HSRP的功能和IPsec VPN HA中HSRP的功能一样,就是将多台路由器用来建立IPsec VPN连接的外网地址虚拟成同一个IP地址,所以多台路由器的外网接口必须通过交换机或Hub相连,除此之外,Stateful Failover for IPsec还要求路由器的内网接口也配置HSRP,对用户内部也虚拟出同一个IP地址;所以Stateful Failover for IPsec中必须配置两组HSRP,内外网接口各一组,并且内外网HSRP互相监控对方的接口状态,在任何一个接口不可用时,同时转让出两组HSRP的Active角色,并且同一台路由器的两组HSRP要么都为Active,要么都为Standby。
提供Stateful Failover for IPsec功能的所有路由器都必须具有完全相同的IKE和IPsec配置,也就是所有VPN相关的配置必须完全相同,Stateful Failover只是共享IKE和IPsec的状态信息,而不是共享双方配置信息,所以并不会将一方的配置自动复制到另一方去。
注: ★当主路由器出现故障停止工作时,在让出HSRP角色后,会自动重启。 ★配置Stateful Failover for IPsec同时也必须配置Reverse Route Injection (RRI)。 ★提供Stateful Failover for IPsec功能的所有路由器必须是相同型号的硬件,以及CPU,内存,IOS软件版本等等。 ★Stateful Failover for IPsec功能的所有路由器必须在内外网两个接口同时配置HSRP,但不要修改HSRP优先级,并且同一台路由器的两组HSRP要么都为Active,要么都为Standby。 ★Stateful Failover for IPsec功能的所有路由器的内外网两个接口必须分别通过LAN互连,如交换机或Hub,普通的广域网线是不行的;且记得在交换机连路由器的接口上开spanning-tree portfast。
★Stateful Failover for IPsec功能的所有路由器在任何时间只有一台是工作的,不能实现多台负载。 ★Stateful Failover for IPsec不支持L2TP over IPsec,但支持Easy VPN。 ★Stateful Failover for IPsec不支持IPsec Idle Timer,但Dead Peer Detection(DPD)。 ★Stateful Failover for IPsec不支持Public key infrastructure (PKI)认证,只支持Preshared Key(PSK)认证。
配置Stateful Failover for IPsec
说明:以上图为例,在R1、R2、R3之间配置IPsec LAN-to-LAN VPN来测试Stateful Failover for IPsec的效果,其中R2和R3通过HSRP虚拟成单台VPN路由器,外网虚拟IP地址为100.1.1.10,然后以该虚拟IP地址为源和R1建立VPN连接,R2和R3中只有Active的那台路由器负责和对端建立VPN连接,在Active路由器不可用时,则备用路由器接替原Active的角色,因为配置了Stateful Failover,所以备路由器在接替原Active的角色时不会造成用户数据丢包。同时在内网接口也通过HSRP将地址虚拟为30.1.1.10,R4默认路由指向30.1.1.10,从而让R4通过VPN隧道与R1相连的网段10.1.1.0/24通信。
1.配置基础网络环境 (1)配置R1: r1(config)#int f0/0 r1(config-if)#ip add 100.1.1.1 255.255.255.0 r1(config-if)#no sh r1(config-if)#exi r1(config)#
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 100.1.1.10 说明:配置R1的接口地址,并写默认路由指向R2和R3通过HSRP虚拟的IP地址100.1.1.10。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 100.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int f1/1 r2(config-if)#ip add 30.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#ip route 0.0.0.0 0.0.0.0 100.1.1.1 说明:配置R2的接口地址,并写默认路由指向R1。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 100.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f1/1 r3(config-if)#ip add 30.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 100.1.1.1 说明:配置R3的接口地址,并写默认路由指向R1。
(4)配置R4: r4(config)#int f0/1 r4(config-if)#ip add 30.1.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 30.1.1.10 说明:配置R4的接口地址,并写默认路由指向R2和R3通过HSRP虚拟的IP地址30.1.1.10。
2.配置Stateful Failover for IPsec (1)在R1上配置IPsec 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)# r1(config)#crypto isakmp key 0 cisco123 address 100.1.1.10 r1(config)# r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(config)# r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 30.1.1.0 0.0.0.255 r1(config)# r1(config)# r1(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. r1(config-crypto-map)#set peer 100.1.1.10 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)# *Mar 1 00:10:18.179: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#exit 说明:R1上正常配置IPsec LAN-to-LAN VPN,但R1的VPN peer则指向R2和R3通过HSRP虚拟的IP地址100.1.1.10,而不是指向R2与R3的真实地址。
(2)在R2上配置IPsec LAN-to-LAN VPN: r2(config)#crypto isakmp policy 1 r2(config-isakmp)#encryption 3des r2(config-isakmp)#hash sha r2(config-isakmp)#authentication pre-share r2(config-isakmp)#group 2 r2(config-isakmp)#exit r2(config)# r2(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r2(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r2(cfg-crypto-trans)#exit r2(config)# r2(config)#access-list 100 permit ip 30.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r2(config)# r2(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. r2(config-crypto-map)#set peer 100.1.1.1 r2(config-crypto-map)#set transform-set ccie r2(config-crypto-map)#match address 100 r2(config-crypto-map)#reverse-route static r2(config-crypto-map)#exit 说明:R2上正常配置IPsec LAN-to-LAN VPN。
(3)在R3上配置IPsec 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)# r3(config)#crypto isakmp key 0 cisco123 address 100.1.1.1 r3(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r3(cfg-crypto-trans)#exit r3(config)# r3(config)#access-list 100 permit ip 30.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r3(config)# r3(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. r3(config-crypto-map)#set peer 100.1.1.1 r3(config-crypto-map)#set transform-set ccie r3(config-crypto-map)#match address 100 r3(config-crypto-map)#reverse-route static r3(config-crypto-map)#exit 说明:R3上正常配置IPsec LAN-to-LAN VPN。
(4)在R2上配置Stateful Failover for IPsec:
进入inter-device 配置模式: r2(config)#redundancy inter-device 指定redundancy 方式,目前只有standby: r2(config-red-interdevice)#scheme standby HA-out % Standby scheme configuration cannot be processed now group HA-out is not in active state r2(config-red-interdevice)#exit 进入IPC zone configuration mode: r2(config)#ipc zone default r2(config-ipczone)#association 1 配置Stream Control Transmission Protocol (SCTP)为通讯协议: r2(config-ipczone-assoc)#protocol sctp 指定本地端口(必须和对方的目的端口保持一致): r2(config-ipc-protocol-sctp)#local-port 5000 指定本地IP(必须是接口真实IP,且和对方的目的IP保持一致): r2(config-ipc-local-sctp)#local-ip 100.1.1.2 r2(config-ipc-local-sctp)#exit 指定目标端口(必须和对方的源端口保持一致): r2(config-ipc-protocol-sctp)#remote-port 5000 指定目标IP(必须是接口真实IP,且和对方的源IP保持一致): r2(config-ipc-remote-sctp)#remote-ip 100.1.1.3 r2(config-ipc-remote-sctp)#exit r2(config-ipc-protocol-sctp)#exit r2(config-ipczone-assoc)#exit r2(config-ipczone)#exit r2(config)# crypto map l2l redundancy replay-interval inbound 1000 outbound 10000
配置HSRP: r2(config)#int f0/0 r2(config-if)#standby 1 ip 100.1.1.10 r2(config-if)#standby 1 preempt r2(config-if)#standby 1 name HA-out r2(config-if)#standby 1 track f1/1 开启SSO: r2(config-if)#crypto map l2l redundancy HA-out stateful r2(config-if)# *Nov 16 20:10:20.087: %HSRP-5-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Standby *Nov 16 20:10:20.435: %CRYPTO-5-IKE_SA_HA_STATUS: IKE sa's if any, for vip 100.1.1.10 will change from STANDBY to ACTIVE r2(config-if)# *Nov 16 20:10:20.467: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON 定义重启参数: r2(config-if)#standby delay reload 120 r2(config-if)#exit 配置内网HSRP: r2(config)#int f1/1 r2(config-if)#standby 2 ip 30.1.1.10 r2(config-if)#standby 2 preempt r2(config-if)#standby 2 name HA-in r2(config-if)#standby 2 track f0/0 r2(config-if)#standby delay reload 120 r2(config-if)# *Nov 16 20:10:56.615: %HSRP-5-STATECHANGE: FastEthernet1/1 Grp 2 state Speak -> Standby r2(config-if)#exit
(5)在R3上配置Stateful Failover for IPsec: 进入inter-device 配置模式: r3(config)#redundancy inter-device 指定redundancy 方式,目前只有standby: r3(config-red-interdevice)#scheme standby HA-out % Standby scheme configuration cannot be processed now group HA-out is not in active state r3(config-red-interdevice)#exit 进入IPC zone configuration mode: r3(config)#ipc zone default r3(config-ipczone)# association 1 配置Stream Control Transmission Protocol (SCTP)为通讯协议: r3(config-ipczone-assoc)#protocol sctp 指定本地端口(必须和对方的目的端口保持一致): r3(config-ipc-protocol-sctp)#local-port 5000 指定本地IP(必须是接口真实IP,且和对方的目的IP保持一致): r3(config-ipc-local-sctp)#local-ip 100.1.1.3 r3(config-ipc-local-sctp)#exit 指定目标端口(必须和对方的源端口保持一致): r3(config-ipc-protocol-sctp)#remote-port 5000 指定目标IP(必须是接口真实IP,且和对方的源IP保持一致): r3(config-ipc-remote-sctp)#remote-ip 100.1.1.2 r3(config-ipc-remote-sctp)#exit r3(config-ipc-protocol-sctp)#exit r3(config-ipczone-assoc)#exit r3(config-ipczone)#exit
r3(config)#crypto map l2l redundancy replay-interval inbound 1000 outbound 10000 r3(config)# 配置HSRP: r3(config)#int f0/0 r3(config-if)#standby 1 ip 100.1.1.10 r3(config-if)#standby 1 preempt r3(config-if)#standby 1 name HA-out r3(config-if)#standby 1 track f1/1 开启SSO: r3(config-if)#crypto map l2l redundancy HA-out stateful r3(config-if)# *Nov 16 20:03:55.495: %CRYPTO-5-IKE_SA_HA_STATUS: IKE sa's if any, for vip 100.1.1.10 will change from STANDBY to ACTIVE r3(config-if)# *Nov 16 20:03:55.527: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON 定义重启参数: r3(config-if)#standby delay reload 120 r3(config-if)#exit 配置内网HSRP: r3(config)#int f1/1 r3(config-if)#standby 2 ip 30.1.1.10 r3(config-if)#standby 2 preempt r3(config-if)#standby 2 name HA-in r3(config-if)#standby 2 track f0/0 r3(config-if)# *Nov 16 20:04:36.347: %HSRP-5-STATECHANGE: FastEthernet1/1 Grp 2 state Speak -> Standby *Nov 16 20:04:36.847: %HSRP-5-STATECHANGE: FastEthernet1/1 Grp 2 state Standby -> Active r3(config-if)#standby delay reload 120 r3(config-if)#exit
3.测试Stateful Failover for IPsec: (1)查看R3当前的HSRP状态: r3#sh stan brief P indicates configured to preempt. | Interface Grp Pri P State Active Standby Virtual IP Fa0/0 1 100 P Active local 100.1.1.2 100.1.1.10 Fa1/1 2 100 P Active local 30.1.1.2 30.1.1.10 r3# 说明:因为没有配置HSRP优先级,所以R3靠IP地址获得了Active的角色。
(2)查看R3当前的SSO状态: r3#show redundancy states my state = 13 -ACTIVE peer state = 8 -STANDBY HOT Mode = Duplex Unit ID = 0
Maintenance Mode = Disabled Manual Swact = Enabled Communications = Up
client count = 12 client_notification_TMR = 30000 milliseconds RF debug mask = 0x0
r3# 说明:因为R3的HSRP状态为Active,所以当前SSO的状态也为Active,对端路由器的SSO状态则为STANDBY HOT(热备份),如果对端为STANDBY COLD-BULK,则不正常,一般是由于IOS版本太低造成,所以请更换高版本IOS。
(3)查看R3更多SSO信息: r3#show crypto ha IKE VIP: 100.1.1.10 stamp: 2F 78 23 C6 0B 6E F6 51 18 FC 3F 6D 07 2C FA C5 IPSec VIP: 100.1.1.10
r3# 说明:如果发现stamp: Not set,则不正常,一般也是由于IOS版本太低造成,所以还是请更换高版本IOS。
(4)查看R2的SSO信息: r2#show redundancy states my state = 8 -STANDBY HOT peer state = 13 -ACTIVE Mode = Duplex Unit ID = 0
Maintenance Mode = Disabled Manual Swact = Enabled Communications = Up
client count = 12 client_notification_TMR = 30000 milliseconds RF debug mask = 0x0
r2# r2#show crypto ha IKE VIP: 100.1.1.10 stamp: 2F 78 23 C6 0B 6E F6 51 18 FC 3F 6D 07 2C FA C5 IPSec VIP: 100.1.1.10
r2# 说明:因为R2的HSRP状态为Standby,所以当前SSO的状态为STANDBY HOT,而对端路由器的SSO状态则为ACTIVE。
(5)查看R3上的IKE SA(ISAKMP SA): r3#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id status
IPv6 Crypto ISAKMP SA
r3# 说明:因为当前没有流量,所以R3上的IKE SA为空。
(6)查看R2上的IKE SA(ISAKMP SA):
r2#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id status
IPv6 Crypto ISAKMP SA
r2# 说明:因为当前没有流量,所以R2上的IKE SA也为空。
(7)从R4上发送流量激活IKE SA: r4#ping 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 72/170/264 ms r4# 说明:R4向IPsec保护网段发送流量激活IKE SA:
(8)再次查看R3上的IKE SA(ISAKMP SA): r3#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id status 100.1.1.1 100.1.1.10 QM_IDLE 1001 ACTIVE
IPv6 Crypto ISAKMP SA
r3# 说明:R3已经建立了与R1的IKE SA,并且请注意R3的状态为Active。
(9)查看R3目前与对端建立的IKE SA时间: r3#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal T - cTCP encapsulation, X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1001 100.1.1.10 100.1.1.1 ACTIVE 3des sha psk 2 23:59:28 D Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r3# 说明:目前R3与对端建立的IKE SA的lifetime还剩23小时59分,最新建立的为24小时,并且请注意Conn-id = SW:1。
(10)查看R3上的IPsec SA: r3#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.1.1.10
protected vrf: (none) local ident (addr/mask/prot/port): (30.1.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 100.1.1.1 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 6, #recv errors 0
local crypto endpt.: 100.1.1.10, remote crypto endpt.: 100.1.1.1 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x71B34C72(1907575922) PFS (Y/N): N, DH group: none
inbound esp sas: spi: 0xC044FF1B(3225747227) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 1, flow_id: SW:1, sibling_flags 80000046, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4539948/3561) HA KB life last checkpointed at (k): (4539949) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x71B34C72(1907575922) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 2, flow_id: SW:2, sibling_flags 80000046, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4539948/3561) HA KB life last checkpointed at (k): (4539949) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r3# 说明:R3上当前的IPsec SA显示了正确的网段信息与状态。 (11)再次查看R2上的IKE SA(ISAKMP SA): r2#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id status 100.1.1.1 100.1.1.10 QM_IDLE 1001 STDBY
IPv6 Crypto ISAKMP SA
r2# 说明:R2已经建立了与R1的IKE SA,但请注意R2的状态为STDBY,说明R2只是R3的备份,只有在R3不可用时,才会启用自己为Active。
(12)查看R2目前与对端建立的IKE SA时间: r2#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal T - cTCP encapsulation, X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1001 100.1.1.10 100.1.1.1 STDBY 3des sha psk 2 23:58:12 D Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r2# 说明:目前R2与对端建立的IKE SA的lifetime还剩23小时58分,最新建立的为24小时,并且请注意Conn-id = SW:1。
(13)查看R2上的IPsec SA: r2#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.1.1.10
protected vrf: (none) local ident (addr/mask/prot/port): (30.1.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 100.1.1.1 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.: 100.1.1.10, remote crypto endpt.: 100.1.1.1 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x71B34C72(1907575922) PFS (Y/N): N, DH group: none
inbound esp sas: spi: 0xC044FF1B(3225747227) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 1, flow_id: SW:1, sibling_flags 90000046, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4051008/3490) HA KB life last update received (k): (4051008) IV size: 8 bytes replay detection support: Y Status: STANDBY
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x71B34C72(1907575922) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 2, flow_id: SW:2, sibling_flags 90000046, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4051008/3490) HA KB life last update received (k): (4051008) IV size: 8 bytes replay detection support: Y Status: STANDBY
outbound ah sas:
outbound pcp sas: r2# 说明:R2上当前的IPsec SA与R3完全相同,但唯一区别就是状态为STANDBY,说明R2只是R3的备份,只有在R3不可用时,才会启用自己为Active。
(14)再次查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.1 100.1.1.10 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:R1已经建立了与100.1.1.10的IKE SA,这就是R2和R3通过HSRP虚拟的IP地址。
(15)查看R1目前与对端建立的IKE SA时间: r1#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1001 100.1.1.1 100.1.1.10 ACTIVE 3des sha psk 2 23:57:23 Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r1# 说明:目前R1与对端建立的IKE SA的lifetime还剩23小时57分,最新建立的为24小时,并且请注意Conn-id = SW:1,如果该值不同,则表示SA是重新建的。
(16)在R4上向VPN对端长时间发送流量测试网络故障: r4#ping 10.1.1.1 repeat 100000
Type escape sequence to abort. Sending 100000, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: !!!!!!!!!!!!!!!!!! 说明:在R4上向VPN对端长时间发送流量,用以测试在网络发生故障时的数据包情况。
(17)断开R3的内网接口: r3(config)#int f1/1 r3(config-if)#sh r3(config-if)#shutdown r3(config-if)# *Nov 17 00:44:39.191: %TRACKING-5-STATE: 1 interface Fa1/1 line-protocol Up->Down *Nov 17 00:44:39.195: %HSRP-5-STATECHANGE: FastEthernet1/1 Grp 2 state Active -> Init *Nov 17 00:44:40.047: %HSRP-5-STATECHANGE: FastEthernet0/0 Grp 1 state Active -> Speak *Nov 17 00:44:40.071: %RF_INTERDEV-4-RELOAD: % RF induced self-reload. my state = ACTIVE peer state = STANDBY HOT r3(config-if)# *Nov 17 00:44:40.095: %RF-5-RF_RELOAD: Peer reload. Reason: r3(config-if)# *Nov 17 00:44:41.187: %LINK-5-CHANGED: Interface FastEthernet1/1, changed state to administratively down *Nov 17 00:44:42.187: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/1, changed state to down r3(config-if)#
ROM: reload requested...
说明:当Active出现故障后,会自动重启。
(18)查看R4上到VPN对端的流量情况: r4#ping 10.1.1.1 repeat 100000
Type escape sequence to abort. Sending 100000, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: !!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!. Success rate is 98 percent (142/144), round-trip min/avg/max = 72/386/1056 ms r4# 说明,虽然VPN路由器R3发生了故障,但R4上到VPN对端的流量完全正常,并且没有丢包,说明Stateful Failover for IPsec为网络故障实现了无缝切换。
(19)再次查看R2上的IKE SA(ISAKMP SA): r2#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id status 100.1.1.1 100.1.1.10 QM_IDLE 1001 ACTIVE
IPv6 Crypto ISAKMP SA
r2# 说明:R2的IKE SA已经从之前的备份状态(STDBY)变成了活动状态(Active)。
(20)再次查看R2目前与对端建立的IKE SA时间: r2#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal T - cTCP encapsulation, X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1001 100.1.1.10 100.1.1.1 ACTIVE 3des sha psk 2 23:54:57 D Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r2# 说明:目前R2与对端建立的IKE SA的lifetime还剩23小时54分,说明不是新建的,并且请注意Conn-id = SW:1,和之前的值相同,也说明SA没有重新建立而是使用已有的,所以为网络故障实现了无缝切换。
(21)再次查看R2上的IPsec SA: r2#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 100.1.1.10
protected vrf: (none) local ident (addr/mask/prot/port): (30.1.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 100.1.1.1 port 500 PERMIT, flags={origin_is_acl,} #pkts encaps: 123, #pkts encrypt: 123, #pkts digest: 123 #pkts decaps: 123, #pkts decrypt: 123, #pkts verify: 123 #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.: 100.1.1.10, remote crypto endpt.: 100.1.1.1 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0x71B34C72(1907575922) PFS (Y/N): N, DH group: none
inbound esp sas: spi: 0xC044FF1B(3225747227) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 1, flow_id: SW:1, sibling_flags 80000046, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4050989/3297) HA KB life last checkpointed at (k): (4051008) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x71B34C72(1907575922) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel, } conn id: 2, flow_id: SW:2, sibling_flags 80000046, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4050989/3297) HA KB life last checkpointed at (k): (4051007) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r2# 说明:R2的IPsec SA也从之前的备份状态STANDBY变成了活动状态(Active)。
(22)查看R2的HSRP状态: r2#sh standby brief P indicates configured to preempt. | Interface Grp Pri P State Active Standby Virtual IP Fa0/0 1 100 P Active local 100.1.1.3 100.1.1.10 Fa1/1 2 100 P Active local 30.1.1.3 30.1.1.10 r2# 说明:由于R3出现故障,所以R2的HSRP状态已经从Standby变成了Active状态。
(23)再次查看R2的SSO信息: r2#show redundancy states my state = 13 -ACTIVE peer state = 8 -STANDBY HOT Mode = Duplex Unit ID = 0
Maintenance Mode = Disabled Manual Swact = Enabled Communications = Up
client count = 12 client_notification_TMR = 30000 milliseconds RF debug mask = 0x0
r2# 说明:由于R2的HSRP状态已经从Standby变成了Active状态,所以SSO的状态也从STANDBY HOT变成了ACTIVE,而对端路由器的SSO状态则从ACTIVE变成了STANDBY HOT。
(24)再次查看R1上的IKE SA(ISAKMP SA): r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 100.1.1.1 100.1.1.10 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:R1的IKE SA显示正常没有变化。
(25)再次查看R1与对端建立的IKE SA时间: r1#show crypto isakmp sa detail Codes: C - IKE configuration mode, D - Dead Peer Detection K - Keepalives, N - NAT-traversal X - IKE Extended Authentication psk - Preshared key, rsig - RSA signature renc - RSA encryption IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1001 100.1.1.1 100.1.1.10 ACTIVE 3des sha psk 2 23:54:26 Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
r1# 说明:目前R1与对端建立的IKE SA的lifetime还剩23小时54分,说明不是新建的,并且请注意Conn-id = SW:1,还是和之前的值相同,也说明SA没有重新建立而是使用已有的,所以为网络故障实现了无缝切换。
NAT Traversal(NAT-T) 大家都知道,在网络中配置了NAT时,通过NAT的数据包的包头都将被改写,而经过IPsec保护后的数据包在中途传输时,要更改IP包头也许会变的不可行,因为IPsec会将IP包头保护起来,并生成hash,如果随意改动IP包头,将使该数据包作废,所以IPsec数据包在穿越NAT网络时,存在着某些麻烦。 为了解决以上问题,IOS加入了探测网络路径中是否存在NAT的功能,称为NAT Traversal(NAT穿越);NAT-T在Phase 1时就开始探测网络路径中是否存在NAT,检测的方法是发送测试数据包,数据包对地址做hash,如果收到的数据包的hash没变化,就认为路径中没有NAT,如果有NAT,双方就会执行NAT-T。测试时发送的包称为NAT discovery (NAT-D),源地址和端口与目标地址和端口是分开的,如果有多个,那么数据包也就有多个包。 当Phase 1发现存在NAT之后,Phase 2才会考虑是否采用NAT-T,不过不用担心,NAT-T是自动开启的,不用手工配置;NAT-T是将IPsec的数据包当作数据再次封装在UDP中再进行传输的,这样一来,IPsec的数据包就受到与普通数据一样的对待,所以NAT也就伤不到IPsec的数据包了。 在ISAKMP中使用目的端口号为UDP 4500来协商NAT-T,而源端口则使用下一个可用更高的端口,如4501,在选择端口时,如果端口已经被用了,则使用4501,4502,直到可用为止。
注: ★准确地讲,IPsec是不能穿越PAT,而静态地址NAT映射是可以的。 ★NAT-T只能让ESP(Encapsulating Security Protocol)封装穿越PAT,而AH(Authentication Header)封装却不可以。 ★NAT Traversal(NAT-T)是在IOS 12.2(13)T以及之后的版本中默认是自动开启的; ★NAT Traversal(NAT-T)在IOS没有特定的命令来打开,却有特定的命令来关闭,命令如: ★Router(config)# no crypto ipsec nat-transparency udp-encapsulation
在IOS 12.2(13)T之前的版本没有NAT-T的功能,但并不表示IPsec数据包就不能穿过NAT网络,如果要穿过,也是可以的,该功能称为IPSec through NAT,如果IPsec VPN连接是从NAT本端的设备发起的,不需要做任何配置,但如果IPsec VPN连接是从NAT远端的设备发起的,则需要在NAT设备上增加配置命令,例如IPsec VPN源路由器的IP地址是10.1.1.1,NAT路由器的外网接口为F0/1,则需要在NAT设备上增加如下配置命令: ip nat inside source static esp 10.1.1.1 interface f0/1 ip nat inside source static udp 10.1.1.1 500 interface f0/1 500
在VPN设备支持NAT-T时,如果IPsec VPN连接是从NAT本端的设备发起的,也不需要做任何配置,但如果IPsec VPN连接是从NAT远端的设备发起的,同样需要在NAT路由器上增加如下配置命令: ip nat inside source static udp 10.1.1.1 4500 interface f0/1 4500 ip nat inside source static udp 10.1.1.1 500 interface f0/1 500
出现IPsec数据包要穿越PAT的情况多数是因为某个分支机构的公网IP只有一个或不够,但又需要将VPN路由器放置在内网,配置了内网地址后然后通过外网路由器进行NAT地址转换后出去,一个配置了内网IP地址的路由器是不可能和远程设备建立VPN的,所以需要以外网路由器的公网IP地址为源去和远端建立VPN连接,这就需要NAT-T或IPSec through NAT。
配置NAT Traversal(NAT-T)
说明:以上图为例,在R3上开启NAT功能,并将所有内网数据源IP全部转换为外网接口F0/1的地址,然后在R1和R4之间配置IPsec LAN-to-LAN VPN来测试NAT Traversal(NAT-T)的效果。当R1和R4建立VPN之后,要保证R4的直连网段20.1.1.0/24可以和上海公司的10.1.1.0/24正常通信。
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)# r1(config)#int loopback 0 r1(config-if)#ip add 10.1.1.1 255.255.255.0 r1(config-if)#exit r1(config)# r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2 说明:配置R1的接口地址,并写默认路由指向R2。
(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)# 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 172.16.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 23.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2
r3(config)#int f0/0 r3(config-if)#ip nat inside r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip nat outside r3(config-if)#exit
r3(config)#access-list 3 permit any r3(config)#ip nat inside source list 3 interface f0/1 overload r3(config)# 说明:配置R3的接口地址,并写默认路由指向Internet(路由器R2),在R3上开启NAT功能,并将所有内网数据源IP全部转换为外网接口F0/1的地址,
(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)# r4(config)#int loopback 0 r4(config-if)#ip add 20.1.1.4 255.255.255.0 r4(config-if)#exit r4(config)# r4(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.3 说明:配置R4的接口地址,并写默认路由指向外网路由器R3。
(5)测试R3到R1的连通性: r3#ping 12.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 140/203/288 ms r3# 说明:因为R3与R1都有默认路由指向Internet(路由器R2),而R2与R3和R1都是可达的,所以R3与R1通信正常。
(6)测试R3到上海公司10.1.1.0/24的连通性: r3#ping 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r3# 说明:虽然R3有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R3与R1的通信,所以R3无法访问上海公司的私有网段10.1.1.0/24。
(7)测试R4到R1的连通性: r4#ping 12.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 80/200/280 ms r4# 说明:因为R3与R1通信正常,并且R3将内网所有数据的源IP转换成了自己的外网接口地址,所以R4与R1通信正常,。
(8)测试R4到上海公司10.1.1.0/24的连通性: r4#ping 10.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r4# 说明:因为R3都无法访问上海公司的私有网段10.1.1.0/24,所以R4更不能。
(9)测试北京公司内网20.1.1.0/24到上海公司10.1.1.0/24的连通性: r4#ping 10.1.1.1 source 20.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: Packet sent with a source address of 20.1.1.4 ..... Success rate is 0 percent (0/5) r4# 说明:因为R3都无法访问上海公司的私有网段10.1.1.0/24,所以北京公司内网20.1.1.0/24更不能。
2.配置IPsec LAN-to-LAN VPN (1)在R1上配置IPsec 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)# r1(config)#crypto isakmp key 0 cisco123 address 23.1.1.3 r1(config)# r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(config)# r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 20.1.1.0 0.0.0.255 r1(config)# r1(config)# r1(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. 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)# r1(config)#int f0/0 r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 00:13:57.263: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#exit 说明:R1上正常配置连接R4的IPsec LAN-to-LAN VPN,但R1的VPN peer是指向R3的外网接口F0/1的,因为R3已经通过NAT将内网所有数据包的源IP转换成了接口F0/1的地址,R4接口的私有地址对外是不可见的。
(2)在R4上配置IPsec LAN-to-LAN VPN: 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)# r4(config)#crypto isakmp key 0 cisco123 address 12.1.1.1 r4(config)# r4(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r4(cfg-crypto-trans)#exit r4(config)# r4(config)#access-list 100 permit ip 20.1.1.0 0.0.0.255 10.1.1.0 0.0.0.255 r4(config)# r4(config)# 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)#exit r4(config)# r4(config)#int f0/0 r4(config-if)#crypto map l2l r4(config-if)# *Mar 1 00:31:05.771: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r4(config-if)#exit r4(config)# 说明:R4上正常配置指向R1的IPsec LAN-to-LAN VPN。
3.测试NAT Traversal(NAT-T): (1)再次测试北京公司内网20.1.1.0/24到上海公司10.1.1.0/24的连通性: r4#ping 10.1.1.1 source 20.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: Packet sent with a source address of 20.1.1.4 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 216/296/364 ms r4# 说明:因为北京公司内网20.1.1.0/24向上海公司10.1.1.0/24发出的数据是从NAT本端的设备发起的,所以不需要做任何配置,IPsec VPN就能建立成功,只有在IPsec VPN连接是从NAT远端的设备发起的,才需要在NAT路由器上增加配置命令。
(2)查看R4上的IKE SA(ISAKMP SA): r4#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 12.1.1.1 172.16.1.4 QM_IDLE 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r4# 说明:R4已经正常建立了与R1的IKE SA。
(3)查看R4上的IPsec SA: r4#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: l2l, local addr 172.16.1.4
protected vrf: (none) local ident (addr/mask/prot/port): (20.1.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 4500 PERMIT, flags={origin_is_acl,} #pkts encaps: 13, #pkts encrypt: 13, #pkts digest: 13 #pkts decaps: 13, #pkts decrypt: 13, #pkts verify: 13 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 0, #pkts compr. failed: 0 #pkts not decompressed: 0, #pkts decompress failed: 0 #send errors 2, #recv errors 0
local crypto endpt.: 172.16.1.4, remote crypto endpt.: 12.1.1.1 path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0/0 current outbound spi: 0xCEC0B3D6(3468735446)
inbound esp sas: spi: 0x5B08DD8C(1527307660) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 1, flow_id: SW:1, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4552994/3535) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0xCEC0B3D6(3468735446) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 2, flow_id: SW:2, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4552994/3534) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r4# 说明:R4上当前的IPsec SA显示了正确的网段信息与状态。
(4)查看R4的IOS信息: r4#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)
r4 uptime is 33 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
r4# 说明:R4的IOS版本为12.4(9)T7,高于IOS 12.2(13)T,所以NAT Traversal(NAT-T)默认是开启的。
(5)查看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 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:R1上也显示了已经正常建立与R4的IKE SA。
(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): (20.1.1.0/255.255.255.0/0/0) current_peer 23.1.1.3 port 4500 PERMIT, flags={origin_is_acl,} #pkts encaps: 13, #pkts encrypt: 13, #pkts digest: 13 #pkts decaps: 13, #pkts decrypt: 13, #pkts verify: 13 #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: 0x5B08DD8C(1527307660)
inbound esp sas: spi: 0xCEC0B3D6(3468735446) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 1, flow_id: SW:1, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4452512/3480) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0x5B08DD8C(1527307660) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 2, flow_id: SW:2, crypto map: l2l sa timing: remaining key lifetime (k/sec): (4452512/3480) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:R1上当前的IPsec SA显示了正确的网段信息与状态。
(7)查看R3上的NAT转换情况: r3#show ip nat translations Pro Inside global Inside local Outside local Outside global udp 23.1.1.3:500 172.16.1.4:500 12.1.1.1:500 12.1.1.1:500 udp 23.1.1.3:4500 172.16.1.4:4500 12.1.1.1:4500 12.1.1.1:4500 r3# 说明:可以看到R4通过NAT-T与远端建立VPN所使用的端口情况(UDP 4500),以及IKE的协商端口(UDP 500)。
(8)清除当前所有的IPsec会话信息,再次测试NAT-T: R1 r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
r1#
R4: r4#show cry isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
r4#
R3: r3#clear ip nat translation * r3# r3#show ip nat translations
r3# 说明:R1,R4的IPsec会话已经全部清除,并且R3上的NAT转换也已经清除。
(9)测试先从上海公司10.1.1.0/24向北京公司内网20.1.1.0/24发送数据的连通性: r1#ping 20.1.1.4 source 10.1.1.1 repeat 20000
Type escape sequence to abort. Sending 20000, 100-byte ICMP Echos to 20.1.1.4, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 .........................
说明:因为上海公司10.1.1.0/24向北京公司内网20.1.1.0/24发送数据是从NAT远端的设备发起的,所以必须在NAT路由器上增加配置命令,否则IPsec VPN永远无法通信。
(10)在NAT路由器R3上增加NAT-T必备的命令: r3(config)# ip nat inside source static udp 172.16.1.4 4500 interface f0/1 4500 r3(config)#ip nat inside source static udp 172.16.1.4 500 interface f0/1 500 说明::因为上海公司10.1.1.0/24向北京公司内网20.1.1.0/24发送数据是从NAT远端的设备发起的,所以必须在NAT路由器上增加配置命令,命令就是将NAT中由器外网接口的UDP端口500和4500都映射到内网VPN地址的500和4500。
(11)查看从上海公司10.1.1.0/24向北京公司内网20.1.1.0/24发送数据的连通性: r1#ping 20.1.1.4 source 10.1.1.1 repeat 20000
Type escape sequence to abort. Sending 20000, 100-byte ICMP Echos to 20.1.1.4, timeout is 2 seconds: Packet sent with a source address of 10.1.1.1 ..............................................!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Success rate is 60 percent (70/116), round-trip min/avg/max = 156/323/580 ms r1# 说明:在NAT路由器上增加配置命令之后,上海公司10.1.1.0/24到北京公司内网20.1.1.0/24的流量已经通了。
(12)再次查看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 1002 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:R1再次建立了与R4的IKE SA。
(13)再次查看R4上的IKE SA(ISAKMP SA): r4#show cry isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 172.16.1.4 12.1.1.1 QM_IDLE 1002 0 ACTIVE
IPv6 Crypto ISAKMP SA
r4# 说明:R4也再次建立了与R1的IKE SA。
(14)再次查看R3上的NAT转换情况: r3#show ip nat translations Pro Inside global Inside local Outside local Outside global udp 23.1.1.3:500 172.16.1.4:500 12.1.1.1:500 12.1.1.1:500 udp 23.1.1.3:500 172.16.1.4:500 --- --- udp 23.1.1.3:4500 172.16.1.4:4500 12.1.1.1:4500 12.1.1.1:4500 udp 23.1.1.3:4500 172.16.1.4:4500 --- --- r3# 说明:R3上再次看到R4通过NAT-T与远端建立VPN所使用的端口情况(UDP 4500),以及IKE的协商端口(UDP 500)。
4.再次测试穿过NAT建立的IPsec VPN: (1)再次清除当前所有的IPsec会话信息,然后测试IPsec VPN: r1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
r1#
r4#show cry isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status
IPv6 Crypto ISAKMP SA
r4#
R3: r3#clear ip nat translation * r3# r3#show ip nat translations
r3# 说明:R1,R4的IPsec会话已经全部清除,并且R3上的NAT转换也已经清除。
(2)在NAT路由器R3上配置一对一静态NAT映射: r3(config)#no ip nat inside source list 3 interface FastEthernet0/1 overload
r3(config)#ip nat inside source static 172.16.1.4 interface f0/1 r3(config)# 说明:R3将自己外网接口地址静态映射到VPN路由器R4。
(3)查看R3上的NAT转换情况: r3#show ip nat translations Pro Inside global Inside local Outside local Outside global --- 23.1.1.3 172.16.1.4 --- --- r3# 说明:R3已经显示将自己外网接口地址静态映射到VPN路由器R4。
(4)测试北京公司内网20.1.1.0/24到上海公司10.1.1.0/24的连通性: r4#ping 10.1.1.1 source 20.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: Packet sent with a source address of 20.1.1.4 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 224/282/332 ms r4# 说明:在NAT路由器配置一对一静态NAT映射后,北京公司内网20.1.1.0/24到上海公司10.1.1.0/24的流量也可以通。
(5)将IPsec 封装改为AH: R4: r4(config)#int f0/0 r4(config-if)#no crypto map l2l r4(config-if)#exit *Mar 1 01:10:44.539: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF r4(config-if)#exit
r4(config)#no crypto map l2l r4(config)#no crypto ipsec transform-set ccie esp-3des esp-sha-hmac
r4(config)#crypto ipsec transform-set ccie ah-sha-hmac r4(cfg-crypto-trans)#exit 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)#exit r4(config)# r4(config)#int f0/0 r4(config-if)#crypto map l2l r4(config-if)# *Mar 1 01:12:13.811: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r4(config-if)# r4(config-if)#exit r4(config)#
R1: r1(config)#int f0/0 r1(config-if)#no crypto map l2l r1(config-if)#exit r1(config)# *Mar 1 01:12:35.127: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is OFF r1(config)# r1(config)#no crypto map l2l r1(config)#no crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(config)#crypto ipsec transform-set ccie ah-sha-hmac r1(cfg-crypto-trans)#exit r1(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. 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)# r1(config)#int f0/0 r1(config-if)#crypto map l2l r1(config-if)# *Mar 1 01:13:57.971: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#exit r1(config)# 说明:将R4和R1的IPsec封装改为AH封装。
(6)查看当前的transform-set了解IPsec 封装: r4#show crypto ipsec transform-set Transform set ccie: { ah-sha-hmac } will negotiate = { Tunnel, },
r4# 说明:当前已经使用AH的IPsec 封装。
(7)再次测试北京公司内网20.1.1.0/24到上海公司10.1.1.0/24的连通性:
r4#ping 10.1.1.1 source 20.1.1.4 repeat 100
Type escape sequence to abort. Sending 100, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: Packet sent with a source address of 20.1.1.4 ...................................................................... .............................. Success rate is 0 percent (0/100) r4# 说明:AH封装的数据包是无法穿过NAT的,所以北京公司内网20.1.1.0/24到上海公司10.1.1.0/24通信失败。
(8)再次将IPsec封装改为ESP封装: r4(config)#int f0/0 r4(config-if)#no crypto map l2l r4(config-if)#exit r4(config)# r4(config)#no crypto map l2l r4(config)#no crypto ipsec transform-set ccie ah-sha-hmac r4(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r4(cfg-crypto-trans)#exit 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)#exit r4(config)#int f0/0 r4(config-if)#crypto map l2l r4(config-if)# r4(config-if)# *Mar 1 01:20:13.423: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r4(config-if)#exit r4(config)#
r1(config)#int f0/0 r1(config-if)#no crypto map l2l r1(config-if)#exit r1(config)# r1(config)#no crypto map l2l r1(config)#no crypto ipsec transform-set ccie ah-sha-hmac r1(config)#crypto ipsec transform-set ccie esp-3des esp-sha-hmac r1(cfg-crypto-trans)#exit r1(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. 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)# *Mar 1 01:20:26.115: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)# 说明:将R4和R1的IPsec封装改为ESP封装。
(9)查看当前的transform-set了解IPsec 封装: r4#show crypto ipsec transform-set Transform set ccie: { esp-3des esp-sha-hmac } will negotiate = { Tunnel, },
r4# 说明:当前已经已经从AH改为ESP封装。
(10)再次测试北京公司内网20.1.1.0/24到上海公司10.1.1.0/24的连通性: r4#ping 10.1.1.1 source 20.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: Packet sent with a source address of 20.1.1.4 .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 264/327/392 ms r4# 说明:因为IPsec从AH改为ESP封装,所以北京公司内网20.1.1.0/24到上海公司10.1.1.0/24恢复了通信。
(11)查看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 1007 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1# 说明:IPsec从AH改为ESP封装后,IKE SA(ISAKMP SA)也正常建立了。
Easy VPN(EzVPN) 概述在前文我们介绍的所有VPN中,要在一个网络与另一个网络之间建立VPN连接,需要在双方的路由器上进行相关参数配置,如配置IKE(ISAKMP)策略、认证标识、IPsec transform、以及crypto map等等,但是在某些特殊环境下,比如在没有能够支持VPN功能路由器的家庭网络,以及出差在外的没有使用路由器就接入Internet的办公人员,如果在这种情况下还需要与公司总部建立VPN以保证数据加密传输,使用传统的VPN技术将难以实现,所以我们将考虑使用一种简单易用的VPN实现方式,来满足上述环境下的VPN连接要求,如下图:
在上图的网络环境中,在家办公的Home Office,大多使用了没有VPN功能路由器或Modem拨号连接,以及出差在外的没有使用路由器就接入Internet的办公人员,当他们需要使用VPN来保证与公司总部的数据加密传输时,这时需要实现的VPN必须着重于简单的配置,简单的管理,并且方便维护,同时也要考虑到这些环境的IP地址通常都是通过DHCP动态获得的,事先无法确定公网IP地址,为了在这样的环境和需求下布署简单易用的VPN,思科推出了Easy VPN,即EzVPN,如下:
Easy VPN(EzVPN)是本小节的重点。
EzVPN同样是属于IPsec范畴内的VPN技术,需要以IPsec为基础来实现VPN功能,大家都还记得,要完成IPsec VPN连接,必须在双方配置相同的IKE(ISAKMP)策略、认证标识、IPsec transform等一系列策略,同样,EzVPN也必须遵守这全部的规则。但是我们知道,要完成IPsec VPN的种种配置,需要专业的技术人员才能完成,那么Home Office以及出差在外的移动办公人员又如何自己去完成这专业性的差事呢?不用担心,这全部的工作全部交给EzVPN,因为EzVPN能够自动去分析和完成这全部的工作,以保证IPsec VPN的正常连接,而不需要像在路由器上那样进行专业的配置,否则EzVPN就不算是一个简单易用的VPN架构,这也就失去了开发它的意义。 EzVPN是如何脱离专业的命令配置而自行完成IPsec VPN连接的呢?这就需要了解EzVPN的整个运行过程: EzVPN分为EzVPN Server和EzVPN Remote(本文将EzVPN Remote等同于EzVPN Client),EzVPN Server通常就是我们的公司总部,EzVPN Server必须配置在公司总部的支持EzVPN功能的硬件设备上,如路由器,防火墙以及VPN集中器都可以,并且公司总部端的EzVPN Server必须具备静态固定的公网IP地址,用以接受任何EzVPN Client的IPsec VPN连接请求。 EzVPN Client则布署在需要和公司总部连接IPsec VPN的Home Office以及出差在外的移动办公人员处,EzVPN Client也可以配置在硬件路由器或防火墙上(准确地讲这时就叫EzVPN Remote),但如果这样去实现,就需要专业的配置,那还不如不用EzVPN,所以EzVPN Client可以通过软件的形式安装到PC上(准确地讲这时就叫EzVPN Client),当以软件方式安装了EzVPN Client之后,所有的必须的IPsec命令配置就交给软件自动去完成,不需要人工干预,从而真正实现简单易用。但我们知道,要完成IPsec VPN连接,双方必须就IKE(ISAKMP)策略、认证标识、IPsec transform保持一致,那么通过EzVPN Client实现的IPsec又如何去和通过专业技术人员在公司总部的硬件设备上配置的EzVPN Server策略保持一致呢?这个答案也很简单,那就是EzVPN Server直接告诉EzVPN Client该使用什么样的IPsec策略,因为在EzVPN Client软件中已经预先集成了几乎所有的IPsec策略,当EzVPN Client向EzVPN Server请求建立IPsec VPN连接时,EzVPN Server就会将自己通过专业人员配置好的IPsec策略发向EzVPN Client,相当于将自己的IPsec策略推送到EzVPN Client,当EzVPN Client收到这些IPsec策略之后,就从自己预先定义好的策略库中选出完全匹配的策略来应用,最终在与EzVPN Server双方IPsec策略保持一致之后建立IPsec VPN。 毕竟EzVPN Client的IPsec策略是预先定义好的,也许并不支持EzVPN Server发来的任何策略要求,某些不支持的IPsec策略包括: Diffie-Hellman (D-H) groups 1, IPsec安全封装协议AH(Authentication Header), IPsec Mode:Transport mode
因为在普通IPsec VPN将双方LAN连通时,可以让双方LAN的私有地址段进行相互通信,但一个EzVPN Client端和EzVPN Server端连接IPsec VPN之后,那么EzVPN Client又是以什么地址为身份去访问公司总部的资源呢?也许有人会说既然EzVPN Client能够连接上EzVPN Server,那么它应该是有地址的啊,为什么还要考虑EzVPN Client的源地址身份呢?这是因为通常EzVPN Client端的IP地址都是动态分配的公网IP地址,比如家里的PC通过ADSL上网获得的公网地址,如果EzVPN Client直接以公网IP地址穿过VPN去访问公司总部的内网资源,公司总部的内网会发现原来只是Internet上一个普通地址在和自己通信,那么EzVPN Server自然就会将总部回复的数据包当作普通流量发向Internet而不走VPN,这时EzVPN Client又如何和公司总部的内网正常通过VPN通信呢?基于上述原因,所有成功连接到EzVPN Server之后的EzVPN Client,都会从EzVPN Server获得一个靠DHCP自动分发的IP地址,所有通过VPN和公司总部内网通信的源IP地址都会是这个自动获得的IP地址,这个也像是你自己的PC网卡可能配置上一个IP地址,但你拨ADSL上网之后,会自动获得一个公网IP地址,你拨EzVPN连接之后,也会自动获得一个VPN地址,EzVPN Client获得的地址默认掩码是/32,但可以改变这种默认行为。 所以在配置EzVPN Server时,还需要配置供自动分配给EzVPN Client的地址池,EzVPN Server动态分配给Client的地址可以是任意地址段,即使和自己当前连接的网络属同一网段也没关系。 因为可能会有多个EzVPN Client同时连接到EzVPN Server,而每个EzVPN Client都会获得一个EzVPN Server自动分配的IP地址,这时,EzVPN Server为了区分分配出去的IP地址分别对应着哪个EzVPN Client,它会自动产生一条/32位的静态路由指向对应的EzVPN Client,这个功能称为Reverse route injection (RRI),但RRI的全部功能并不是指产生一条/32位的静态路由指向对应的EzVPN Client,它还包括将该/32的静态路由自动重分布进各动态路由协议,而重分布并不是自动执行的,只有在手工开启了Reverse route injection (RRI),才能获得完整的功能,否则只能自动产生一条/32的静态路由而不会自动重分布进各动态路由协议。
当EzVPN Client与EzVPN Server建立VPN连接之后,EzVPN Client端就能够正常访问公司总部的内网资源,这是因为默认情况下,所有EzVPN Client的流量都会从VPN接口上发出,最后所有的流量都会到达EzVPN Server端,也就是EzVPN Client端的所有流量都被IPsec VPN加密发到EzVPN Server;但是我们想象一下,如果EzVPN Client端的所有流量都通过VPN接口发到EzVPN Server端,那EzVPN Client并不是发到公司总部而是要发到Internet的流量怎么办?我们应该将需要发到公司总部的流量才通过IPsec VPN加密发到EzVPN Server,而其它如发到Internet的流量还是从正常接口出去,这就相当于普通IPsec VPN中的定义感兴趣流量,在EzVPN中,这里称为隧道分离(Split Tunneling),隧道分离让EzVPN Client只将需要发到公司总部的流量才通过IPsec VPN加密发到EzVPN Server,而其它如发到Internet的流量还是从正常接口出去,这样就能够让EzVPN Client端访问公司总部和上Internet两不误。
隧道分离(Split Tunneling)是在EzVPN Server上配置的,配置之后会告知EzVPN Client哪些流量需要通过IPsec VPN加密发到EzVPN Server,隧道分离(Split Tunneling)通过ACL匹配相当的流量,并应用到Crypto map,静态map(static map)和动态map(dynamic map)都可以。
如果Easy VPN Client断开连接之后,由于Easy VPN Server并不是马上就能知道,所以在Easy VPN Client再次发起连接时,Easy VPN Server会因为已经存在一条连接记录而拒绝新的请求,所以加入了一个称为Initial Contact的功能,在Easy VPN Server收到Easy VPN Client新的连接请求时,会删除与该Easy VPN Client旧连接而接受新连接请求,目前Initial Contact是默认开启的。 当Easy VPN Client向Easy VPN Server发起IPsec连接请求时,对于IKE Phase One的认证,在Easy VPN Server端必须通过AAA的方式来定义,但不一定要使用AAA服务器,也可以使用Easy VPN Server本地认证,但必须通过AAA方式来定义。当Easy VPN Client通过Easy VPN Server的认证之后,Easy VPN Server根据一个ISAKMP组分配某些策略,如IP地址,隧道分离参数等等,如果Easy VPN Client提供的认证信息没有与定义好ISAKMP组匹配,那么则与默认的ISAKMP组匹配,但默认的ISAKMP组也是必须定义的。一个ISAKMP组中所有的用户分配到的策略都是相同的,这称为Group-Based Policy Control。 某些时候,我们需要为不同的用户分发不同的策略信息,哪怕是他们属于同一个ISAKMP组,这样基于特定用户分发特定策略则不是基于ISAKMP组分发策略的机制称为User-Based Policy Control,某个用户的User-Based Policy Control策略优先于Group-Based Policy Control。 上述所说的User-Based Policy Control的用户分发策略的行为必须在 IOS Release 12.3(4)T或更高版本才可以实现,并且必须靠RADIUS服务器才能实现,但在IOS Release 12.4(9)T或更高版本中,User-Based Policy Control可以通过配置Virtual Tunnel Interface来实现。
对于每个用户同时登录的会话数以及每个组中可以同时发起的会话数都是可以做限制的,可以通过AAA服务器或通过IOS命令行都可以实现。
注: ★Cisco Easy VPN Server 可以在配置在Cisco IOS Release 12.2(8)T 或更高版本。 ★Cisco Easy VPN Remote可以在配置在Cisco IOS Release 12.2(4)YA或更高版本。 ★Easy VPN Server可以接受任何地址的Easy VPN Client连接。 ★只能Easy VPN Server对Easy VPN Client发起认证,Easy VPN Client不能认证Easy VPN Server。 ★安装在EzVPN Client端的拨号连接软件请自行下载,建议下载5.0或更高版本,也可通过以下地址进行EzVPN Client下载: http://www.china-ccie.com/download/EasyVPNClient/EasyVPNClient.rar
目前Cisco产品中能够配置EzVPN的设备包括Router(路由器),PIX(防火墙),ASA(防火墙),VPN集中器,所以我们会对各设备进行EzVPN实验配置举例,但VPN集中器除外。
EzVPN over Router在本小节,我们在Router与Router之间配置EzVPN,即配置EzVPN over Router。
配置EzVPN over Router
说明:我们下面需要以上图的环境来演示EzVPN的效果,其中远程的PC机需要直接使用私有地址来访问公司总部10.1.1.0/24和4.4.4.4/32,而R2则相当于Internet路由器,R2只负责让R1与R3能够通信,R2不会配置任何路由,R2不允许拥有公司总部的10.1.1.0/24和4.4.4.4/32以及PC所在的30.1.1.0/24,R1为公司总部的EzVPN Server,PC需要先和R1的公网出口能够通信,然后通过与R1建立EzVPN,最终通过VPN隧道来穿越没有路由的R2,实现在私网与私网之间穿越公网的通信;因为PC要先和R1的公网接口能够通信,所以R3需要对PC所在的网段30.1.1.0/24进行NAT转换,因为R3和R1的公网是通的。
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 4.4.4.4 255.255.255.255 10.1.1.4 r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2 说明:配置R1的接口地址,并写指向R4的Loopback地址4.4.4.4的路由,同时写默认路由指向Internet(路由器R2),地址12.1.1.2。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 12.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int f0/1 r2(config-if)#ip add 23.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int loopback 0 r2(config-if)#ip add 2.2.2.2 255.255.255.0 r2(config-if)#exit r2(config)#
r2(config)#line vty 0 15 r2(config-line)#no login r2(config-line)#exit 说明:配置R2的接口地址,并配置Loopback地址2.2.2.2/32,最后打开VTY线路供Telnet;因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 30.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 23.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2
r3(config)#service dhcp r3(config)#ip dhcp pool net30 r3(dhcp-config)#network 30.1.1.0 255.255.255.0 r3(dhcp-config)#default-router 30.1.1.3 r3(dhcp-config)#dns-server 202.96.209.133 r3(dhcp-config)#exit r3(config)#ip dhcp excluded-address 30.1.1.3 r3(config)#
r3(config)#int f0/0 r3(config-if)#ip nat inside r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip nat outside r3(config-if)#exit r3(config)#
r3(config)#access-list 3 permit any r3(config)#ip nat inside source list 3 interface f0/1 overload r3(config)# 说明:配置R3的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2;并且在R3上开启DHCP,让PC动态获得IP地址;同时R3将PC所在的网段全部NAT转换成外网接口地址23.1.1.3出去。
(4)配置R4:
r4(config)#int f0/1 r4(config-if)#ip add 10.1.1.4 255.255.255.0 r4(config-if)#no sh r4(config-if)#exit
r4(config)#int loopback 0 r4(config-if)#ip address 4.4.4.4 255.255.255.0 r4(config-if)#exit r4(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1 r4(config)#
r4(config)#line vty 0 15 r4(config-line)#no login r4(config-line)#exit
说明:配置R4的接口地址,并写默认路由指向公司总部出口路由器R1。同时配置Loopback地址4.4.4.4/32,最后打开VTY线路供Telnet。
2.测试基础网络环境 (1)查看PC机的地址情况:
说明:PC机通过R3的DHCP正常获得了地址30.1.1.1,并且网关指向R3内网接口30.1.1.3。
(2)测试R3到R1的连通性: r3#ping 12.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 52/99/164 ms r3# 说明:因为R3与R1都有默认路由指向Internet(路由器R2),而R2与R3和R1都是可达的,所以R3与R1通信正常。
(3)测试R3到R2的Loopback连通性: r3#ping 2.2.2.2
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/63/100 ms r3# 说明:因为R3有默认路由指向Internet(路由器R2),所以R3与R2的Loopback通信正常。
(4)测试R3到公司总部的10.1.1.0/24和4.4.4.4/32的连通性: r3#ping 10.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.4, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r3# r3#ping 4.4.4.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r3# 说明:虽然R3有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R3与R1的通信,所以R1无法访问公司总部的私有网段10.1.1.0/24和4.4.4.4/32。
(5)查看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
2.0.0.0/24 is subnetted, 1 subnets C 2.2.2.0 is directly connected, Loopback0 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能够通信即可。
(6)测试PC到R1的连通性:
说明:因为PC的默认网关指向路由器R3,并且R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC与R1通信正常。
(7)测试PC到R2的Loopback连通性:
说明:因为PC的默认网关指向路由器R3,并且R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC与R2的Loopback通信正常。
(8)查看PC与R2的Loopback通信时的源地址:
说明:因为R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC是使用源地址23.1.1.3与R2的Loopback通信的,同样也应该是使用源地址23.1.1.3与R1通信的。
(9)测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为连R3都与公司总部的10.1.1.0/24和4.4.4.4/32不能通信,所以PC更不能。
(10)查看PC的路由表情况:
说明:从PC的路由转发表中可以看出,PC的任何数据包都是发向自己的默认网关(即R3的内网接口)30.1.1.3的,所以所有与外部的数据包是否通畅全靠R3。
(11)查看R3的NAT转换表: r3#sh ip nat translations Pro Inside global Inside local Outside local Outside global udp 23.1.1.3:138 1.1.1.1:138 1.1.1.255:138 1.1.1.255:138 icmp 23.1.1.3:512 30.1.1.1:512 2.2.2.2:512 2.2.2.2:512 icmp 23.1.1.3:512 30.1.1.1:512 4.4.4.4:512 4.4.4.4:512 icmp 23.1.1.3:512 30.1.1.1:512 10.1.1.4:512 10.1.1.4:512 icmp 23.1.1.3:512 30.1.1.1:512 12.1.1.2:512 12.1.1.2:512 r3# 说明:R3已经将PC发往外部的数据源地址转换成自己的外网接口地址23.1.1.3。
3.在公司总部路由器R1上配置EzVPN (1)配置AAA认证: r1(config)#aaa new-model r1(config)#aaa authentication login cisco1 local group radius r1(config)#aaa authorization network cisco2 local group radius r1(config)#username chinaccie password chinaccie 说明:路由器上AAA为EzVPN的必配部分,定义使用本地用户数据库认证,并创建了本地用户名chinaccie以及密码chinaccie。
(2)配置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。
(3)定义EzVPN Client连接上来后自动分配的地址池: r1(config)#ip local pool net10 10.1.1.100 10.1.1.200 说明:分配给EzVPN Client连接上来后地址池为10.1.1.100- 10.1.1.200。
(4)配置用户组策略,每个连接上来的EzVPN Client都与一个用户组相关联,如果没有配置特定组,但配置了默认组,用户将和默认组相关联: r1(config)#crypto isakmp client configuration group chinaccie r1(config-isakmp-group)#key cisco123 r1(config-isakmp-group)#dns 202.96.209.133 r1(config-isakmp-group)#pool net10 r1(config-isakmp-group)#domain china-ccie.com r1(config-isakmp-group)#exit 说明:用户组名为chinaccie,该组的密码为cisco123,所有连上来的Client分配的地址池名为net10,即前面定义的地址池,以及其它一些参数。
(5)配置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。
(6)定义crypto map r1(config)#crypto dynamic-map mymap 1 r1(config-crypto-map)#reverse-route r1(config-crypto-map)#set transform-set ccie r1(config-crypto-map)#exit 说明:动态crypto map和静态crypto map都可以,调用的IPsec transform为ccie,在路由器中必须配置reverse-route功能。
(7)关联认证信息: r1(config)#crypto map ezvpn client configuration address respond (如果client是1.x,则不是respond而是initiate) r1(config)#crypto map ezvpn client authentication list cisco1 (定义认证) r1(config)#crypto map ezvpn isakmp authorization list cisco2 (定义认证查询IKE querying) r1(config)#crypto map ezvpn 1 ipsec-isakmp dynamic mymap
(8)应用crypto map: r1(config)#int f0/0 r1(config-if)#crypto map ezvpn *Mar 1 00:27:51.587: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON r1(config-if)#exi 说明:将crypto map关联到外网接口F0/0。
4.测试EzVPN (1)在PC上创建EzVPN连接:
在PC上安装完EzVPN Client软件之后,打开后出现以下界面:
单击New,出现如下菜单需要填写信息:
说明:填写的信息必须与EzVPN Server上配置的一致,其它host必须为EzVPN Server(即R1)的外网接口地址12.1.1.1,Group Authentication的Name为用户组的名字chinaccie,Password是之前定义的cisco123,填写完后,单击Save保存。
保存填写的信息之后,出现如下信息:
说明:右键单击已保存的连接名,然后选择菜单中的Connect进行EzVPN连接。
向EzVPN Server成功发送连接请求之后,将出现如下认证提示:
说明:输入前面创建的本地用户名chinaccie以及密码chinaccie。
等EzVPN连接成功之后,将在右下角出现金色小锁的图标,右键单击并选择Statistics查看详细信息,如下:
选择Statistics查看详细信息后,出现如下信息框:
说明:PC上的EzVPN连接成功后,从EzVPN Server那里获得了地址10.1.1.100,还可以看到其它各项IPsec的安全参数情况,并且在这里也能说明,EzVPN Client所在的网段的NAT是不影响EzVPN的建立的。
(2)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为已经与公司总部路由器R1建立EzVPN连接,所以现在与公司总部的10.1.1.0/24和4.4.4.4/32通信正常。
(3)查看PC到公司总部的10.1.1.0/24和4.4.4.4/32的路径走向:
说明:从PC发向公司总部的数据包直接就到达了公司总部路由器R1,说明中间的多跳已经被VPN隧道取代为一跳了。
(4)查看PC到公司总部的数据包源地址:
说明:EzVPN Client是以从Server那里动态分配的地址为源和Server的网段进行通信的,这里也能说明,EzVPN Client从Server那里动态分配的地址可以任意地址段,和Server当前连接的网络(如10.1.1.0/24)属同一网段也没关系。
(5)再次测试PC到R2的Loopback连通性:
说明:在PC连通EzVPN之后,到R2的Loopback的通信失败,R2的Loopback也相当于Internet地址,这说明正常情况下,PC连通EzVPN之后,所有的数据包都发往EzVPN Server,但EzVPN Server却不会将来自于Client的流量从开启了EzVPN的接口发出去,但其它接口可以,如内网。
(6)再次查看PC的路由表情况:
说明:现在PC的默认网关为EzVPN的接口地址10.1.1.100,即所有去往外部的流量都从VPN隧道发出去,最终就发到了EzVPN Server,所以就失去了与Internet的连接,在这样的情况下,隧道分离(Split Tunneling)就显现出了它的作用,因为在这里很明显,只有发往公司总部的10.1.1.0/24和4.4.4.4/32的流量才需要走VPN隧道,而其它所有流量都走原来的正常接口,这就需要隧道分离将两类流量分开处理。
(7)查看EzVPN Server的路由表情况: 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
4.0.0.0/32 is subnetted, 1 subnets S 4.4.4.4 [1/0] via 10.1.1.4 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks C 10.1.1.0/24 is directly connected, FastEthernet0/1 S 10.1.1.100/32 [1/0] via 23.1.1.3 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# 说明:由于开启了reverse-route,所以EzVPN Server自动产生了一条指向动态分配给Client的主机地址的路由。
(8)查看R1上IKE SA的peer: r1#show crypto isakmp peers Peer: 23.1.1.3 Port: 1048 Local: 12.1.1.1 Phase1 id: chinaccie r1# 说明:R1已经成功与PC建立IKE peer,说明IKE SA也应该成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3。
(9)查看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 1001 0 ACTIVE
IPv6 Crypto ISAKMP SA
r1#
说明:IKE SA已经成功建立,R1本地源地址为12.1.1.1,目标为23.1.1.3。
(10)查看R1上的IPsec SA: r1#show crypto ipsec sa
interface: FastEthernet0/0 Crypto map tag: ezvpn, 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): (10.1.1.100/255.255.255.255/0/0) current_peer 23.1.1.3 port 1048 PERMIT, flags={} #pkts encaps: 72, #pkts encrypt: 72, #pkts digest: 72 #pkts decaps: 184, #pkts decrypt: 184, #pkts verify: 184 #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: 0xA33D5D76(2738707830)
inbound esp sas: spi: 0xCEAAE435(3467306037) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 1, flow_id: SW:1, crypto map: ezvpn sa timing: remaining key lifetime (k/sec): (4570306/2790) IV size: 8 bytes replay detection support: Y Status: ACTIVE
inbound ah sas:
inbound pcp sas:
outbound esp sas: spi: 0xA33D5D76(2738707830) transform: esp-3des esp-sha-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 2, flow_id: SW:2, crypto map: ezvpn sa timing: remaining key lifetime (k/sec): (4570324/2789) IV size: 8 bytes replay detection support: Y Status: ACTIVE
outbound ah sas:
outbound pcp sas: r1# 说明:IPsec SA中显示了任何去往Client的流量都会被加密。
5.配置隧道分离(Split Tunneling) (1)在R1上配置隧道分离: r1(config)#no ip local pool net10 10.1.1.100 10.1.1.200 r1(config)#ip local pool net10 100.1.1.100 100.1.1.200
r1(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 any r1(config)#access-list 100 permit ip host 4.4.4.4 any r1(config)#crypto isakmp client configuration group chinaccie r1(config-isakmp-group)#acl 100 r1(config-isakmp-group)#exit 说明:将分配给EzVPN Client的地址池做个改动,改为100.1.1.100-100.1.1.200,用以测试任意地址段都是可行的,并且配置用于隧道分离的ACL,ACL的源就是需要和Client通信的源,即Client需要走VPN隧道的目标地址段,其它不在该ACL源的地址在Client源则不走VPN隧道,这里的ACL的目标地址必须为any,或者可以使用标准ACL。
(2)查看PC连接EzVPN之后的详细信息:
说明:PC现在从EzVPN Server那里获得了地址100.1.1.101,由于地址池改动了。所以与上次获得的地址无任何关系。
(3)查看Route Details中的隧道分离情况:
说明:与配置的效果一样,去往公司总部的10.1.1.0/24和4.4.4.4/32是需要从VPN隧道走的。
(4)测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:和之前建立EzVPN后的现象一样,与公司总部的10.1.1.0/24和4.4.4.4/32通信正常。
(5)测试PC到R2的Loopback连通性:
说明:在配置了隧道分离(Split Tunneling)之后,到EzVPN Server端的流量从VPN隧道中发出,能够正常通信,但其它发到如Internet的流量则从正常接口发出,所以与R2的Loopback通信也正常。
(6)查看PC的路由表情况:
说明:从PC的路由表中可以看出,和之前的Client软件显示的隧道分离信息一样,只有发往公司总部的10.1.1.0/24和4.4.4.4/32的流量才从VPN接口100.1.1.101发出,而其它流量都是从正常接口(30.1.1.3)发出,因为默认网关就是30.1.1.3。
(7)再次查看PC到公司总部的10.1.1.0/24和4.4.4.4/32以及到R2的Loopback的路径走向:
说明:从PC发向公司总部的数据包从VPN隧道直接就到达了公司总部路由器R1,但到其它Internet的数据包则是从正常接口发到R3,然后由R3正常路由出去的。
6.在EzVPN Server上,NAT对EzVPN的影响和其它VPN一样,所以如要配置NAT时,请使用正常方法将需要走VPN隧道的流量和到EzVPN Clietn(即自动分配地址池)的地址段从NAT感兴趣流中移除。
EzVPN over PIX在本小节,我们在Router与PIX之间配置EzVPN,即配置EzVPN over PIX。
配置EzVPN over PIX
说明:我们下面需要以上图的环境来演示EzVPN的效果,其中远程的PC机需要直接使用私有地址来访问公司总部10.1.1.0/24和4.4.4.4/32,而R2则相当于Internet路由器,R2只负责让PIX与R3能够通信,R2不会配置任何路由,R2不允许拥有公司总部的10.1.1.0/24和4.4.4.4/32以及PC所在的30.1.1.0/24,PIX为公司总部的EzVPN Server,PC需要先和PIX的公网出口能够通信,然后通过与PIX建立EzVPN,最终通过VPN隧道来穿越没有路由的R2,实现在私网与私网之间穿越公网的通信;因为PC要先和PIX的公网接口能够通信,所以R3需要对PC所在的网段30.1.1.0/24进行NAT转换,因为R3和R1的公网是通的。
1.配置基础网络环境 (1)配置PIX: pixfirewall(config)# int e0 pixfirewall(config-if)# ip add 12.1.1.1 255.255.255.0 pixfirewall(config-if)# nameif outside INFO: Security level for "outside" set to 0 by default. pixfirewall(config-if)# no shutdown pixfirewall(config-if)# exit
pixfirewall(config)# int e1 pixfirewall(config-if)# ip add 10.1.1.1 255.255.255.0 pixfirewall(config-if)# nameif inside INFO: Security level for "inside" set to 100 by default. pixfirewall(config-if)# no shutdown pixfirewall(config-if)# exit
pixfirewall(config)# route inside 4.4.4.4 255.255.255.255 10.1.1.4 pixfirewall(config)# route outside 0 0 12.1.1.2 说明:配置PIX的接口地址,并写指向R4的Loopback地址4.4.4.4的路由,同时写默认路由指向Internet(路由器R2),地址12.1.1.2。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 12.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int f0/1 r2(config-if)#ip add 23.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int loopback 0 r2(config-if)#ip add 2.2.2.2 255.255.255.0 r2(config-if)#exit r2(config)#
r2(config)#line vty 0 15 r2(config-line)#no login r2(config-line)#exit 说明:配置R2的接口地址,并配置Loopback地址2.2.2.2/32,最后打开VTY线路供Telnet;因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 30.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 23.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2
r3(config)#service dhcp r3(config)#ip dhcp pool net30 r3(dhcp-config)#network 30.1.1.0 255.255.255.0 r3(dhcp-config)#default-router 30.1.1.3 r3(dhcp-config)#dns-server 202.96.209.133 r3(dhcp-config)#exit r3(config)#ip dhcp excluded-address 30.1.1.3 r3(config)#
r3(config)#int f0/0 r3(config-if)#ip nat inside r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip nat outside r3(config-if)#exit r3(config)#
r3(config)#access-list 3 permit any r3(config)#ip nat inside source list 3 interface f0/1 overload r3(config)# 说明:配置R3的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2;并且在R3上开启DHCP,让PC动态获得IP地址;同时R3将PC所在的网段全部NAT转换成外网接口地址23.1.1.3出去。
(4)配置R4:
r4(config)#int f0/1 r4(config-if)#ip add 10.1.1.4 255.255.255.0 r4(config-if)#no sh r4(config-if)#exit
r4(config)#int loopback 0 r4(config-if)#ip address 4.4.4.4 255.255.255.0 r4(config-if)#exit r4(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1 r4(config)#
r4(config)#line vty 0 15 r4(config-line)#no login r4(config-line)#exit
说明:配置R4的接口地址,并写默认路由指向公司总部出口PIX防火墙。同时配置Loopback地址4.4.4.4/32,最后打开VTY线路供Telnet。
2.测试基础网络环境 (1)查看PC机的地址情况:
说明:PC机通过R3的DHCP正常获得了地址30.1.1.1,并且网关指向R3内网接口30.1.1.3。
(2)测试R3到PIX的连通性: r3#ping 12.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 148/220/380 ms r3# 说明:因为R3与PIX都有默认路由指向Internet(路由器R2),而R2与R3和PIX都是可达的,所以R3与PIX通信正常。
(3)测试R3到R2的Loopback连通性: r3#ping 2.2.2.2
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/63/100 ms r3# 说明:因为R3有默认路由指向Internet(路由器R2),所以R3与R2的Loopback通信正常。
(4)测试R3到公司总部的10.1.1.0/24和4.4.4.4/32的连通性: r3#ping 10.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.4, timeout is 2 seconds: UUUUU Success rate is 0 percent (0/5) r3#
r3#ping 4.4.4.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r3# 说明:虽然R3有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R3与PIX的通信,所以R1无法访问公司总部的私有网段10.1.1.0/24和4.4.4.4/32。
(5)查看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
2.0.0.0/24 is subnetted, 1 subnets C 2.2.2.0 is directly connected, Loopback0 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的责任就只是保证PIX与R3能够通信即可。
(6)测试PC到PIX和R2的Loopback的连通性:
说明:因为PC的默认网关指向路由器R3,并且R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC与PIX和R2的Loopback通信正常。
(7)查看PC与R2的Loopback通信时的源地址:
说明:因为R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC是使用源地址23.1.1.3与R2的Loopback通信的,同样也应该是使用源地址23.1.1.3与PIX通信的。
(8)测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为连R3都与公司总部的10.1.1.0/24和4.4.4.4/32不能通信,所以PC更不能。
(9)查看R3的NAT转换表: r3#sh ip nat translations Pro Inside global Inside local Outside local Outside global udp 23.1.1.3:138 1.1.1.1:138 1.255.255.255:138 1.255.255.255:138 icmp 23.1.1.3:512 30.1.1.1:512 4.4.4.4:512 4.4.4.4:512 icmp 23.1.1.3:512 30.1.1.1:512 10.1.1.4:512 10.1.1.4:512 icmp 23.1.1.3:512 30.1.1.1:512 12.1.1.1:512 12.1.1.1:512 r3# 说明:R3已经将PC发往外部的数据源地址转换成自己的外网接口地址23.1.1.3。
3.在公司总部PIX防火墙上配置EzVPN (1)配置IKE(ISAKMP)策略: pixfirewall(config)# crypto isakmp policy 10 pixfirewall(config-isakmp-policy)# authentication pre-share pixfirewall(config-isakmp-policy)# encryption 3des pixfirewall(config-isakmp-policy)# hash sha pixfirewall(config-isakmp-policy)# group 2 pixfirewall(config-isakmp-policy)# exit 说明:定义了ISAKMP policy 10,加密方式为3des,hash算法为sha,认证方式为Pre-Shared Keys (PSK),密钥算法(Diffie-Hellman)为group 2。
(2)定义EzVPN Client连接上来后自动分配的地址池: pixfirewall(config)# ip local pool net10 10.1.1.100-10.1.1.200 mask 255.255.255.0 说明:地址池范围为10.1.1.100-10.1.1.200。
(3)配置隧道分离: pixfirewall(config)# access-list Split_Tunnel_List extended permit ip 10.1.1.0 255.255.255.0 any pixfirewall(config)# access-list Split_Tunnel_List extended permit ip 4.4.4.4 255.255.255.255 any 说明:将10.1.1.0/24和4.4.4.4/32分离开来。
(4)配置用户组策略: pixfirewall(config)# group-policy mypp internal pixfirewall(config)# group-policy mypp attributes pixfirewall(config-group-policy)# address-pool value net10 pixfirewall(config-group-policy)# dns-server value 202.96.209.133 pixfirewall(config-group-policy)# split-tunnel-policy tunnelspecified pixfirewall(config-group-policy)# split-tunnel-network-list value Split_Tunnel_List pixfirewall(config-group-policy)# exit 说明:定义了地址池,以及隧道分离信息,该组名不是EzVPN Client在创建拨号时定义的名字。
(5)配置用户隧道信息: pixfirewall(config)# tunnel-group chinaccie type ipsec-ra pixfirewall(config)# tunnel-group chinaccie general-attributes pixfirewall(config-tunnel-general)# default-group-policy mypp pixfirewall(config-tunnel-general)# exit pixfirewall(config)# tunnel-group chinaccie ipsec-attributes pixfirewall(config-tunnel-ipsec)# pre-shared-key cisco123 pixfirewall(config-tunnel-ipsec)# exit 说明:定义了用户隧道名chinaccie的基本参数,认证密码为cisco123,EzVPN Client在创建拨号时,组名即为该隧道名。
(6)关联crypto map: pixfirewall(config)# crypto ipsec transform-set ccie esp-3des esp-sha-hmac pixfirewall(config)# crypto dynamic-map mymap 1 set transform-set ccie pixfirewall(config)# crypto map ezvpn 10 ipsec-isakmp dynamic mymap pixfirewall(config)# crypto map ezvpn interface outside pixfirewall(config)# crypto isakmp enable outside 说明:将crypto map与IPsec transform关联起来,并应用于接口。
(7)创建用户名和密码: pixfirewall(config)# username chinaccie password chinaccie 说明:创建了本地用户名chinaccie以及密码chinaccie,防火墙上可以不用AAA来定义认证。
4.测试EzVPN (1)在PC上创建EzVPN连接: 创建EzVPN连接的方法和参数与上一节EzVPN over Router中完全一致。
(2)查看PC连接EzVPN后的详细信息:
说明:PC上的EzVPN连接成功后,从EzVPN Server那里获得了地址10.1.1.100。
(3)查看PC连接EzVPN后的隧道分离信息:
说明:与配置的效果一样,去往公司总部的10.1.1.0/24和4.4.4.4/32是需要从VPN隧道走的。
(4)查看PC的路由表情况:
说明:从PC的路由表中可以看出,只有发往公司总部的10.1.1.0/24和4.4.4.4/32的流量才从VPN接口10.1.1.100发出,而其它流量都是从正常接口(30.1.1.3)发出,因为默认网关就是30.1.1.3。
(5)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为已经与公司总部路由器PIX建立EzVPN连接,所以现在与公司总部的10.1.1.0/24和4.4.4.4/32通信正常。
(6)测试PC到R2的Loopback连通性:
说明:因为配置了隧道分离(Split Tunneling),所以到EzVPN Server端的流量从VPN隧道中发出,能够正常通信,其它发到如Internet的流量则从正常接口发出,所以与R2的Loopback通信也正常。
(7)再次查看PC到公司总部的10.1.1.0/24和4.4.4.4/32以及到R2的Loopback的路径走向:
说明:从PC发向公司总部的数据包从VPN隧道直接就到达了公司总部PIX防火墙,但到其它Internet的数据包则是从正常接口发到R3,然后由R3正常路由出去的。
(8)查看PIX上的IKE SA(ISAKMP SA): pixfirewall# show crypto isakmp sa
Active SA: 1 Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey) Total IKE SA: 1
1 IKE Peer: 23.1.1.3 Type : user Role : responder Rekey : no State : AM_ACTIVE pixfirewall# 说明:IKE SA已经成功建立,PIX本地源地址为12.1.1.1,目标为23.1.1.3。
(9)查看PIX上的IPsec SA: pixfirewall# show crypto ipsec sa interface: outside Crypto map tag: mymap, seq num: 1, local addr: 12.1.1.1
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0) remote ident (addr/mask/prot/port): (10.1.1.100/255.255.255.255/0/0) current_peer: 23.1.1.3, username: chinaccie dynamic allocated peer ip: 10.1.1.100
#pkts encaps: 52, #pkts encrypt: 52, #pkts digest: 52 #pkts decaps: 103, #pkts decrypt: 103, #pkts verify: 103 #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.: 12.1.1.1/4500, remote crypto endpt.: 23.1.1.3/1058 path mtu 1500, ipsec overhead 66, media mtu 1500 current outbound spi: AE77791C
inbound esp sas: spi: 0x9C075730 (2617726768) transform: esp-3des esp-sha-hmac none in use settings ={RA, Tunnel, NAT-T-Encaps, } slot: 0, conn_id: 4096, crypto-map: mymap sa timing: remaining key lifetime (sec): 28641 IV size: 8 bytes replay detection support: Y outbound esp sas: spi: 0xAE77791C (2927065372) transform: esp-3des esp-sha-hmac none in use settings ={RA, Tunnel, NAT-T-Encaps, } slot: 0, conn_id: 4096, crypto-map: mymap sa timing: remaining key lifetime (sec): 28640 IV size: 8 bytes replay detection support: Y
pixfirewall# 说明:IPsec SA中显示了任何去往Client的流量都会被加密。
(10)查看PIX的路由表情况:
pixfirewall# show route
Codes: C - connected, S - static, I - IGRP, 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, E - EGP i - IS-IS, 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
S 4.4.4.4 255.255.255.255 [1/0] via 10.1.1.4, inside C 10.1.1.0 255.255.255.0 is directly connected, inside S 10.1.1.100 255.255.255.255 [1/0] via 12.1.1.2, outside C 12.1.1.0 255.255.255.0 is directly connected, outside S* 0.0.0.0 0.0.0.0 [1/0] via 12.1.1.2, outside pixfirewall# pixfirewall# 说明: EzVPN Server自动产生了一条指向动态分配给Client的主机地址的路由。
EzVPN over ASA在本小节,我们在Router与ASA之间配置EzVPN,即配置EzVPN over ASA,但在此提前说明,EzVPN over ASA的配置与上一小节的EzVPN over PIX完全相同,所以如果已经阅读上一小节的EzVPN over PIX,那么此小节可以跳过。
配置EzVPN over ASA
说明:我们下面需要以上图的环境来演示EzVPN的效果,其中远程的PC机需要直接使用私有地址来访问公司总部10.1.1.0/24和4.4.4.4/32,而R2则相当于Internet路由器,R2只负责让ASA与R3能够通信,R2不会配置任何路由,R2不允许拥有公司总部的10.1.1.0/24和4.4.4.4/32以及PC所在的30.1.1.0/24,ASA为公司总部的EzVPN Server,PC需要先和ASA的公网出口能够通信,然后通过与ASA建立EzVPN,最终通过VPN隧道来穿越没有路由的R2,实现在私网与私网之间穿越公网的通信;因为PC要先和ASA的公网接口能够通信,所以R3需要对PC所在的网段30.1.1.0/24进行NAT转换,因为R3和R1的公网是通的。
1.配置基础网络环境 (1)配置ASA: ciscoasa(config)# int e0/0 ciscoasa(config-if)# ip add 12.1.1.1 255.255.255.0 ciscoasa(config-if)# nameif outside INFO: Security level for "outside" set to 0 by default. ciscoasa(config-if)# no shutdown ciscoasa(config-if)# exit ciscoasa(config)# int e0/1 ciscoasa(config-if)# ip add 10.1.1.1 255.255.255.0 ciscoasa(config-if)# nameif inside INFO: Security level for "inside" set to 100 by default. ciscoasa(config-if)# no shutdown ciscoasa(config-if)# exit ciscoasa(config)# route inside 4.4.4.4 255.255.255.255 10.1.1.4 ciscoasa(config)# route outside 0 0 12.1.1.2 说明:配置ASA的接口地址,并写指向R4的Loopback地址4.4.4.4的路由,同时写默认路由指向Internet(路由器R2),地址12.1.1.2。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 12.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int f0/1 r2(config-if)#ip add 23.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int loopback 0 r2(config-if)#ip add 2.2.2.2 255.255.255.0 r2(config-if)#exit r2(config)#
r2(config)#line vty 0 15 r2(config-line)#no login r2(config-line)#exit 说明:配置R2的接口地址,并配置Loopback地址2.2.2.2/32,最后打开VTY线路供Telnet;因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 30.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 23.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2
r3(config)#service dhcp r3(config)#ip dhcp pool net30 r3(dhcp-config)#network 30.1.1.0 255.255.255.0 r3(dhcp-config)#default-router 30.1.1.3 r3(dhcp-config)#dns-server 202.96.209.133 r3(dhcp-config)#exit r3(config)#ip dhcp excluded-address 30.1.1.3 r3(config)#
r3(config)#int f0/0 r3(config-if)#ip nat inside r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip nat outside r3(config-if)#exit r3(config)#
r3(config)#access-list 3 permit any r3(config)#ip nat inside source list 3 interface f0/1 overload r3(config)# 说明:配置R3的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2;并且在R3上开启DHCP,让PC动态获得IP地址;同时R3将PC所在的网段全部NAT转换成外网接口地址23.1.1.3出去。
(4)配置R4:
r4(config)#int f0/1 r4(config-if)#ip add 10.1.1.4 255.255.255.0 r4(config-if)#no sh r4(config-if)#exit
r4(config)#int loopback 0 r4(config-if)#ip address 4.4.4.4 255.255.255.0 r4(config-if)#exit r4(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1 r4(config)#
r4(config)#line vty 0 15 r4(config-line)#no login r4(config-line)#exit
说明:配置R4的接口地址,并写默认路由指向公司总部出口ASA防火墙。同时配置Loopback地址4.4.4.4/32,最后打开VTY线路供Telnet。
2.测试基础网络环境 (1)查看PC机的地址情况:
说明:PC机通过R3的DHCP正常获得了地址30.1.1.1,并且网关指向R3内网接口30.1.1.3。
(2)测试R3到ASA的连通性: r3#ping 12.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 148/220/380 ms r3# 说明:因为R3与ASA都有默认路由指向Internet(路由器R2),而R2与R3和ASA都是可达的,所以R3与ASA通信正常。
(3)测试R3到R2的Loopback连通性: r3#ping 2.2.2.2
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/63/100 ms r3# 说明:因为R3有默认路由指向Internet(路由器R2),所以R3与R2的Loopback通信正常。
(4)测试R3到公司总部的10.1.1.0/24和4.4.4.4/32的连通性: r3#ping 10.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.4, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r3# r3#ping 4.4.4.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r3# 说明:虽然R3有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R3与ASA的通信,所以R1无法访问公司总部的私有网段10.1.1.0/24和4.4.4.4/32。
(5)查看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
2.0.0.0/24 is subnetted, 1 subnets C 2.2.2.0 is directly connected, Loopback0 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的责任就只是保证ASA与R3能够通信即可。
(6)测试PC到ASA和R2的Loopback的连通性:
说明:因为PC的默认网关指向路由器R3,并且R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC与ASA和R2的Loopback通信正常。
(7)查看PC与R2的Loopback通信时的源地址:
说明:因为R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC是使用源地址23.1.1.3与R2的Loopback通信的,同样也应该是使用源地址23.1.1.3与ASA通信的。
(8)测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为连R3都与公司总部的10.1.1.0/24和4.4.4.4/32不能通信,所以PC更不能。
3.在公司总部ASA防火墙上配置EzVPN (1)配置IKE(ISAKMP)策略: ciscoasa(config)# crypto isakmp policy 10 ciscoasa(config-isakmp-policy)# authentication pre-share ciscoasa(config-isakmp-policy)# encryption 3des ciscoasa(config-isakmp-policy)# hash sha ciscoasa(config-isakmp-policy)# group 2 ciscoasa(config-isakmp-policy)# exit 说明:定义了ISAKMP policy 10,加密方式为3des,hash算法为sha,认证方式为Pre-Shared Keys (PSK),密钥算法(Diffie-Hellman)为group 2。
(2)定义EzVPN Client连接上来后自动分配的地址池: ciscoasa(config)# ip local pool net100 100.1.1.100-100.1.1.200 mask 255.255.255.0 说明:地址池范围为100.1.1.100-100.1.1.200。
(3)配置隧道分离: ciscoasa(config)# access-list Split_Tunnel_List extended permit ip 10.1.1.0 255.255.255.0 any ciscoasa(config)# access-list Split_Tunnel_List extended permit ip 4.4.4.4 255.255.255.255 any 说明:将10.1.1.0/24和4.4.4.4/32分离开来。
(4)配置用户组策略: ciscoasa(config)# group-policy mypp internal ciscoasa(config)# group-policy mypp attributes ciscoasa(config-group-policy)# address-pool value net100 ciscoasa(config-group-policy)# dns-server value 202.96.209.133 ciscoasa(config-group-policy)# split-tunnel-policy tunnelspecified ciscoasa(config-group-policy)# split-tunnel-network-list value Split_Tunnel_Li$ 说明:定义了地址池,以及隧道分离信息,该组名不是EzVPN Client在创建拨号时定义的名字。
(5)配置用户隧道信息: ciscoasa(config)# tunnel-group chinaccie type ipsec-ra ciscoasa(config)# tunnel-group chinaccie general-attributes ciscoasa(config-tunnel-general)# default-group-policy mypp ciscoasa(config-tunnel-general)# exit ciscoasa(config)# tunnel-group chinaccie ipsec-attributes ciscoasa(config-tunnel-ipsec)# pre-shared-key cisco123 ciscoasa(config-tunnel-ipsec)# exit 说明:定义了用户隧道名chinaccie的基本参数,认证密码为cisco123,EzVPN Client在创建拨号时,组名即为该隧道名chinaccie。
(6)关联crypto map: ciscoasa(config)# crypto ipsec transform-set ccie esp-3des esp-sha-hmac ciscoasa(config)# crypto dynamic-map mymap 1 set transform-set ccie ciscoasa(config)# crypto map ezvpn 10 ipsec-isakmp dynamic mymap ciscoasa(config)# crypto map ezvpn interface outside ciscoasa(config)# crypto isakmp enable outside 说明:将crypto map与IPsec transform关联起来,并应用于接口。
(7)创建用户名和密码: ciscoasa(config)# username chinaccie password chinaccie 说明:创建了本地用户名chinaccie以及密码chinaccie,防火墙上可以不用AAA来定义认证。
4.测试EzVPN (1)在PC上创建EzVPN连接: 创建EzVPN连接的方法和参数与上上一节EzVPN over Router中完全一致。
(2)查看PC连接EzVPN后的详细信息:
说明:PC上的EzVPN连接成功后,从EzVPN Server那里获得了地址100.1.1.100。
(3)查看PC连接EzVPN后的隧道分离信息:
说明:与配置的效果一样,去往公司总部的10.1.1.0/24和4.4.4.4/32是需要从VPN隧道走的。
(4)查看PC的路由表情况:
说明:从PC的路由表中可以看出,只有发往公司总部的10.1.1.0/24和4.4.4.4/32的流量才从VPN接口100.1.1.100发出,而其它流量都是从正常接口(30.1.1.3)发出,因为默认网关就是30.1.1.3。
(5)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为已经与公司总部路由器ASA建立EzVPN连接,所以现在与公司总部的10.1.1.0/24和4.4.4.4/32通信正常。
(6)测试PC到R2的Loopback连通性:
说明:因为配置了隧道分离(Split Tunneling),所以到EzVPN Server端的流量从VPN隧道中发出,能够正常通信,其它发到如Internet的流量则从正常接口发出,所以与R2的Loopback通信也正常。
(7)再次查看PC到公司总部的10.1.1.0/24和4.4.4.4/32以及到R2的Loopback的路径走向:
说明:从PC发向公司总部的数据包从VPN隧道直接就到达了公司总部ASA防火墙,但到其它Internet的数据包则是从正常接口发到R3,然后由R3正常路由出去的。
(8)查看ASA上的IKE SA(ISAKMP SA): ciscoasa# show crypto isakmp sa
Active SA: 1 Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey) Total IKE SA: 1
1 IKE Peer: 23.1.1.3 Type : user Role : responder Rekey : no State : AM_ACTIVE ciscoasa#
说明:IKE SA已经成功建立,ASA本地源地址为12.1.1.1,目标为23.1.1.3。
(9)查看ASA上的IPsec SA: ciscoasa# show crypto ipsec sa interface: outside Crypto map tag: mymap, seq num: 1, local addr: 12.1.1.1
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0) remote ident (addr/mask/prot/port): (100.1.1.100/255.255.255.255/0/0) current_peer: 23.1.1.3, username: chinaccie dynamic allocated peer ip: 100.1.1.100
#pkts encaps: 13, #pkts encrypt: 13, #pkts digest: 13 #pkts decaps: 13, #pkts decrypt: 13, #pkts verify: 13 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 13, #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.: 12.1.1.1/4500, remote crypto endpt.: 23.1.1.3/1048 path mtu 1500, ipsec overhead 66, media mtu 1500 current outbound spi: C29577AD
inbound esp sas: spi: 0x9E962572 (2660640114) transform: esp-3des esp-sha-hmac none in use settings ={RA, Tunnel, NAT-T-Encaps, } slot: 0, conn_id: 4096, crypto-map: mymap sa timing: remaining key lifetime (sec): 28720 IV size: 8 bytes replay detection support: Y outbound esp sas: spi: 0xC29577AD (3264575405) transform: esp-3des esp-sha-hmac none in use settings ={RA, Tunnel, NAT-T-Encaps, } slot: 0, conn_id: 4096, crypto-map: mymap sa timing: remaining key lifetime (sec): 28719 IV size: 8 bytes replay detection support: Y
ciscoasa# 说明:IPsec SA中显示了任何去往Client的流量都会被加密。
(10)查看ASA的路由表情况: ciscoasa# show route
Codes: C - connected, S - static, I - IGRP, 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, E - EGP i - IS-IS, 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
S 100.1.1.100 255.255.255.255 [1/0] via 12.1.1.2, outside S 4.4.4.4 255.255.255.255 [1/0] via 10.1.1.4, inside C 10.1.1.0 255.255.255.0 is directly connected, inside C 12.1.1.0 255.255.255.0 is directly connected, outside S* 0.0.0.0 0.0.0.0 [1/0] via 12.1.1.2, outside ciscoasa# 说明: EzVPN Server自动产生了一条指向动态分配给Client的主机地址的路由。
5.测试EzVPN Server上NAT对EzVPN的影响 (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将所有inside接口的流量都转换为outside接口地址12.1.1.1出去。
(2)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:在EzVPN Server上,NAT对EzVPN的影响和其它VPN一样,所以在EzVPN Server上配置了NAT后,需要EzVPN传递的流量就全不通了。
(3)将相应流量从NAT中移除: ciscoasa(config)# access-list nonat extended permit ip 10.1.1.0 255.255.255.0 100.1.1.0 255.255.255.0 ciscoasa(config)# nat (inside) 0 access-list nonat 说明:将源10.1.1.0/24去往EzVPN Client的流量从NAT中移除。
(4)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性
说明:因为源10.1.1.0/24去往EzVPN Client的流量已经从NAT中移除,所以PC到10.1.1.0/24的流量正常,但到4.4.4.4/32的流量依然不通。
(5)再次将相应流量从NAT中移除: ciscoasa(config)# $permit ip 4.4.4.4 255.255.255.255 100.1.1.0 255.255.255.0 说明:除了将源10.1.1.0/24去往EzVPN Client的流量从NAT中移除之外,再将源4.4.4.4/32去往EzVPN Client的流量从NAT中移除。
(6)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为源10.1.1.0/24和4.4.4.4/32去往EzVPN Client的流量都已经从NAT中移除,所以PC到10.1.1.0/24和4.4.4.4/32的流量正常。 SSL VPN(WebVPN) 概述在没有能够支持VPN功能路由器的家庭网络,以及出差在外的没有使用路由器就接入Internet的办公人员,如果在这种情况下还需要与公司总部建立VPN以保证数据加密传输,使用传统的VPN技术将难以实现,我们可以采用前面介绍的Easy VPN来实现,Easy VPN管理简单,维护方便,但是我们还需要注意的是,在使用Easy VPN之前,必须在PC上安装Client软件,在一台没有安装Client软件的PC上是不能建立Easy VPN连接的,因为Easy VPN是C/S架构的。 虽然在使用Easy VPN之前在PC上装个Client软件并不是什么难事,但是如果不巧的是,你没有带电脑,或者在客户的公司,你不能使用自己的电脑接入Internet,在这种需要使用和借用别人的电脑来使用VPN的时候,这很明显就有些小麻烦,因为你借别人的电脑用一下,但需要在别人的电脑上安装软件,并不是任何时候别人都会同意你这么做,所以如果能够让我们不用安装软件就能使用VPN连接,那将是非常期待的。 基于上述种种原因,SSL VPN(WebVPN)出现了,SSL VPN的实现就可以不需要借助软件来完成,在一台没有安装任何软件的PC上同样可以建立SSL VPN连接,这就是它的优点,想必这个优点也被许多人看中。SSL VPN的建立只要在PC上使用支持HTTPS (HTTP over SSL)的网页浏览器就可以完成,摆脱了安装软件的困扰,这就使得SSL VPN在任何环境的PC上都能够建立,因为现在几乎没有任何一台PC上是没有网页浏览器的。 下图是支持HTTPS网页浏览器的PC与公司总部建立的SSL VPN连接:
只要是支持HTTPS网页浏览器的PC,无论在哪里,只要能够连接Internet,就能与公司总部建立的SSL VPN连接。
SSL VPN是在Application Layer(应用层)上建立SSL 隧道来实现的,虽然说SSL VPN不需要借助任何Client软件,只需要靠网页浏览器就能完成,其实SSL VPN有时也是需要借助Client软件才能完成,但这并不是需要手工安装的软件,因为是通过浏览器自动检测并安装的插件,是Java applet或ActiveX的形式,就像平时上视频网站看Flash时安装flashplayer一样,是以网页插件的形式安装的。
SSL VPN共分为三种模式: Clientless Thin-Client Full-Tunnel Client
正因为分了这么多模式,所以将SSL VPN更加复杂化了,这并不是件好事,我们需要的是简单易用的,所以我们肯定会挑选其中最适合大众使用的模式,这三种模式的工作情况如下:
Clientless模式只提供访问WEB资源,在PC建立SSL VPN连接之后,只能以WEB,即网页访问的形式去访问对端的资源,在用户建立SSL VPN连接之后,将在登录界面提供URL信息或web server的链接,通过这些链接来访问资源;如果这时你并不是需要访问对端的WEB信息,比如你是要使用FTP,这是不行的,所以Clientless模式太局限了,一般不推荐使用。
Thin-Client模式是在Clientless模式的基础上扩展了一些功能,它扩展到可以使用TCP连接,如POP3,SMTP,SSH等等,Thin-Client是需要安装Java applet插件的,虽然Thin-Client模式已经扩展到了可以使用TCP连接,但这还是远远不够的,所以Thin-Client模式也不推荐。
Full-Tunnel Client模式和常规的VPN具有完全相同的功能,和EzVPN具有完全相同的访问能力,是在隧道两端提供一个通道,在此通道上可以传递任何流量,没有任何访问限制,所以我们通常配置Full-Tunnel Client模式;Full-Tunnel Client模式需要安装ActiveX插件。
因为Thin-Client模式和Full-Tunnel Client模式都需要在本地安装插件,所以在这两个模式下建立SSL VPN,需要用户具有管理员权限,要进行Full-Tunnel Client模式的SSL VPN建立,配置的设备上是需要加载SSL VPN Client模块的,通常是.pkg格式的,这称为SVC。
在用户向Server请求建立SSL VPN连接之后,是需要认证的,这些认证都是通过WEB浏览器进行的,认证的方式多种多样,如用户名加密码,电子证书,或通过AAA定义,或者相结合,默认使用的是Server本地全局认证,即使用本地用户数据库做认证。 SSL VPN除了操作方式和加密方法与Easy VPN不一样,其它东西可以认为是完全一样,SSL VPN也有和Easy VPN一样的隧道分离(Split Tunneling)的功能,除此之外,也有Reverse route injection (RRI)功能,并且Server也需要为连接上来的Client自动分配一个地址,所以在SSL VPN Server上需要配置供自动分配给Client的地址段,但SSL VPN的这个地址段和Easy VPN有细微的区别,当SSL VPN Server是配置在路由器上时,这个地址段需要和该路由器上的一个直连接口地址在同网段,如果地址段是在路由器上不存在的,那么必须创建一个同网段的Loopback接口。
注: ★SSL VPN默认使用的是Server本地全局认证,即使用本地用户数据库做认证。 ★当SSL VPN Server是配置在路由器上时,这个地址段需要和该路由器上的一个直连接口地址在同网段,如果地址段是在路由器上不存在的,那么必须创建一个同网段的Loopback接口。 ★Thin-Client模式和Full-Tunnel Client模式都需要在本地安装插件,所以在这两个模式下建立SSL VPN,需要用户具有管理员权限 Cisco的SSL VPN只支持路由器和ASA防火墙,但不支持PIX防火墙,虽然在模拟环境下可以破解PIX防火墙来支持SSL VPN,但本文不作演示,因为几乎所有的VPN配置,PIX和ASA是相同的,能够在ASA上配置SSL VPN,就能够在支持SSL VPN的PIX上配置SSL VPN,所以本文只介绍在路由器和ASA防火墙上配置SSL VPN。 SSL VPN over Router在本小节,我们在路由器上配置SSL VPN,即配置SSL VPN over Router。
配置SSL VPN over Router
说明:我们下面需要以上图的环境来演示SSL VPN的效果,其中远程的PC机需要直接使用私有地址来访问公司总部10.1.1.0/24和4.4.4.4/32,而R2则相当于Internet路由器,R2只负责让R1与R3能够通信,R2不会配置任何路由,R2不允许拥有公司总部的10.1.1.0/24和4.4.4.4/32以及PC所在的30.1.1.0/24,R1为公司总部的SSL VPN Server,PC需要先和R1的公网出口能够通信,然后通过与R1建立SSL VPN,最终通过VPN隧道来穿越没有路由的R2,实现在私网与私网之间穿越公网的通信;因为PC要先和R1的公网接口能够通信,所以R3需要对PC所在的网段30.1.1.0/24进行NAT转换,因为R3和R1的公网是通的。
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 4.4.4.4 255.255.255.255 10.1.1.4 r1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2 说明:配置R1的接口地址,并写指向R4的Loopback地址4.4.4.4的路由,同时写默认路由指向Internet(路由器R2),地址12.1.1.2。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 12.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int f0/1 r2(config-if)#ip add 23.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int loopback 0 r2(config-if)#ip add 2.2.2.2 255.255.255.0 r2(config-if)#exit r2(config)#
r2(config)#line vty 0 15 r2(config-line)#no login r2(config-line)#exit 说明:配置R2的接口地址,并配置Loopback地址2.2.2.2/32,最后打开VTY线路供Telnet;因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 30.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 23.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2
r3(config)#service dhcp r3(config)#ip dhcp pool net30 r3(dhcp-config)#network 30.1.1.0 255.255.255.0 r3(dhcp-config)#default-router 30.1.1.3 r3(dhcp-config)#dns-server 202.96.209.133 r3(dhcp-config)#exit r3(config)#ip dhcp excluded-address 30.1.1.3 r3(config)#
r3(config)#int f0/0 r3(config-if)#ip nat inside r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip nat outside r3(config-if)#exit r3(config)#
r3(config)#access-list 3 permit any r3(config)#ip nat inside source list 3 interface f0/1 overload r3(config)# 说明:配置R3的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2;并且在R3上开启DHCP,让PC动态获得IP地址;同时R3将PC所在的网段全部NAT转换成外网接口地址23.1.1.3出去。
(4)配置R4:
r4(config)#int f0/1 r4(config-if)#ip add 10.1.1.4 255.255.255.0 r4(config-if)#no sh r4(config-if)#exit
r4(config)#int loopback 0 r4(config-if)#ip address 4.4.4.4 255.255.255.0 r4(config-if)#exit r4(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1 r4(config)#
r4(config)#line vty 0 15 r4(config-line)#no login r4(config-line)#exit
说明:配置R4的接口地址,并写默认路由指向公司总部出口路由器R1。同时配置Loopback地址4.4.4.4/32,最后打开VTY线路供Telnet。
2.测试基础网络环境 (1)查看PC机的地址情况:
说明:PC机通过R3的DHCP正常获得了地址30.1.1.1,并且网关指向R3内网接口30.1.1.3。
(2)测试R3到R1的连通性: r3#ping 12.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 304/421/632 ms r3# 说明:因为R3与R1都有默认路由指向Internet(路由器R2),而R2与R3和R1都是可达的,所以R3与R1通信正常。
(3)测试R3到R2的Loopback连通性: r3#ping 2.2.2.2
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 96/260/376 ms r3# 说明:因为R3有默认路由指向Internet(路由器R2),所以R3与R2的Loopback通信正常。
(4)测试R3到公司总部的10.1.1.0/24和4.4.4.4/32的连通性: r3#ping 10.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.4, timeout is 2 seconds: UU.U. Success rate is 0 percent (0/5) r3#
r3#ping 4.4.4.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r3# 说明:虽然R3有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R3与R1的通信,所以R1无法访问公司总部的私有网段10.1.1.0/24和4.4.4.4/32。
(5)查看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
2.0.0.0/24 is subnetted, 1 subnets C 2.2.2.0 is directly connected, Loopback0 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能够通信即可。
(6)测试PC到R1以及到R2的Loopback的连通性:
说明:因为PC的默认网关指向路由器R3,并且R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC与R1和R2的Loopback通信正常。
(7)查看PC与R2的Loopback通信时的源地址:
说明:因为R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC是使用源地址23.1.1.3与R2的Loopback通信的,同样也应该是使用源地址23.1.1.3与R1通信的。
(8)测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为连R3都与公司总部的10.1.1.0/24和4.4.4.4/32不能通信,所以PC更不能。 (9)查看R3的NAT转换表: r3#show ip nat translations Pro Inside global Inside local Outside local Outside global icmp 23.1.1.3:512 30.1.1.1:512 2.2.2.2:512 2.2.2.2:512 icmp 23.1.1.3:512 30.1.1.1:512 4.4.4.4:512 4.4.4.4:512 icmp 23.1.1.3:512 30.1.1.1:512 10.1.1.4:512 10.1.1.4:512 icmp 23.1.1.3:512 30.1.1.1:512 12.1.1.1:512 12.1.1.1:512 r3# 说明:R3已经将PC发往外部的数据源地址转换成自己的外网接口地址23.1.1.3。
3.在公司总部路由器R1上配置SSL VPN
(1)将SSL VPN client模块传至路由器: r1#dir Directory of disk0:/
1 -rw- 398305 Nov 7 2010 22:40:46 +00:00 sslclient-win-1.1.0.154.pkg
3989504 bytes total (3588096 bytes free) r1# 说明:本实验已经将SSL VPN client模块(sslclient-win-1.1.0.154.pkg)上传至路由器,如果需要,可以通过以下地址进行下载: http://www.china-ccie.com/download/sslclient/sslclient.rar
(2)安装SSL VPN client模块: r1(config)#webvpn install svc disk0:sslclient-win-1.1.0.154.pkg SSLVPN Package SSL-VPN-Client : installed successfully
(3)配置自动分配给用户的地址池: r1(config)#ip local pool ccie 100.1.1.100 100.1.1.200 说明:自动分配给用户的地址范围是100.1.1.100 -100.1.1.200。
(4)为地址池网段创建loopback: r1(config)#int loopback 100 r1(config-if)#ip add 100.1.1.1 255.255.255.0 r1(config-if)#exit 说明:当地址池不是自身直连网段时,必须创建同网段的loopback接口。
(5)配置SSL VPN参数: r1(config)#webvpn gateway chinaccie % Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
r1(config-webvpn-gateway)# *Nov 7 22:44:58.159: %SSH-5-ENABLED: SSH 1.99 has been enabled *Nov 7 22:44:59.315: %PKI-4-NOAUTOSAVE: Configuration was modified. Issue "write memory" to save new certificate r1(config-webvpn-gateway)#ip address 12.1.1.1 port 443 r1(config-webvpn-gateway)#inservice r1(config-webvpn-gateway)#exit 说明:定义标识名字,开启的地址,端口等等。
(6)定义其它参数,以及组策略: r1(config)#webvpn context cisco r1(config-webvpn-context)#gateway chinaccie domain cisco r1(config-webvpn-context)#inservice *Nov 7 22:46:41.651: %SSLVPN-5-UPDOWN: sslvpn context : cisco changed state to UP r1(config-webvpn-context)#policy group mygroup r1(config-webvpn-group)#functions svc-enabled r1(config-webvpn-group)#svc address-pool ccie r1(config-webvpn-group)#exit r1(config-webvpn-context)#default-group-policy mygroup r1(config-webvpn-context)#exit 说明:定义用户组策略,地址池等等。
(7)定义用来认证的账户: r1(config)#username chinaccie password chinaccie
4.测试SSL VPN (1)在PC上建立SSL VPN连接:
在网页浏览器中输入SSL VPN Server外网地址:https://12.1.1.1,连接SSL VPN Server
出现“安全警报”对话框之后,点“确定”。
再次出现证书相关的“安全警报”对话框之后,点“是”,如下图:
出现如下登录认证界面之后,输入定义好的账户:
输入账户之后,出现如下提示框,点“确定”:
然后就是等待系统自动安装SSL VPN Client插件:
在等待中,会出现如下与证书相关的对话框,点“是”
出现如下证书信息之后,点“确定”:
再次出现证书对话框,继续点“是”:
等所有过程都结束之后,SSL VPN将建立成功,会在电脑桌面的右下角出现如下金黄色钥匙的图标:
右键点击该金黄色钥匙的图标,选择“Statistics”查看详细信息:
然后可以看到如下图的信息:
说明:从图中可以看出,从SSL VPN Server那里自动分配到的地址是100.1.1.100,并且还可以看到数据包转发情况。
查看当前隧道分离情况:
说明:这里显示的是隧道分离信息,0.0.0.0 0.0.0.0表示所有数据包都走VPN隧道。
(2)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为已经与公司总部路由器R1建立SSL VPN连接,所以现在与公司总部的10.1.1.0/24和4.4.4.4/32通信正常。
(3)查看PC到公司总部的10.1.1.0/24和4.4.4.4/32的路径走向:
说明:从PC发向公司总部的数据包直接就到达了公司总部路由器R1,说明中间的多跳已经被VPN隧道取代为一跳了。
(4)查看PC到公司总部的数据包源地址:
说明:SSL VPN Client是以从Server那里动态分配的地址为源和Server的网段进行通信的。
(5)再次测试PC到R2的Loopback连通性:
说明:在PC连通SSL VPN之后,到R2的Loopback的通信失败,R2的Loopback也相当于Internet地址,这说明正常情况下,PC连通SSL VPN之后,所有的数据包都发往SSL VPN Server,但SSL VPN Server却不会将来自于Client的流量从开启了SSL VPN的接口发出去,但其它接口可以,如内网。
(6)查看PC的路由表情况:
说明:现在PC的默认网关为SSL VPN的接口地址10.1.1.100,即所有去往外部的流量都从VPN隧道发出去,最终就发到了SSL VPN Server,所以就失去了与Internet的连接,在这样的情况下,隧道分离(Split Tunneling)就显现出了它的作用,因为在这里很明显,只有发往公司总部的10.1.1.0/24和4.4.4.4/32的流量才需要走VPN隧道,而其它所有流量都走原来的正常接口,这就需要隧道分离将两类流量分开处理。
(7)查看SSL VPN Server的路由表情况: 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
100.0.0.0/24 is subnetted, 1 subnets C 100.1.1.0 is directly connected, Loopback100 4.0.0.0/32 is subnetted, 1 subnets S 4.4.4.4 [1/0] via 10.1.1.4 10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, FastEthernet1/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# 说明:SSL VPN Server没有自动产生了一条指向动态分配给Client的主机地址的路由,说明默认没有reverse-route功能,但不表示任何型号的任何IOS都是如此。
(8)查看R1上的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# 说明:因为SSL VPN不是使用IPsec来工作的,所以不会有IPsec方面的信息。
(9)查看R1上的SSL VPN信息: r1#show webvpn session context all WebVPN context name: cisco Client_Login_Name Client_IP_Address No_of_Connections Created Last_Used chinaccie 23.1.1.3 1 00:14:30 00:02:06 r1# 说明:R1上看到用户chinaccie以源地址23.1.1.3连了上来。
5.配置隧道分离(Split Tunneling) (1)在R1上配置隧道分离: r1(config)#webvpn context cisco r1(config-webvpn-context)#policy group mygroup r1(config-webvpn-group)#svc split include 10.1.1.0 255.255.255.0 r1(config-webvpn-group)#svc split include 4.4.4.4 255.255.255.255 说明:路由器中SSL VPN的隧道分离配置方法和EzVPN不同,SSL VPN的隧道分离不是用ACL来控制的,而是直接填写网段信息,include表示需要从隧道走的流量,即10.1.1.0/24和4.4.4.4/32是需要走隧道的,这都是Client上的目标地址,而不是源地址。
(2)查看PC连接SSL VPN之后的详细信息:
说明:PC现在从SSL VPN Server那里获得了地址100.1.1.101。
(3)查看Route Details中的隧道分离情况:
说明:与配置的效果一样,去往公司总部的10.1.1.0/24和4.4.4.4/32是需要从VPN隧道走的。
(4)测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:和之前建立SSL VPN后的现象一样,与公司总部的10.1.1.0/24和4.4.4.4/32通信正常。
(5)测试PC到R2的Loopback连通性:
说明:在配置了隧道分离(Split Tunneling)之后,到SSL VPN Server端的流量从VPN隧道中发出,能够正常通信,但其它发到如Internet的流量则从正常接口发出,所以与R2的Loopback通信也正常。
(6)查看PC的路由表情况:
说明:从PC的路由表中可以看出,和之前的Client软件显示的隧道分离信息一样,只有发往公司总部的10.1.1.0/24和4.4.4.4/32的流量才从VPN接口100.1.1.101发出,而其它流量都是从正常接口(30.1.1.3)发出,因为默认网关就是30.1.1.3。
(7)再次查看PC到公司总部的10.1.1.0/24和4.4.4.4/32以及到R2的Loopback的路径走向: 说明:从PC发向公司总部的数据包从VPN隧道直接就到达了公司总部路由器R1,但到其它Internet的数据包则是从正常接口发到R3,然后由R3正常路由出去的。
(8)查看SSL VPN Server上其它一些信息: r1#show webvpn session user chinaccie context cisco WebVPN user name = chinaccie ; IP address = 23.1.1.3 ; context = cisco No of connections: 1 Created 00:05:49, Last-used 00:00:03 STC IP address 100.1.1.101 netmask 255.255.255.0 CSTP Started 00:03:56, Last-recieved 00:00:03 CSTP DPD-Request sent 0 Client Port: 1202 User Policy Parameters Group name = mygroup Group Policy Parameters idle timeout = 2100 sec session timeout = 43200 sec functions = svc-enabled
citrix disabled address pool name = "ccie" dpd client timeout = 300 sec dpd gateway timeout = 300 sec keep sslvpn client installed = disabled rekey interval = 3600 sec rekey method = lease duration = 43200 sec split include = 10.1.1.0 255.255.255.0 split include = 4.4.4.4 255.255.255.255
r1# 说明:在SSL VPN Server也能看到client的一些相关信息以及隧道分离信息。
6.测试SSL VPN Server上NAT对SSL VPN的影响 (1)查看配置NAT之前的流量情况:
说明:有没有配置NAT之前,PC到公司总部10.1.1.0/24和4.4.4.4/32的流量全部正常。
(2)在R1上配置NAT: r1(config)#int f1/1 r1(config-if)#ip nat inside
*Nov 8 10:01:39.887: %LINEPROTO-5-UPDOWN: Line protocol on Interface NVI0, changed state to up r1(config-if)#exi r1(config-if)#ip nat outside r1(config-if)#exit
r1(config)#access-list 111 permit ip any any r1(config)#ip nat inside source list 111 interface f0/0 overload 说明:在R1上配置NAT将所有内网的流量都转换为外网接口地址12.1.1.1出去。
(3)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:在SSL VPN Server上,NAT对SSL VPN的影响和其它VPN一样,所以在SSL VPN Server上配置了NAT后,需要SSL VPN传递的流量就全不通了。
(4)将相应流量从NAT中移除: r1(config)#no access-list 111
r1(config)#access-list 111 deny ip host 12.1.1.1 host 23.1.1.3 r1(config)#access-list 111 permit ip any any 说明:路由器上SSL VPN的NAT流量移除比较特别,并不是把特定的流量移除,而是放开Server与Client双方的地址。
(5)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为路由器上SSL VPN的NAT流量移除比较特别,是放开Server与Client双方的地址,而不是放开指定流量,所以没办法对指定的流量进行控制,就是流量要么全通,要么全不通。
SSL VPN over ASA在本小节,我们在ASA防火墙上配置SSL VPN,即配置SSL VPN over ASA。
配置SSL VPN over ASA
说明:我们下面需要以上图的环境来演示SSL VPN的效果,其中远程的PC机需要直接使用私有地址来访问公司总部10.1.1.0/24和4.4.4.4/32,而R2则相当于Internet路由器,R2只负责让ASA与R3能够通信,R2不会配置任何路由,R2不允许拥有公司总部的10.1.1.0/24和4.4.4.4/32以及PC所在的30.1.1.0/24,ASA为公司总部的SSL VPN Server,PC需要先和ASA的公网出口能够通信,然后通过与ASA建立SSL VPN,最终通过VPN隧道来穿越没有路由的R2,实现在私网与私网之间穿越公网的通信;因为PC要先和ASA的公网接口能够通信,所以R3需要对PC所在的网段30.1.1.0/24进行NAT转换,因为R3和ASA的公网是通的。
1.配置基础网络环境 (1)配置ASA: ciscoasa(config)# int e0/0 ciscoasa(config-if)# ip add 12.1.1.1 255.255.255.0 ciscoasa(config-if)# nameif outside INFO: Security level for "outside" set to 0 by default. ciscoasa(config-if)# no shutdown ciscoasa(config-if)# exit ciscoasa(config)# int e0/1 ciscoasa(config-if)# ip add 10.1.1.1 255.255.255.0 ciscoasa(config-if)# nameif inside INFO: Security level for "inside" set to 100 by default. ciscoasa(config-if)# no shutdown ciscoasa(config-if)# exit ciscoasa(config)# route inside 4.4.4.4 255.255.255.255 10.1.1.4 ciscoasa(config)# route outside 0 0 12.1.1.2 ciscoasa(config)# 说明:配置ASA的接口地址,并写指向R4的Loopback地址4.4.4.4的路由,同时写默认路由指向Internet(路由器R2),地址12.1.1.2。
(2)配置R2: r2(config)#int f0/0 r2(config-if)#ip add 12.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int f0/1 r2(config-if)#ip add 23.1.1.2 255.255.255.0 r2(config-if)#no sh r2(config-if)#exit
r2(config)#int loopback 0 r2(config-if)#ip add 2.2.2.2 255.255.255.0 r2(config-if)#exit r2(config)#
r2(config)#line vty 0 15 r2(config-line)#no login r2(config-line)#exit 说明:配置R2的接口地址,并配置Loopback地址2.2.2.2/32,最后打开VTY线路供Telnet;因为R2模拟Internet,R2只需要有公网路由12.1.1.0和23.1.1.0即可,所以R2不需要写任何路由,也不允许写任何路由。
(3)配置R3: r3(config)#int f0/0 r3(config-if)#ip add 30.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip add 23.1.1.3 255.255.255.0 r3(config-if)#no sh r3(config-if)#exit
r3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2
r3(config)#service dhcp r3(config)#ip dhcp pool net30 r3(dhcp-config)#network 30.1.1.0 255.255.255.0 r3(dhcp-config)#default-router 30.1.1.3 r3(dhcp-config)#dns-server 202.96.209.133 r3(dhcp-config)#exit r3(config)#ip dhcp excluded-address 30.1.1.3 r3(config)#
r3(config)#int f0/0 r3(config-if)#ip nat inside r3(config-if)#exit
r3(config)#int f0/1 r3(config-if)#ip nat outside r3(config-if)#exit r3(config)#
r3(config)#access-list 3 permit any r3(config)#ip nat inside source list 3 interface f0/1 overload r3(config)# 说明:配置R3的接口地址,并写默认路由指向Internet(路由器R2),地址23.1.1.2;并且在R3上开启DHCP,让PC动态获得IP地址;同时R3将PC所在的网段全部NAT转换成外网接口地址23.1.1.3出去。
(4)配置R4:
r4(config)#int f0/1 r4(config-if)#ip add 10.1.1.4 255.255.255.0 r4(config-if)#no sh r4(config-if)#exit
r4(config)#int loopback 0 r4(config-if)#ip address 4.4.4.4 255.255.255.0 r4(config-if)#exit r4(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1 r4(config)#
r4(config)#line vty 0 15 r4(config-line)#no login r4(config-line)#exit
说明:配置R4的接口地址,并写默认路由指向公司总部出口ASA防火墙。同时配置Loopback地址4.4.4.4/32,最后打开VTY线路供Telnet。
2.测试基础网络环境 (1)查看PC机的地址情况:
说明:PC机通过R3的DHCP正常获得了地址30.1.1.1,并且网关指向R3内网接口30.1.1.3。
(2)测试R3到ASA的连通性: r3#ping 12.1.1.1
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 268/323/444 ms r3# 说明:因为R3与ASA都有默认路由指向Internet(路由器R2),而R2与R3和ASA都是可达的,所以R3与ASA通信正常。
(3)测试R3到R2的Loopback连通性: r3#ping 2.2.2.2
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 96/260/376 ms r3# 说明:因为R3有默认路由指向Internet(路由器R2),所以R3与R2的Loopback通信正常。
(4)测试R3到公司总部的10.1.1.0/24和4.4.4.4/32的连通性: r3#ping 10.1.1.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.4, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) r3# r3#ping 4.4.4.4
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds: .U..U Success rate is 0 percent (0/5) r3# 说明:虽然R3有默认路由指向Internet路由器R2,但R2只有公网路由12.1.1.0和23.1.1.0,只能保证R3与ASA的通信,所以R3无法访问公司总部的私有网段10.1.1.0/24和4.4.4.4/32。
(5)查看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
2.0.0.0/24 is subnetted, 1 subnets C 2.2.2.0 is directly connected, Loopback0 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的责任就只是保证ASA与R3能够通信即可。
(6)测试PC到ASA以及到R2的Loopback的连通性:
说明:因为PC的默认网关指向路由器R3,并且R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC与ASA和R2的Loopback通信正常。
(7)查看PC与R2的Loopback通信时的源地址:
说明:因为R3已经配置NAT将PC所在的网段全部转换成外网接口地址23.1.1.3出去,所以PC是使用源地址23.1.1.3与R2的Loopback通信的,同样也应该是使用源地址23.1.1.3与ASA通信的。
(8)测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为连R3都与公司总部的10.1.1.0/24和4.4.4.4/32不能通信,所以PC更不能。
3.在公司总部ASA防火墙上配置SSL VPN (1)将SSL VPN client模块传至ASA防火墙: ciscoasa# dir
Directory of disk0:/
4 drwx 2048 03:20:10 Nov 26 2008 .private 7 drwx 2048 14:33:48 Dec 03 2007 boot 15 -rwx 7562988 03:26:02 Nov 26 2008 asdm-613.bin 16 -rwx 2643,110 03:27:14 Nov 26 2008 anyconnect-win-2.3.0185-k9.pkg
15679488 bytes total (7690240 bytes free) ciscoasa#
说明:本实验已经将SSL VPN client模块(anyconnect-win-2.3.0185-k9.pkg)上传至ASA,如果需要,可以通过以下地址进行下载: http://www.china-ccie.com/download/sslclient/anyconnect-win-2.3.0185-k9.rar
(2)开启SSL VPN并安装client模块: ciscoasa(config)# webvpn ciscoasa(config-webvpn)# enable outside INFO: WebVPN and DTLS are enabled on 'outside'. ciscoasa(config-webvpn)# svc image disk0:/anyconnect-win-2.3.0185-k9.pkg ciscoasa(config-webvpn)# svc enable ciscoasa(config-webvpn)# tunnel-group-list enable ciscoasa(config-webvpn)# exit
(3)配置自动分配给用户的地址池: ciscoasa(config)# ip local pool ccie 100.1.1.100-100.1.1.200 mask 255.255.255.0
(4)定义隧道分离网段: ciscoasa(config)# access-list split-ssl extended permit ip 10.1.1.0 255.255.255.0 any ciscoasa(config)# access-list split-ssl extended permit ip 4.4.4.4 255.255.255.255 any
(5)定义组策略属性: ciscoasa(config)# group-policy SSLCLientPolicy internal ciscoasa(config)# group-policy SSLCLientPolicy attributes ciscoasa(config-group-policy)# address-pools value ccie ciscoasa(config-group-policy)# dns-server value 202.96.209.133 ciscoasa(config-group-policy)# default-domain value cisco.com ciscoasa(config-group-policy)# vpn-tunnel-protocol svc ciscoasa(config-group-policy)# split-tunnel-policy tunnelspecified ciscoasa(config-group-policy)# split-tunnel-network-list value split-ssl ciscoasa(config-group-policy)# exit
(6)定义隧道策略属性: ciscoasa(config)# tunnel-group mygroup type remote-access ciscoasa(config)# tunnel-group mygroup general-attributes ciscoasa(config-tunnel-general)# default-group-policy SSLCLientPolicy ciscoasa(config-tunnel-general)# tunnel-group mygroup webvpn-attributes ciscoasa(config-tunnel-webvpn)# group-alias mygroup enable ciscoasa(config-tunnel-webvpn)# exit
(7)定义用来认证的账户: ciscoasa(config)# username chinaccie password chinaccie
4.测试SSL VPN (1)在PC上建立SSL VPN连接:
在网页浏览器中输入SSL VPN Server外网地址:https://12.1.1.1,连接SSL VPN Server
说明:出现证书相关的“安全警报”对话框之后,点“是”.
出现如下登录认证界面之后,输入定义好的账户:
输入账户之后,出现如下加载Client插件的进程:
在等待中,会出现如下与证书相关的对话框,点“是”:
等所有过程都结束之后,SSL VPN将建立成功,如下图界面所显示:14
SSL VPN建立成功后,还会在电脑桌面的右下角出现如下绿色小锁的图标:
右键点击该绿色小锁的图标,选择“Open AnyConnect”查看详细信息:
然后可以看到如下图的信息:
说明:从图中可以看出,从SSL VPN Server那里自动分配到的地址是100.1.1.100,并且还可以看到数据包转发情况。
点击“Details”查看更详细的信息:
查看当前隧道分离情况:
说明:与配置的效果一样,去往公司总部的10.1.1.0/24和4.4.4.4/32是需要从VPN隧道走的。
(2)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为已经与公司总部ASA防火墙建立SSL VPN连接,所以现在与公司总部的10.1.1.0/24和4.4.4.4/32通信正常。
(3)查看PC到公司总部的数据包源地址:
说明:SSL VPN Client是以从Server那里动态分配的地址为源和Server的网段进行通信的。
(4)再次测试PC到R2的Loopback连通性:
说明:因为已经配置了隧道分离,所以PC到Internet路由器R2(2.2.2.2)是通的。
(5)查看PC到公司总部的10.1.1.0/24和4.4.4.4/32以及Internet地址2.2.2.2/32的路径走向:
说明:从PC发向公司总部的数据包直接就到达了公司总部ASA防火墙,说明中间的多跳已经被VPN隧道取代为一跳了,而到Internet地址2.2.2.2/32的数据包还是从正常接口出去的。
(6)查看PC的路由表情况:
说明:从PC的路由表中可以看出,因为配置了隧道分离,所以只有发往公司总部的10.1.1.0/24和4.4.4.4/32的流量才从VPN接口100.1.1.101发出,而其它流量都是从正常接口(30.1.1.3)发出,因为默认网关就是30.1.1.3。
(7)查看SSL VPN Server的路由表情况: ciscoasa# sh route
Codes: C - connected, S - static, I - IGRP, 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, E - EGP i - IS-IS, 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
S 100.1.1.100 255.255.255.255 [1/0] via 12.1.1.2, outside S 4.4.4.4 255.255.255.255 [1/0] via 10.1.1.4, inside C 10.1.1.0 255.255.255.0 is directly connected, inside C 12.1.1.0 255.255.255.0 is directly connected, outside S* 0.0.0.0 0.0.0.0 [1/0] via 12.1.1.2, outside ciscoasa# 说明:SSL VPN Server自动产生了一条指向动态分配给Client的主机地址的路由,说明默认没有reverse-route功能。ASA上也看不出再多的其它信息,所以不再继续查看。
5.测试SSL VPN Server上NAT对SSL 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将所有inside的流量都转换为outside接口地址12.1.1.1出去。
(2)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:在SSL VPN Server上,NAT对SSL VPN的影响和其它VPN一样,所以在SSL VPN Server上配置了NAT后,需要SSL VPN传递的流量就全不通了。
(3)将相应流量从NAT中移除 ciscoasa(config)# access-list nonat extended permit ip 10.1.1.0 255.255.255.0 any ciscoasa(config)# nat (inside) 0 access-list nonat 说明:将源10.1.1.0/24去往SSL VPN Client的流量从NAT中移除。
(4)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为源10.1.1.0/24去往SSL VPN Client的流量已经从NAT中移除,所以PC到10.1.1.0/24的流量正常,但到4.4.4.4/32的流量依然不通。
(5)再次将相应流量从NAT中移除: ciscoasa(config)# access-list nonat extended permit ip 4.4.4.4 255.255.255.255 any 说明:除了将源10.1.1.0/24去往SSL VPN Client的流量从NAT中移除之外,再将源4.4.4.4/32去往SSL VPN Client的流量从NAT中移除。
(6)再次测试PC到公司总部的10.1.1.0/24和4.4.4.4/32的连通性:
说明:因为源10.1.1.0/24和4.4.4.4/32去往SSL VPN Client的流量都已经从NAT中移除,所以PC到10.1.1.0/24和4.4.4.4/32的流量正常。
概述和Easy VPN以及SSL VPN一样,PPTP VPN用在没有能够支持VPN功能路由器的家庭网络、出差在外的没有使用路由器就接入Internet的移动办公人员。PPTP VPN的部署架构和 Easy VPN以及SSL VPN相同,都是使用远程拥有可路由公网IP地址的PC穿越Internet呼叫总部的VPN Server,从而建立VPN隧道以提供Client与总部之前的数据加密传输。 PPTP VPN和Easy VPN与SSL VPN也有着不同之处,使用PPTP VPN的PC上不需要像EasyVPN那样安装任何拨号软件,也不需要像SSL VPN那样安装任何插件,在运行Windows系统的PC上直接创建VPN连接即可,非常方便。 通过PPTP VPN Server认证的Client同样会被自动分配一个IP地址,该地址就是VPN隧道的地址,默认情况下,PC端的所有流量都从VPN隧道接口发出,但这样一来,就会造成PC端所有的流量都被发到VPN Server而不能上Internet,通常我们是通过隧道分离(Split Tunneling)将Client需要走VPN隧道加密的流量和不需要走VPN的普通流量区分开来,但遗憾的是PPTP VPN不支持在VPN Server上配置隧道分离,因为PPTP VPN Server无法向Client推送隧道分离信息,所以将Client需要走VPN隧道加密的流量和不需要走VPN的普通流量区分开的工作需要在VPN连接的PC上手动完成,这些设置将在后续实验中详细介绍。 PPTP VPN的数据包是PPP格式封装的,并且实现隧道功能的协议是二层协议Point to Point Tunneling Protocol (PPTP),所以PPTP VPN的隧道是在二层实现的。使用VPN,安全是一个必不可少的环节,PPTP VPN同样需要加密协议,它使用的是Microsoft Point-to-Point Encryption (MPPE) 协议,MPPE是Microsoft的加密技术,使用的是RC4算法,有40 Bit或128 Bit两种加密长度可选,双方加解密长度必须是一样的。 PPTP使用TCP 端口号1723,源端口是随机的,并且是扩展了GRE来封装数据的。
MPPE两种模式: Stateful (工作性能好,但不稳定,数据容易丢包) Stateless (工作性能不算好,但很稳定,数据不丢包)
在双方没有指定工作模式的情况下, stateless模式被优先选用,如果其中一方指定Stateful,而另一方不指定,则双方工作在Stateful模式。 从上面可以看出,隧道协议PPTP和加密协议MPPE结合工作从而形成PPTP VPN,因为PPTP是个隧道协议,隧道协议可以单独使用而不需要加密协议,当PPTP和MPPE结合使用时,则最多支持500 条隧道会话,如果PPTP单独使用时,可最多支持2000条隧道会话。 当PPTP结合MPPE实现PPTP VPN时,呼叫的Client必须是Windows系统,并且在Windows中必须使用MS-CHAP认证。 在PPTP VPN的认证中,如果要使用远程服务器认证,只支持RADIUS而不支持TACACS。 在配置PPTP时,必须创建Virtual Template接口,当用户认证成功之后,会自动为该用户创建virtual-access 接口。 配置MPPE时,可以指定40 bit或128 bit,也可以配置为auto自动协商加密位数,但是否加密也需要看配置,模式Passive表示不加密,如果对方需要加密,本端则起用加密,而Required则是必须加密,否则拒绝连接。
注: ★PIX防火墙支持PPTP VPN,但OS版本必须在version 5.1到6.X范围内,任何version 7.X之后都是不支持的。 ★ASA防火墙是不支持PPTP VPN的。 ★在路由器中默认为本地用户数据库认证,而PIX中必须指定认证方式。 ★PPTP是VPDN的一种。 |
China-CCIE QQ交流群:106155045
|