不少企业运维人员在配置IPsec、坚果加速器版本选择SSL类VPN完成组网对接时,往往只关注隧道是否成功连通,很少深入理解VPN数据封装的完整工作过程,一旦出现流量泄露、内网访问异常等问题,很难快速定位故障断点。本文从实际分支企业和总部的VPN对接场景切入,拆解VPN数据封装从内网流量生成到公网转发的全链路逻辑,同时给出可落地的配置校验、故障排查方法,帮使用者理清封装环节的每一步边界。
VPN数据封装的前置配置前提
要触发正常的VPN数据封装,首先要完成两端VPN网关的基础前置配置,以最常见的站点到站点IPsec VPN场景为例,总部侧VPN网关需要提前配置好加密套件、感兴趣流匹配规则、对端对等体的公网地址,分支侧VPN网关需要同步匹配预共享密钥、对应的加密策略,同时两端内网的静态路由或者动态路由,要把访问对端私网网段的下一跳指向本地VPN网关的虚拟隧道接口。
验证前置配置是否生效的操作非常简单,在分支内网的办公PC上执行路由追踪命令,访问总部内网的服务器私网地址,查看路径的前两跳,如果第一跳是分支内网的三层交换机地址,第二跳直接指向分支VPN网关的隧道虚拟接口,说明路由指向符合封装要求,如果路径直接跳转到了分支的普通公网出口网关,说明流量根本不会进入VPN网关的封装队列,后续所有封装步骤都不会触发。
VPN数据封装的逐阶段工作过程
当内网主机发起访问对端私网资源的请求后,生成的普通原始IP数据包会先送到本地VPN网关,网关的第一重处理就是做流量识别,把数据包的源IP、目的IP等五元组信息,和提前配置的感兴趣流规则做逐一匹配,只有完全命中规则的流量才会进入后续封装流程,没有命中的流量会直接走普通公网转发,不会做任何额外处理。

分支与总部站点间IPsec VPN组网链路示意,对应数据封装全链路运行节点
匹配成功的原始数据包会进入外层IP头封装阶段,VPN网关会给原始的内层私网IP数据包,额外新增一个全新的外层IP头部,外层头部的源地址是本地VPN网关公网物理接口的公网IP,目的地址是对端VPN网关对等体的公网IP,坚果这一步的核心作用是让封装后的数据包符合公网路由的寻址规则,不会被公网的运营商路由器当成源目的都是私网地址的无效包直接丢弃。
完成外层IP头添加的数据包会进入加密与协议头插入阶段,不同类型的VPN在这里的处理逻辑有细微区别,IPsec VPN会在内外两层IP头之间插入ESP或者AH协议头,同时把整个内层的原始IP数据包做对称加密处理,SSL VPN则会把原始数据包完整封装在TCP或者UDP的SSL加密载荷中,这一步处理完成后,公网链路中的所有中间转发节点,都只能看到外层的公网IP信息,无法直接读取内层的原始私网地址和传输内容。
最后一步是链路层帧头封装,完成加密的数据包会被VPN网关添加上对应物理出口的链路层头部,比如以太网环境下的源目MAC地址帧头,之后直接从VPN网关的公网物理接口发送到公网链路上,整个VPN数据封装的工作过程到这里就全部执行完毕,封装后的数据包会沿着公网路由路径转发到对端的VPN网关。
封装过程的有效性验证方法
想要确认VPN数据封装的全流程是否正常执行,最直接的验证方式是在VPN网关的公网物理接口开启端口镜像,用抓包工具捕获所有从该接口发出的数据包,过滤对端对等体的公网IP作为筛选条件,如果能看到大量外层源目IP都是两端VPN网关公网地址的加密数据包,就说明封装流程已经正常触发。
如果抓包后发现完全没有对应特征的封装后数据包,首先要回头检查感兴趣流的配置规则,很多运维人员配置规则时写错了两端私网网段的子网掩码,导致部分需要走VPN隧道的流量没有命中匹配规则,直接走普通公网转发,这类问题不属于隧道协商故障,单纯排查VPN隧道的配置根本找不到问题根源。
封装环节的常见故障定位思路
很多运维人员遇到VPN隧道显示已建立、但是内网业务访问不通的问题,第一反应就去排查隧道协商阶段的加密套件、预共享密钥配置,实际上相当一部分这类故障的根源出在封装环节,比如两端VPN网关的NAT配置顺序错误,本该进入封装队列的私网流量,坚果先被网关做了源NAT转换成了公网地址,转换后的流量自然无法命中私网网段的感兴趣流规则,不会被封装,也就无法送到对端内网。
还有一个非常普遍的认知误区,很多用户以为只要VPN隧道连通,所有的内网流量都会被封装走隧道,实际上封装的范围完全由提前配置的感兴趣流规则决定,如果规则只配置了总部和分支需要互通的业务网段,其余内网主机访问公网的流量不会触发封装,直接走普通公网链路转发,坚果这类情况属于配置对应的预期效果,不属于封装故障。
坚果加速器 


