IPSec协议
Posted 割你腰子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IPSec协议相关的知识,希望对你有一定的参考价值。
IPSec的两种模式
传输模式:传输模式只保护源IP头部后的数据,在原始 IP 头和 payload 间插入 IPSec 头部(ESP 或 AH)适用于加密点与传输点在同一网络中,用于主机与主机之间
隧道模式:隧道模式在IPSec头部前封装一个新的IP头部,来保护所有数据,可用于加密点与传输点不在同一网络中
由于隧道模式封装了新的IP头部,数据由esp或者ah进行保护,这时就像加密点与加密点间发送普通数据 这样并且可以隐藏主机和拓扑,传输模式的源和目的 IP 地址以及所有的 IP 包头都是不加密发送的
当传输点在加密点后面时(传输点为内网pc)当经过加密点(出口设备)源IP会被nat掉,这时使用传输模式会出现认证不成功因为传输模式是只识别原 IP 的,这样就会被直接丢弃掉
AH:不加密,不支持nat-t 很少使用,因为ah的认证范围为整个数据包,当我VPN设备经过nat设备时我的IP头部就会被nat掉,就会导致认证不成功。
ESP:除了IP头部验证所有
NAT-T
当我们的VPN设备经过nat设备时会出现源地址被nat,导致认证不成功,
当我们使用ah时,因为认证范围包括了IP头部,就会出现认证不成功
使用esp时,仅转换了源地址未转换端口的话认证还是可以成功的,但仅限于源地址转换,当使用pat时,由于我们esp的端口号是加密的,所以不能进行转换
这时出现了nat-t技术
开启nat-t功能后在ike-sa阶段会协商是否需要启用nat-t,就会在IP头部与esp头部中插入一个udp的4500端口
IPSEC网关如何知道自己是否支持NAT-T
决定双方是否支持NAT-T和判断peers之间是否有NAT存在的任务在IKEv1的第一阶段完成,NAT-T能力探测使用IKEv1第一阶段1-2个包交换来实现,双方互相交换NAT-T的Vendor ID来表示本段是否支持NAT-T。
IPSEC网关如何判定经过NAT的设备
为了决定Peers之间是否有NAT存在,Peer会发送一个hash负载(源目IP和端口计算),如果双方计算的hash和接受的hash值匹配,那么Peers之间就没有NAT存在(就采用ESP封装),如果hash值不同,那么Peers就需要使用NAT-T技术封装穿越NAT。
hash负载也叫作NAT-D负载,在主模式中的3-4个包发送,在野蛮模式的2-3个包中发送。
IKEV1通过3-4个包的NAT-D参数来判定
通过源IP源端口, 目的IP 目的端口算HASH值
如果HASH值相同,说明没有经过NAT,如果HASH值不等,说明经过了NAT
什么时候添加UDP的端口
如果确定了经过nat,就在IKEV1的通过5 6的时候,增加 UDP 4500端口
以上是关于IPSec协议的主要内容,如果未能解决你的问题,请参考以下文章