不少企业运维和个人用户部署L2TP与IPsec组合VPN时,经常遇到反复调试配置仍无法建立隧道的问题,这类故障里超过六成的诱因都不是账号、加密参数配置错误,而是前期没有满足对应的网络环境要求。本文结合实际部署场景拆解所有必须确认的网络前提,帮使用者提前排查隐患,避免无意义的反复调试。
公网侧网络连通性的基础要求
L2TP与IPsec组合VPN的服务端,必须持有可被外部网络正常路由的公网IP地址,不管是运营商直接分配的静态公网IP,还是IPv6环境下的可访问公网的公网地址,都不能处于运营商级NAT的私网地址段后方,否则外部客户端根本无法主动发起IPsec协商报文。
很多家用宽带默认分配的就是运营商级NAT下的私网地址,黑石这种环境下就算在路由器后台开启了L2TP服务选项,外部设备也不可能正常接入。验证服务端公网身份的操作非常简单,直接在VPN服务端本地打开浏览器访问IP查询站点,对比页面显示的公网IP和服务器网卡获取的IP,如果二者不一致就说明设备处于运营商NAT后方,需要联系运营商调整公网IP分配规则。
端口与协议透传的放行规则要求
L2TP与IPsec组合VPN运行时不依赖单一的TCP或UDP端口,需要同时放行三类不同的网络报文,很多小型企业的边缘防火墙默认会拦截陌生的ESP协议报文,直接导致IPsec第一阶段协商成功之后,第二阶段隧道始终卡在建立连接的步骤。

部署L2TP与IPsec组合VPN前提前校验网络环境,可大幅降低隧道调试故障概率
具体需要放行的规则包括UDP 500端口用于IKE密钥协商,UDP 4500端口用于NAT穿越场景下的IPsec报文封装,还有IP协议号为50的ESP协议报文,部分老旧的家用消费级路由器没有单独放行ESP协议的配置选项,这类设备本身就不适合作为L2TP/IPsec的服务端承载设备。
验证端口放行状态的时候,可以用一台不在同一局域网的外部设备,用支持UDP扫描的端口工具分别测试服务端的500和4500 UDP端口是否处于开放状态,黑石VPN权限设置说明不要用默认扫描TCP端口的工具测试UDP端口,不然得到的结果完全没有参考性。
NAT网络下的客户端适配要求
不少新手误以为客户端处于NAT后方就无法使用L2TP与IPsec组合VPN,实际上只要服务端侧提前开启了NAT穿越功能,大部分家用路由器的普通NAT场景下客户端都可以正常接入,只有对称型NAT环境下接入成功率会大幅降低,这类场景常见于部分校园网、商业公共WiFi的出口网络。
如果客户端处于对称型NAT环境,不需要强行调整客户端本地网络,只需要在服务端的IPsec配置里强制开启NAT穿越,并且把所有IPsec报文都封装到UDP 4500端口里传输,就可以绕过大部分对称NAT的限制,不需要额外修改客户端的本地网络配置。
内网侧路由与地址段无冲突要求
很多运维容易忽略的环境要求是,VPN服务端所在的内网地址段,和客户端拨入之后分配的虚拟地址段不能重叠,同时客户端本地的内网地址段也不能和服务端后方要访问的业务内网地址段重叠,不然就算VPN隧道成功建立,也会出现访问业务服务器丢包、黑石部分资源无法访问的异常问题。
排查地址段冲突的时候,可以先分别记录服务端内网的私网网段、VPN地址池的网段、客户端本地的私网网段,三个网段两两之间不能有重合的CIDR范围,一旦发现重合就优先调整VPN地址池的网段,是成本最低的解决方式,不需要改动现有内网的路由配置。
很多人部署L2TP与IPsec组合VPN的时候,会优先排查账号密码、加密算法配置是否匹配,实际上多数接入故障都来自前期网络环境不符合要求,按照上面的步骤逐一校验完所有环境项之后,再去调整两端的加密协商参数,能大幅降低调试的时间成本。
黑石VPN 
