L2TP访问失败?快看看是不是NAT网关的ALG搞的鬼
发布网友
发布时间:2024-09-28 17:03
我来回答
共1个回答
热心网友
时间:2024-10-04 20:45
正文共:1234 字 3 图,预估阅读时间:1 分钟
公有云部署VSR设备、配置L2TP VPN实现访问云内业务,这些方案我们之前都有介绍。我也曾使用这种方式将服务器部署到云上,成本仅增加了100块,实现了随时从公网访问。
然而,近期更换光猫后,遇到无法联网的问题。更换光猫后,我发现360路由器无法连接VPN,无论怎么调整都无法解决,甚至尝试重置路由器,但问题依旧。
为了排查问题,我尝试使用MSR810-W路由器进行测试,但仍然无法连接。此时我开始怀疑是公网服务器故障,经过测试发现业务仍然可以通,于是我开始怀疑是联通封了UDP。
最后,我在光猫上找到了问题所在。在高级NAT设置中,有一个ALG开关配置,勾选上L2TP后,业务就恢复正常了。
之前曾介绍过ALG相关知识,但一时间想不起来,所以再次复习一下。
ALG,全称为Application Layer Gateway,即应用层网关,它是一种特殊的网关,工作在OSI网络模型的第七层-应用层。ALG能够对特定的应用程序协议进行识别和处理,如SIP、H323、RTSP、PPTP、L2TP、IPsec、FTP等。
L2TP和L2F都是自我描述的,在其承载的介质之上的级别上运行。对于基于UDP/IP网络的L2TP和L2F,两者使用的都是UDP注册端口1701。每个数据包报文头中的Version字段可以用于区分两种分组类型,一般L2F使用值1,L2TP版本使用值2。
L2TP和L2F的源端口和目的端口均使用相同的UDP端口1701。对于常规的NAT设备而言,一般使用的是PAT模式,该模式下,NAT设备需要对报文的源IP地址和传输层源端口同时进行转换。在L2TP传输过程中,源端口和目的端口均使用相同的UDP端口1701,导致接收方无法将报文识别为L2TP业务报文。
解决方案很简单,只需在NAT设备上开启ALG即可。启用后,NAT设备就可以对报文应用层数据载荷中的字段进行分析和处理,不再对源端口做转换。
除了L2TP,常见的还有FTP协议。FTP应用由FTP客户端与FTP服务器之间建立的数据连接和控制连接共同实现,而数据连接使用的地址和端口由控制连接协商报文中的载荷信息决定。这就需要ALG利用NAT的相关转换配置完成载荷信息的转换,以保证后续数据连接的正确建立。