在一个客户处安装网关出口时,在内网的一台 服务器(UGS5000防火墙)上开启L2TP服务,然后在出口网关上映射udp5000端口,udp1701端口,udp4500端口

然后在外网使用windows系统进行L2TP拨号,一直提示拨号失败,wireshark抓包发现客户端在拨号时向服务器的udp500端口发起ISAKMP连接,对方服务器不回应数据包,初步判断是防火墙上的ACL策略引引导的,检查ACL配置后未发现问题,经查阅说明书资料发现windows在进行l2tp拨号时默认使用证书拨号,导至l2tp拨号失败,需要修改注册表,如下:

HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > Rasman > Parameters”。在该路径下右侧界面中,检查是否存在名称为ProhibitIpSec、数据类型为DWORD的键值。如果不存在,请单击右键,选择“新建 > DWORD值”,并将名称命名为ProhibitIpSec,如果此键值已经存在,选中该值,单击右键,选择“修改”,编辑DWORD值。在“数值数据”文本框中填写1,单击“确定”。 
重新启动该PC,使修改生效。

重启电脑后,再次进行拨号,成功,wireshark抓包分析,电脑在拨号后直接向UDP发送数据包,并没有向服务器的UDP500端口发送ISAKMP数据报文,


注:该注册表值说明如下

Windows2000/xp/2003的L2TP缺省启动证书方式的IPSEC,因此必须向Windows添加 ProhibitIpSec 注册表值,以防止创建用于 L2TP/IPSec 通信的自动筛选器。
ProhibitIpSec 注册表值设置为 1 时,基于 Windows 2000 的计算机不会创建使用 CA 身份验证的自动筛选器,而是检查本地 IPSec 策略或 Active Directory IPSec 策略。
要向Windows添加 ProhibitIpSec 注册表值,请按照下列步骤操作:
1. 单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
2. 找到下面的注册表子项,然后单击它:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters
3. 在该项中新建一个“DWORD值”。
4. 将该值名称修改为“ProhibitIpSec”。
5. 双击该值,将Value data修改为“1”, 然后单击“确定”。
6. 退出注册表编辑器,然后重新启动计算机。