IPSec ××× 网络穿越和高可用性
第一部分 IPSec ××× 网络穿越问题
1.1 IPSec 流量放行问题(中间设备)
放行加密点之间的ISAKMP和ESP 流量
site1:202.100.1.1
site2:202.100.2.1
access-list out extended permit udp host 202.100.1.1 eq isakmp host 202.100.2.1 eq isakmp access-list out extended permit esp host 202.100.1.1 host 202.100.2.1 access-group out in interface outside
1.2 IPSec 流量放行问题(加解密设备)
site1:202.100.1.1
site2:61.128.1.1
ip access-list extended inbound permit upd host 远端ip eq isakmp host 本端ip eq isakmp permit esp host 远端ip host 本端ip ip access-list extended outbound permit esp host 本端ip host 远端ip interface f0/0 ip access-group inbound in ip access-group outbond out
1.3 入方向crypto MAP对流量的处理
是否感兴趣流 | 是否加密 | 有无map | action |
N/A | 是 | 有 | 解密 |
是 | 不 | 有 | drop |
是 | 不 | 没有 | forward |
N/A | 是 | 没有 | 解密 |
1.4 NAT-T 技术介绍
NAT-T技术默认是开启的
NAT对ESP的影响: 在传输模式的ESP,NAT修改了外层IP地址,由于TCP/UDP校验和的计算包含IP源目地址,所以TCP/UDP的 校验和需要更新,但是现在TCP/UDP已经加密,中间路由器无法更新TCP/UDP的校验和,所以TCP的校验和 检查最终会失败 隧道模式的ESP,不受1:1转换的影响(动态一对一,静态一对一),但是不能穿越PAT,因为PAT转换, 多个内部地址复用一个外部地址,并且使用传输层端口来区分不同流量,很遗憾ESP没有传输层端口
NAT-T技术的三个步骤
第一步决定双方是否都支持NAT Traversal 决定双方是否支持NAT-T和判断peers之间是否有NAT存在的任务在IKE第一阶段完成,NAT-T能力探 测使用IKE第一阶段1-2个包交换来实现,双方互相交换NAT-T的vendor ID来表示本端是否支持NAT-T 第二步决定两个peers 之间是否有NAT存在 为了决定peers之间是否有NAT存在,peer会发送一个hash负载(源目IP和端口计算),如果双方计算 的hash和接收的hash值匹配,那么peers之间就没有NAT存在(就采用ESP封装),如果hash值不匹配, 那么peers就需要使用NAT-T技术封装穿越NAT hash负载也叫NAT-D负载,他在MM模式的3-4个包发送,也在AM的2-3个包发送 第三步决定如何使用UDP封装
第二部分 IPSec ×××高可用性
2.1 基本IPSec ×××配置
crypto isakmp policy 10 authentication pre-share crypto isakmp key cisco address 202.100.1.1 crypto ipsec transform-set vpntrans esp-des esp-md5-hmac
ip access-list extended vpn permit ip 2.2.2.0 0.0.0.255 1.1.1.0 0.0.0.255
crypto map vpn-map 10 ipsec-isakmp set peer 202.100.1.1 set transform-set vpntrans match address vpn
interface f0/0 crypto map vpn-map
inside 暂时添加一条路由
ip route 0.0.0.0 0.0.0.0 10.1.1.10
2.2 Reverse Route injection ( RRI)
哪台路由器处于active(有IPSEC SA)就会有如下的RRI
static route 1.1.1.0/24 next hop 202.100.1.1
RRI介绍
RRI能够为远端隧道终点保护的网络和主机,在路由表内动态的插入相应的静态路由,这些被保护的主机 和网络也被叫为“remote proxy identities” 基于“remote proxy”的网络和掩码产生每一条路由,这些网络的下一跳为远端隧道终点。使用远端××× 路由器为下一跳,能够引导流量被加密
RRI配置(ACTIVE)
crypto map vpn-map 10 set reverse-route tag 10(为RRI动态产生的路由打上tag10) reverse-reoute(启用RRI) route-map static-to-ospf permit 10 match tag 10 (配置上tag 10的路由) router ospf 1 redistribute static subnets route-map static-to-ospf (重分布静态路由到身后动态路由协议)
2.4 Dead Peer Detection
×××使用一个keepalive机制叫做DPD,来检查远端隧道IPSec路由器的可用性。如果网络发生不寻常的忙碌或者不稳定,我们能够设置一个时间来等待,并且判断远端设备是否“Active”。DPD技术能够和其他高可用性技术配合使用,尽快的清除有问题的IPSec SA,和正常工作的peer建立IPSec隧道
DPD有两种工作模式:
Periodic
on-demand(默认)
DPD Periodic 周期性的检测dead peers crypto isakmp keepalive 10 periodic 周期性频繁的发送信息结果就是通讯双方会加解密更多的数据包,增加设备的资源消耗
DPD on-demand 基于流量形式的不同而采取不同的发送方式 crypto isakmp keepalive 10 默认情况下DPD连续5次无响应,会认为链路故障 如果一台路由器发送了出方向的流量,在一定时间内对端路由器没有回送相应的解密流量,这个时候DPD被发送来询问对端状态。 如果一台路由器没有流量要发送,那么它也不会发送DPD信息
default peer
使用“set peer ”命令我们可以配置第一个peer为default peer 如果配置了default peer,下一次连接会直接向default peer发起 如果default peer 没有响应,在“peer list”里边的下一个peer 会成为current peer
idle timers
阻止闲置peer消耗资源