提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!

原文发表于2008年9月30日

阅读时请注意,本文讨论的是一种客户端到服务器端的网络技术,主要应用于企业内部网络,并不提供私服、外挂、代理VPN的相关信息。

大概是一个月前的事情了,主要是一个VPN解决方案,服务器配置是Windows 2003 + ISA 2006,单网卡连接路由上网,设置好路由并通过ISA的配置顺利启用了PPTP的VPN,通过客户端ADSL拨号,成功连接,本来以为事情这样就结束了,事实上问题还没有解决。在另外一个客户端中启用连接,停留在验证用户名和密码阶段,然后就发生错误,详细如下。

错误 721 : 远程计算机没反应。

我发现两个客户端就是网络环境不同,这个客户端位于一个局域网中。有问题百度一下,有个解决方案就是修改注册表的,本来以为可以轻松解决这个问题的,但我又想错了,我开始怀疑是这个客户端所在局域网搞的鬼。实际上通过服务器的防火墙监视发现,服务器已经启用了该PPTP连接,但事实上有个数据包不能正常抵达客户端,所以造成这个错误。进一步上网查询,得知这个数据包很有可能是GRE协议,这个协议由于客户端局域网的限制未能正常抵达,所以造成这个错误。本来以为这是个个别现象,回到学校,使用校园网,于是我又尝试连接VPN,一样的错误!回家后使用ADSL上网,连接该VPN,一切正常。断开后启用虚拟机,打开一个虚拟的Windows XP系统,建立VPN连接,拨号,同样的错误!于是我想貌似通常的局域网内部机器都不能正常拨号,若要想正常拨号就必须要去修改局域网配置!但一般修改自己局域网配置是可以的但是修改别人的局域网配置就难了。这个问题困扰了我很多天。

我在PPTP连接上越陷越深,偶然的一次看到某论坛上一位朋友遇到和我一样的问题,据他说使用L2TP可以实现内网访问VPN,我似乎看到了救命稻草,于是我便开始配置ISA的L2TP访问,但有个问题是L2TP必须使用IPSec然后就是什么证书的,比较麻烦,幸好捷径还是有的,IPSec可以预共享密钥。

服务器端设置

服务器端IP地址分配

分配静态地址,DHCP配置有点麻烦。

服务器端身份验证

设置验证方式,注意这里务必勾选“未加密密码(PAP)(U)”和“允许L2TP连接自定义IPSec策略(L)”并且设置好预共享密钥。

服务器端启用VPN访问

启用客户端访问。

服务器端协议

启用PPTP和L2TP/IPSec,当然你不需要PPTP可以先关闭它。

客户端和服务器端设置

设置完毕后,启用连接,无法连接。由于本地计算机没有证书等一般安全措施,所以在使用VPN L2TP方式进行连接时必然会遇到类似于“vpn 错误789: L2TP 连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误”这样的错误,即使设置了IPSec预共享密钥也无济于事,这种情况经常出现在一些中小企业在不能使用PPTP方式而必须采用L2TP方式访问企业资源的情景下,原来服务器和客户端都要求使用证书这种加密模式,怎样才能让它们认可预共享密钥连接呢?其实微软已经给我们方法了,修改注册表。

微软文章: http://support.microsoft.com/kb/310109/zh-cn

其实你可以使用下面命令很简单的完成操作

reg add "HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters" /v ProhibitIPSec /t REG_DWORD /d 1

客户端取消证书加密

完成操作后请重启服务器和客户端。

重启完毕下面 只要修改客户端 就足够了。

客户端设置

修改先前的VPN连接。

客户端拨号连接

打开连接对话框,点击属性。

客户端选择VPN类型

切换到“网络”选项卡,并选择VPN类型。

客户端安全设置

切换到“安全”选项卡,单击“IPSec设置(P)…”

客户端设置IPSec

输入刚才设定的密钥,确认。

确认所有对话框,这时输入VPN用户名和密码,登录,成功!问题解决!

希望我的这篇文章对您有所帮助。欢迎交流,请在评论中留下您宝贵的意见。

注意: 貌似由于服务器端验证方式的设置原因,这里预共享密钥IPSec可以不用设置,原文不当,给大家带来不便还望见谅。