了解PPTP ALG

了解PPTP ALG
PPTP(Point-to-Point Tunneling Protocol,点对点隧道协议)是在PPP协议基础上开发的一种新的增强型安全协议,是实现VPN(Virtual Private Network,虚拟专用网)的方式之一。
PPTP协议是一种多通道协议,PPTP使用TCP创建控制通道来发送控制命令,使用GRE来封装数据包以在数据通道中发送数据。
PPTP采用客户端/服务器模式,PPTP客户端首先和PPTP服务器建立一条TCP连接,然后在该TCP连接上建立PPTP控制层连接,之后的PPP数据包通过GRE封装后在隧道中传输。PPTP ALG场景下客户端和服务器的关键交互流程如图1所示。
在同时转换源IP和源端口的NAT场景下,客户端和服务器之间的通信可能会出现异常。PPTP采用GRE封装数据包,而GRE头中是没有端口信息的,普通NAT只能识别并转换客户端的源IP信息,当内网有多个客户端和同一个服务器交互时,FW收到服务器的回应报文时,仅通过目的公网地址无法区分应该发送给哪个客户端从而导致丢包。
另一方面,PPTP是基于GRE头部中的源IP和Call ID来区分隧道的,由于不同的客户端之间是没有协商的,所以它们可能会携带相同的Call ID。经过NAT转换源IP后,不同的客户端对应了相同的公网地址和Call ID,导致隧道建立失败。
因此在同时转换源IP和源端口的NAT场景下,需要在FW上开启PPTP ALG功能,转换源IP的同时转换Call ID,并为后续的数据传输开辟“隐形通道”(创建Server-map)。如果没有这个“隐形通道”,在精细的安全策略控制下(仅允许从客户端到服务器的1723端口的报文通过),数据报文将会被阻断。
PPTP ALG

图片.png

(1)客户端和服务器先通过三次握手建立TCP连接,FW上生成对应的控制连接会话。
    <sysname> display firewall session-table
       pptp  VPN:public --> public 192.168.1.1:xxxx[1.1.1.2:yyyy] +-> 1.1.1.1:1723
    客户端的IP地址192.168.1.1经过源NAT转换为1.1.1.2,端口xxxx转换为yyyy。
(2)客户端和服务器在TCP连接基础上继续建立PPTP控制层连接,报文匹配控制连接会话被放行。
a、客户端在Outgoing Call Request报文中携带了本端的Call ID,经过FW时进行源IP和Call ID转换后发送给服务器,同时创建Server-map1。
        <sysname> display firewall server-map aspf
        Type: ASPF, 1.1.1.1:0 -> 1.1.1.2:bbbb[192.168.1.1:aaaa], Zone: ---
           Protocol: tcp(Appro: pptp-gre), Left-Time: 00:03:09
           VPN: public -> public
        由此Server-map可知,客户端的IP地址由192.168.1.1转换为1.1.1.2,客户端的Call ID由aaaa转换为bbbb。
b、服务器在对应的Outgoing Call Reply报文中携带了本端的Call ID,经过FW时进行目的IP转换后发送给相应的客户端,同时创建Server-map2。服务器端的Call ID相当于“目的端口”,在源NAT场景下是不需要转换“目的端口”的,所以此时FW不会转换服务器的Call ID。
        <sysname> display firewall server-map aspf
        Type: ASPF, 192.168.1.1:0[1.1.1.2] -> 1.1.1.1:cccc, Zone: ---
           Protocol: tcp(Appro: pptp-gre), Left-Time: 00:03:09
           VPN: public -> public
        由此Server-map可知,服务器的Call ID为cccc。
(3)客户端和服务器通过隧道传输数据。每对客户端和服务器交换数据包时都会生成2条隧道,1条隧道是为了从客户端到服务器方向的通信,1条隧道是为了从服务器到客户端方向的通信。
    当服务器到客户端方向的数据到达FW时,命中Server-map1,将目的地址转换为客户端的真实IP地址192.168.1.1,Call ID也转换为真实的Call ID,然后放行该报文并创建会话,不再受安全策略的控制。
    <sysname> display firewall session-table
       pptp-gre  VPN:public --> public 1.1.1.1:0 --> 1.1.1.2:bbbb[192.168.1.1:aaaa]
    同理,当客户端到服务器方向的数据到达FW时,命中Server-map2,将源地址转换为公网地址1.1.1.2,然后放行该报文并创建会话,不再受安全策略的控制。
    <sysname> display firewall session-table
       pptp-gre  VPN:public --> public 192.168.1.1:0[1.1.1.2:0] --> 1.1.1.1:cccc


1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » 了解PPTP ALG

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!