https://blog.51cto.com/u_1965839/5259426

NAT穿越场景

在ipsec pn部署中,如果发起者比如fwc位于私网内部,而它希望与fwa之间直接建立一条ipsec隧道,这种情况下nat会对部署ipsec pn网络造成障碍。

在多站点企业中,有的站点连动态的公网IP地址都没有,只能先由网络中的nat设备进行地址转换,然后才能访问internet,此时如果同时需要和另一个站点建立ipsec通道的话,就存在问题。

IPSec是用来保护报文不被修改的,而NAT却专门修改报文的IP地址,所以肯定存在问题。

协商IPSec的过程是由isakmp报文完成的,isakmp报文封装在udp中,源目端口都是500,nat设备可以转换该消息的ip地址和端口,因此isakmp消息可以完成nat转换,协商得到IPSec sa,但是数据流量是通过ah或者 esp进行封装的,在nat转换过程中存在问题。

ike peer a//创建IKE对等体并进入IKE对等体视图。
nat traversal//使能NAT穿越功能。缺省情况下,NAT穿越功能处于开启状态。
quit
ipsec nat-traversal source-port 4500//配置IPSec NAT穿越的端口号。缺省情况下,IPSec NAT穿越的端口号为4500。
ike nat-keepalive-timer interval 20//配置IKE发送NAT Keepalive报文的时间间隔。
缺省情况下,设备发送NAT Keepalive报文的时间间隔为20秒。

实验一:两个网关之间存在NAT设备时通过IKE方式协商IPSec VPN隧道(总部通过Name认证分支)

需求和拓扑

  • 总部属于10.1.1.0/24子网,通过接口GigabitEthernet 0/0/1与FW_A连接。

  • 分支机构属于10.1.2.0/24子网,通过接口GigabitEthernet 0/0/1与FW_C连接。

  • FW_A和FW_C路由可达。

  • FW_B为NAT网关,分支用户必须经过NAT网关才能访问总部。

分支机构的员工需要访问总部的服务器。由于服务器信息较机密,数据经过Internet传输不安全,故需建立IPSec隧道来对传输数据进行加密。

//f1和f3
security-policy
 rule name 1
  source-zone trust
  destination-zone untrust
  source-address 10.1.1.0 mask 255.255.255.0
  destination-address 10.1.2.0 mask 255.255.255.0
  action permit
 rule name 2
  source-zone untrust
  destination-zone trust
  source-address 10.1.2.0 mask 255.255.255.0
  destination-address 10.1.1.0 mask 255.255.255.0
  action permit
//前两个使得icmp流量通过
 rule name 3
  source-zone local
  destination-zone untrust
  source-address 1.1.2.1 mask 255.255.255.255
  destination-address 1.1.5.1 mask 255.255.255.255
  action permit
 rule name 4
  source-zone untrust
  destination-zone local
  source-address 1.1.5.1 mask 255.255.255.255
  destination-address 1.1.2.1 mask 255.255.255.255
  action permit
//后两个用于控制IPSec隧道两端设备IKE协商报文通过,使其能够进行隧道协商
//f2
security-policy
 rule name 1
  source-zone trust
  destination-zone untrust
  source-address 10.1.5.2 mask 255.255.255.255
  destination-address 1.1.2.1 mask 255.255.255.255
  action permit
 rule name 2
  source-zone untrust
  destination-zone trust
  source-address 1.1.2.1 mask 255.255.255.255
  destination-address 10.1.5.2 mask 255.255.255.255
  action permit

3、配置静态路由

//f1
ip route-static 1.1.5.0 255.255.255.0 1.1.2.2
ip route-static 10.1.2.0 255.255.255.0 1.1.2.2
ip route-static 10.1.5.0 255.255.255.0 1.1.2.2
//f2
ip route-static 1.1.2.0 255.255.255.0 1.1.5.2
ip route-static 10.1.1.0 255.255.255.0 1.1.5.2
ip route-static 10.1.2.0 255.255.255.0 10.1.5.2
//f3
ip route-static 1.1.2.0 255.255.255.0 10.1.5.1
ip route-static 10.1.1.0 255.255.255.0 10.1.5.1
//r
ip route-static 10.1.1.0 255.255.255.0 1.1.2.1
ip route-static 10.1.2.0 255.255.255.0 1.1.5.1
ip route-static 10.1.5.0 255.255.255.0 1.1.5.1

4、配置IPSEC

4.1、配置感兴趣流

//f1
acl number 3000
 rule 5 permit ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0 0.0.0.255
//f1
acl number 3000
 rule 5 permit ip source 10.1.2.0 0.0.0.255 destination 10.1.1.0 0.0.0.255

4.2、配置ipsec安全提议

//f1f3
ipsec proposal tran1
 esp authentication-algorithm sha2-256
 esp encryption-algorithm aes-256

4.3、配置ike安全提议

//f1f3
ike proposal 10
 encryption-algorithm aes-256
 dh group14
 authentication-algorithm sha2-256
 authentication-method pre-share
 integrity-algorithm hmac-sha2-256
 prf hmac-sha2-256

4.4、配置ike peer

//f1
ike peer c
 undo version 2
 pre-shared-key Test!1234
 ike-proposal 10
 remote-id-type fqdn
 remote-id branch
 remote-address 1.1.5.1
 remote-address authentication-address 10.1.5.2
//f3
ike peer a
 undo version 2
 pre-shared-key Test!1234
 ike-proposal 10
 local-id-type fqdn
 remote-id-type ip
 local-id branch
 remote-address 1.1.2.1

4.5、配置ipsec policy

//f1
ipsec policy map1 10 isakmp
 security acl 3000
 ike-peer c
 proposal tran1
//f3
ipsec policy map1 10 isakmp
 security acl 3000
 ike-peer a
 proposal tran1

4.6、接口应用IPSec policy 

//f1f3
interface GigabitEthernet1/0/1
 ipsec policy map1

5、配置NAT

//f2
nat-policy
 rule name 1
  source-zone trust
  destination-zone untrust
  source-address 10.1.5.0 mask 255.255.255.0
  action source-nat easy-ip

验证和分析

1、pc2发起访问,之后pc1和pc2之间可以互访,pc2同时可以访问公网。

<f2>dis fire session table 
2022-04-04 14:21:30.190 
 Current Total Sessions : 1
 udp  VPN: public --> public  10.1.5.2:4500[1.1.5.1:2048] --> 1.1.2.1:4500