这节课主要是路由器上IPSEC VPN的配置,涉及到之前的GRE Tunnel的建立,然后再用Wireshark看一下路由器之间的ISAKMP,IPSEC等加密设置等的配置交换。

首先,放上拓扑图:

IP地址按如下配置:
R1:
f0/0 10.3.1.1/24
f0/1 192.168.12.1/30

PC1: 10.3.1.101/24

R2:
f0/0 20.3.2.1/24
f0/1 192.168.12.2/30
s0/0 192.168.23.1/30

PC2: 20.3.2.101/24

R3:
f0/0 30.3.3.1/24
f0/1 192.168.34.1/30
s0/0 192.168.23.2/30

PC3: 30.3.3.101/24

R4:
f0/0 40.3.4.1/24
f0/1 192.168.34.2/30

在机房做的时候记得在电脑的terminal敲一下这个命令:nmcli networking off,主要目的是把DHCP给停掉,然后要用哪个端口再给up就行。

这节课主要步骤如下:
1、配IP,RIP让R1和R2通,R3和R4通,并在其之间建立IPSEC VPN,使LAN1-LAN2和LAN3-LAN4的数据走VPN;
2、在R2和R3之间建立GRE Tunnel,RIP走Tunnel,并建立IPSEC VPN,使LAN2到LAN3和LAN4的数据走VPN,LAN3到LAN1和LAN2的数据走VPN;
3、在R1和R4之间建立IPSEC VPN,让LAN1和LAN4数据走VPN。
简单来说就是所有LAN的数据最后都是VPN。

首先从中间一切二,做两部分的RIP和IPSEC VPN。
直接进入IPSEC配置了,RIP太无聊。
IKE默认是启用的,但是在每次修改了ISAKMP的配置之后都需要禁用再启用。
禁用命令:Router(config)# no crypto isakmp enable
启用命令:Router(config)# crypto isakmp enable

首先,我们配置ISAKMP的安全策略:
Step1: 新建安全策略,最后的数字是一个区分,当然一个路由器上可以有多个策略,我们就用这一个给所有的IPSEC用了。
Router(config)# crypto isakmp policy 1

Step2: 设置加密的算法。
Router(config-isakmp)# encryption des

Step3: 设置hash算法。
Router(config-isakmp)# hash md5

Step4: 设置认证的方式,这里使用预先共享密钥。
Router(config-isakmp)# authentication pre-share

Step5: 设定SA的有效时长,这里设置一天86400秒。
Router(config-isakmp)# lifetime 86400

第二步,我们配置预共享密钥
我们使用KeyEther作为密钥。
Router(config)# crypto iskamp key 6 KeyEther(密钥) address <对方公网IP>

第三步,我们配置IPSEC的相关参数(transform-set)
这里我们选择ESP和MD5。名称随便叫,为了方便,这里使用toallR,所有IPSEC我们都用这个参数。
Router(config)# crypto ipsec transform-set toallR esp-des esp-md5-hmac

第四步,我们配置crypto map
首先新建一个map。名称这里叫vpnether
Router(config)# crypto map vpnether(名称) 1(一个编号,一个map可以用好多次) ipsec-isakmp

使用ACL选择我们要加密的数据。
Router(config-crypto-map)# match address <ACL-id>

配置对方公网IP。
Router(config-crypto-map)# set peer <对方公网IP>

将IPSEC参数应用。
Router(config-crypto-map)# set transform-set toallR

设置IPSEC Tunnel的时效。
Router(config-crypto-map)# set security-association lifetime seconds 86400

最后不要忘记配置ACL,这里可以这样配:
R1(config)# access-list 101 permit ip 10.3.1.0 0.0.0.255 20.3.2.0 0.0.0.255
R2(config)# access-list 101 permit ip 20.3.2.0 0.0.0.255 10.3.1.0 0.0.0.255
R3(config)# access-list 101 permit ip 30.3.3.0 0.0.0.255 40.3.4.0 0.0.0.255
R4(config)# access-list 101 permit ip 40.3.4.0 0.0.0.255 30.3.3.0 0.0.0.255
这样所有LAN1-LAN2和LAN3-LAN4的ip数据都将加密。

最后我们在每个路由器的f0/1端口上应用crypto map
Router(config-if)# crypto map vpnether

配完以后LAN之间ping一下,然后Wireshark看一下数据有没有加密,用isakmp看一下路由器间的会话过程。
用以下命令可验证IPSEC配置:
Router# sh crypto isakmp sa
Router# sh crypto ipsec sa
Router# sh crypto engine connection active

接下来我们用Wireshark观察一波ISAKMP会话的过程。

那首先,很明显,这里用的是Main Mode,第一波3次会话,6条信息。会话使用UDP及500端口。(具体内容可见NAS-VLAN/VPN文档的20页,第39页讲义)

第一次会话,交换SA(Security Association)

第二次会话,交换KEY,NONCE

第三次会话,交换ID,认证,本次会话加密

第二波会话Quick Mode,能看到的只有HASH,其他都加密了。(文档21页,讲义41页)

之前我们ping的数据都是使用ESP加密的


第二部分,在R2和R3之间建立GRE Tunnel及IPSEC VPN。

首先,配一下R2和R3的s0/0。
IP配完以后配置GRE Tunnel:(Tunnel网段我们选择70.3.23.0/30)
R2(config)# int tunnel 1
R2(config-if)# ip add 70.3.23.1 255.255.255.252
R2(config-if)# tunnel source s0/0
R2(config-if)# tunnel destination 192.168.23.2
R2(config-if)# end

R3(config)# int tunnel 1
R3(config-if)# ip add 70.3.23.2 255.255.255.252
R3(config-if)# tunnel source s0/0
R3(config-if)# tunnel destination 192.168.23.1
R3(config-if)# end
因为要求RIP走Tunnel,所以我们在RIP里声明Tunnel的网段。

Wireshark验证一下,RIP确实是走Tunnel。

然后开始IPSEC配置,这次预共享密钥我们使用KeySerial,crypto map名称叫做VpnSerial。
R2(config)# crypto isakmp key 6 KeySerial address 192.168.23.2
R3(config)# crypto isakmp key 6 KeySerial address 192.168.23.1

R2(config)# crypto map VpnSerial 1 ipsec-isakmp
R2(config-crypto-map)# match add 102
R2(config-crypto-map)# set peer 192.168.23.2
R2(config-crypto-map)# set transform-set toallR
R2(config-crypto-map)# set security-association lifetime seconds 86400

R3(config)# crypto map VpnSerial 1 ipsec-isakmp
R3(config-crypto-map)# match add 102
R3(config-crypto-map)# set peer 192.168.23.1
R3(config-crypto-map)# set transform-set toallR
R3(config-crypto-map)# set security-association lifetime seconds 86400

R2(config)# access-list 102 permit gre any any

R3(config)# access-list 102 permit gre any any
加密所有经过Tunnel的通信,包括LAN间的ICMP,也包括RIP。

最后在s0/0端口上应用crypto map。


 

最后R1和R4建立IPSEC VPN。(据说是考试要考的内容)

R1(config)# crypto isakmp key 6 KeyEther address 192.168.34.2
R4(config)# crypto isakmp key 6 KeyEther address 192.168.12.1

R1(config)# crypto map vpnether 2 ipsec-isakmp
R1(config-crypto-map)# match add 102
R1(config-crypto-map)# set peer 192.168.34.2
R1(config-crypto-map)# set transform-set toallR
R1(config-crypto-map)# set security-association lifetime seconds 86400

R4(config)# crypto map vpnether 2 ipsec-isakmp
R4(config-crypto-map)# match add 102
R4(config-crypto-map)# set peer 192.168.12.1
R4(config-crypto-map)# set transform-set toallR
R4(config-crypto-map)# set security-association lifetime seconds 86400

R1(config)# access-list 102 permit ip 10.3.1.0 0.0.0.255 40.3.4.0 0.0.0.255
R4(config)# access-list 102 permit ip 40.3.4.0 0.0.0.255 10.3.1.0 0.0.0.255

OK,大功告成,所有LAN数据都加密了。

配置文件:R1_i1_startup-config R2_i2_startup-config R3_i3_startup-config R4_i4_startup-config

老套路,TXT文件,要加进GNS3需要把扩展名改成.cfg。