博文目录
一、IPSec 虚拟专用网故障排查
二、配置防火墙和路由器实现IPSec 虚拟专用网
三、总结

关于IPSec 虚拟专用网工作原理及概念,前面写过一篇博文:Cisco路由器IPSec 虚拟专用网原理与详细配置,博客里都有详细介绍,前面是在公司网关使用的是Cisco路由器的情况下来搭建虚拟专用网的,今天来配置一下在ASA防火墙上实现IPSec 虚拟专用网。

由于“Virtual Private Network”(请看首字母,就知道是什么了)是敏\感词,所以在博文中使用它的中文名字“虚拟专用网”来代替。

一、IPSec 虚拟专用网故障排查

IPSec 虚拟专用网在工作中应用很广泛,除了掌握如何组建IPSec对等体实现虚拟专用网通信,还应具备一定的故障排查能力。

1、"show crypto isakmp sa"命令

上面超链接的博文讲过,通过“show crypto isakmp sa”命令可以了解管理连接所处的状态(在此只介绍主模式)。

  • MM_NO-STATE:ISAKMP SA建立的初始状态,管理连接建立失败也会处于该状态。

  • MM_SA_SETUP:对等体之间ISAKMP策略协商成功后处于该状态。

  • MM_KEY_EXCH:对等体通过DH算法成功建立共享密钥,此时还没有进行设备验证。

  • MM_KEY_AUTH:对等体成功进行设备验证,之后会过渡到QM_IDLE状态。

  • QM_IDLE:管理连接成功建立,即将过渡到阶段2的数据连接建立过程。

2、"debug crypto isakmp"命令

如果希望更加详细地了解整个过程,可以使用“debug crypto isakmp”命令,该命令是工作中最常用诊断和排查管理连接出现问题的命令。

将路由器的加密算法有DES改为3DES,这时对等体间阶段1的加密算法显然不匹配,通过“debug crypto isakmp”命令可以很清楚地看到这点。如下图所示:
Cisco的ASA防火墙和路由器上实现IPSec虚拟专用网

路由器依然会逐条对比策略,之后发现,“Encryption algorthm offered does not match policy!”(加密算法不匹配),所以“atts are not acceptable”(策略不被接受)。然后路由器会与本地的默认策略进行对比,如果依然没有匹配的策略,就会得出结论“no offers accepted!”(没有策略匹配),最后路由器会回到“MM_NO_STATE”状态。

二、配置防火墙和路由器实现IPSec 虚拟专用网

1、网络环境如下:

Cisco的ASA防火墙和路由器上实现IPSec虚拟专用网

2、环境分析:

1)、总公司内网使用192.168.10.0/24网段地址,分公司使用192.168.20.0/24网段地址。ISP路由器为公网上的路由器。R1及ASA-1为总公司及分公司的网关服务器,所以一定会存在默认路由指向公网的路由器。
2)、总公司的内网及分公司的内网之间要建立虚拟专用网,但如果不配置别的东西,是会影响内网访问Internet的,一般都是既可以建立虚拟专用网,也可以访问Internet,所以这个问题也要解决。

3、需求如下:

1、要求实现总公司192.168.10.0/24和分公司的192.168.20.0/24网段通过虚拟专用网实现互通,并且不要影响这两个网段访问公网,也就是ISP路由器(访问公网路由器,通过端口复用的PAT技术实现,不要在ISP路由器上配置任何路由)。

4、开始配置:

配置基本网络参数

1)ASA配置如下:
ASA(config)# int eth0/0     #进入接口
ASA(config-if)# nameif outside   #接口配置为outside
ASA(config-if)# ip add 192.168.100.1 255.255.255.0   #接口配置IP地址
ASA(config-if)# no shu   #启用接口
ASA(config-if)# exit
ASA(config)# int eth0/1     #进入接口
ASA(config-if)# nameif inside   #接口配置为inside
ASA(config-if)# ip add 192.168.10.254 255.255.255.0  #接口配置IP地址
ASA(config-if)# no shu   #启用接口
ASA(config-if)# exit
ASA(config)# route outside 0 0 192.168.100.254   #配置去往公网的IP地址
ASA(config)# access-list out_to_in permit ip any any   #创建ACL允许所有流量通过outside接口进入inside
ASA(config)# access-group out_to_in in interface outside #ACL应用到outside接口

2)ISP配置如下:    
ISP(config)#int f0/0          #(相关注释请参考上面)
ISP(config-if)#ip add 192.168.100.254 255.255.255.0
ISP(config-if)#no shu
ISP(config-if)#no shutdown 
ISP(config-if)#exit
ISP(config)#int f1/0
ISP(config-if)#ip add 192.168.200.254 255.255.255.0  
ISP(config-if)#no shutdown 
ISP(config-if)#exit 
ISP(config)#int loopback 0   #创建loop back 0接口(模拟Internet网)
ISP(config-if)#ip add 100.100.100.100 255.255.255.255   #配置IP地址
ISP(config-if)#no shutdown   #启用接口
ISP(config-if)#exit

3)R1配置如下:
R1(config)#int f1/0
R1(config-if)#ip add 192.168.200.1 255.255.255.0
R1(config-if)#no shutdown 
R1(config-if)#exit
R1(config)#int f0/0
R1(config-if)#ip add 192.168.20.254 255.255.255.0
R1(config-if)#no shutdown 
R1(config-if)#exit
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.200.254   #配置去往公网的路由

4)PC1配置如下:
PC1(config)#no ip routing  #关闭路由功能
PC1(config)#int f0/0
PC1(config-if)#ip add 192.168.10.1 255.255.255.0
PC1(config-if)#no shutdown 
PC1(config-if)#exit
PC1(config)#ip default-gateway 192.168.10.254  #配置网关
PC1(config)#exit

5)PC2配置如下:
PC2(config)#no ip routing
PC2(config)#int f0/0
PC2(config-if)#ip add 192.168.20.1 255.255.255.0
PC2(config-if)#no shutdown 
PC2(config-if)#exit
PC2(config)#ip default-gateway 192.168.20.254
PC2(config)#exit

配置IPSec 虚拟专用网

R1配置如下:

R1(config)#crypto isakmp policy 1 #策略序列号为“1”,范围是1~10000,数值越小,优先级越高
R1(config-isakmp)#encryption aes    #配置加密算法
R1(config-isakmp)#hash sha    #hash命令指定验证过程中采用的散列算法
R1(config-isakmp)#authentication pre-share    #配置共享密钥的方式为“预先共享密钥”
R1(config-isakmp)#lifetime 86400   #配置保持时间,默认保持时间为24小时
R1(config-isakmp)#group 2     #配置加密共享密钥方式使用dh算法
R1(config-isakmp)#exit
R1(config)# access-list 100 permit ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255#创建ACL抓取需要走虚拟专用网的流量     
R1(config)#crypto ipsec transform-set sh-set esp-aes esp-sha-hmac #配置传输集指定加密和验证算法
R1(cfg-crypto-trans)#exit
R1(config)#crypto isakmp key 0 pwd@123 address 192.168.100.1  #创建共享密钥和对等体IP地址建立IPSec 虚拟专用网连接
R1(config)#crypto map sh-虚拟专用网简写 1 ipsec-isakmp   #创建crypto map调用,名字为bj-虚拟专用网简写
R1(config-crypto-map)#match address 100  #调用ACL抓取本地走虚拟专用网的流量
R1(config-crypto-map)#set peer 192.168.100.1 #调用对等体的IP地址
R1(config-crypto-map)#set transform-set sh-set  #调用本地创建的传输集
R1(config-crypto-map)#exit
R1(config)#interface fastEthernet 1/0   #进入到外网接口,也就是0/0接口
R1(config-if)#crypto map sh-虚拟专用网简写   #应用创建的map

ASA防火墙配置如下:

ASA(config)# crypto isakmp policy 1 #策略序列号为“1”,范围是1~10000,数值越小,优先级越高
ASA(config-isakmp-policy)# encryption aes   #配置加密算法
ASA(config-isakmp-policy)# hash sha    #hash命令指定验证过程中采用的散列算法
ASA(config-isakmp-policy)# authentication pre-share   #配置共享密钥的方式为“预先共享密钥”
ASA(config-isakmp-policy)# lifetime 86400   #配置保持时间,默认保持时间为24小时
ASA(config-isakmp-policy)# group 2    #配置加密共享密钥方式使用dh算法
ASA(config-isakmp-policy)# exit
ASA(config)# access-list 100 permit ip 192.168.10.0 255.255.255.0 192.168.20.0 255.255.255.0 #创建ACL抓取需要走虚拟专用网的流量    (防火墙掩码是正掩码,路由器是反掩码)
ASA(config)# crypto ipsec transform-set bj-set esp-aes esp-sha-hmac #配置传输集指定加密和验证算法
ASA(config)# crypto isakmp key pwd@123 address 192.168.200.1 #创建共享密钥和对等体IP地址建立IPSec 虚拟专用网连接
ASA(config)# crypto map bj-虚拟专用网简写 1 match address 100  #调用ACL识别要走虚拟专用网的流量
ASA(config)# crypto map bj-虚拟专用网简写 1 set peer 192.168.200.1 #调用对等体IP地址
ASA(config)# crypto map bj-虚拟专用网简写 1 set transform-set bj-set   #调用本地创建的传输集
ASA(config)# crypto isakmp enable outside    #开启IKE协商
ASA(config)# crypto map bj-虚拟专用网简写 interface outside  #应用crypto map到外网接口

5、验证IPSec 虚拟专用网

查看IPSec 虚拟专用网管理连接是否建立
Cisco的ASA防火墙和路由器上实现IPSec虚拟专用网

Cisco的ASA防火墙和路由器上实现IPSec虚拟专用网
IPSec虚拟专用网也就配置完成了,现在PC1和PC2客户端可以互相通信了,开始配置NAT实现两个PC机可以访问Internet网(也就是ISP路由器的loop back0接口)。

6、配置NAT实现客户端访问Internet网

目前两个PC机是ping不通ISP路由器的loop back 0接口的。如下图:
Cisco的ASA防火墙和路由器上实现IPSec虚拟专用网

ASA防火墙配置如下:

ASA(config)# nat (inside) 1 192.168.10.0 255.255.255.0 #将内部网段转换为外部接口地址
ASA(config)# global (outside) 1 interface  
ASA(config)# fixup protocol icmp  #开启icmp协议,防火墙默认是关闭的 
ASA(config)# nat-control   #开启nat控制
ASA(config)# access-list nonat permit ip 192.168.10.0 255.255.255.0 192.168.20.0 255.255.255.0   #创建ACL抓取流量
ASA(config)# nat (inside) 0 access-list nonat 

R1配置如下:

R1(config)#access-list 110 deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255     #创建ACL抓取拒绝虚拟专用网的流量 
R1(config)#access-list 110 permit ip any any   #允许所有流量
R1(config)#ip nat inside source list 110 int f1/0 overload   #采用端口复用的PAT方式,解决内网访问互联网的问题
R1(config)#int f1/0  #进入接口
R1(config-if)#ip nat outside #启用nat功能,接口为outside
R1(config-if)#int f0/0  #进入接口
R1(config-if)#ip nat inside   #启用nat功能,接口为inside
R1(config-if)#exit

至此实验需求已经全部满足,既可以访问Internet网,也不影响PCC1和PC2网段通过虚拟专用网互通。

7、验证NAT配置

Cisco的ASA防火墙和路由器上实现IPSec虚拟专用网
Cisco的ASA防火墙和路由器上实现IPSec虚拟专用网
通过上图可以看出,既可以访问Internet网,PC1到PC2网段又可以通过虚拟专用网互通。

三、总结

1、在数据连接建立过程中,ASA防火墙只支持ESP协议,因此,对端是路由器,也得使用ESP协议实现数据验证功能,路由器与ASA才可以成功地建立数据连接。

2、IKE协商在路由器上是默认开启的,但是在ASA上模式是关闭的,需要使用命令“ crypto isakmp enable outside”开启。

3、防火墙不支持show crypto isakmp policy命令,可以通过show run查看。

4、ASA默认放行一切虚拟专用网的流量,因为虚拟专用网的流量本来就是安全的,所以ASA为其开绿灯。

———————— 本文至此结束,感谢阅读 ————————