Secure Socket Tunneling Protocol

基于SSTP协议的VPN隧道通信

在即将到来的Windows Longhron Server Beta3以及Windows Vista SP1中(注意是SP1,呵呵,还没上市就考虑SP1了),针对远程访问中的VPN连接,微软将提供一个新的协议,称为SSTP(Secure Socket Tunneling Protocol,安全套接字隧道协议)。这个协议将用来替代PPTP和L2TP协议,以提高VPN访问的灵活性,不过SSTP还不是一个标准,将来肯定还有一段路需要走。

大家在使用PPTP和L2TP协议进行VPN的时候,肯定遇到VPN连接不能正常工作的情况,很多时候是因为防火墙或者NAT路由器没有开放PPTP GRE或者L2TP ESP的端口。对于用户来说,这样的VPN连接的体验肯定是不好的,他们希望的是VPN连接就像IE连接一样好用。SSTP就是为了解决这样的问题而出现的。

为了避开防火墙或者NAT对VPN连接的影响,SSTP通过HTTPS(SSL)建立VPN隧道,大部分防火墙是允许出方向的SSL访问通过的。但是SSTP并不支持站点到站点的VPN,只适合于客户端到站点的远程访问连接。下面将描述SSTP的运作流程:

1、 客户端通过Internet和服务器建立TCP连接,这个连接是通过TCP端口443进行的。假定客户端的IP地址是100.100.100.1,服务器的IP地址是200.200.200.1。

2、 当这个TCP会话开始之初,将进行SSL协商。通过SSL协商过程,客户端将获取并验证服务器的证书(如果验证失败,连接将终止)。在这个过程中,服务器并不验证客户端的身份。

3、 客户端将通过加密的SSL会话,往服务器发送HTTPS请求。

4、 通过HTTPS会话,SSTP协议将开始运作,客户端将发送SSTP控制数据包,在客户端和服务器上开启SSTP状态机。然后将在PPP层建立链路通信。

5、 在PPP会话(这个会话建立于SSTP over HTTPS之上)的初始将进行PPP验证,验证的方法取决于验证算法,一般情况下此时服务器将验证客户端的身份,而客户端对服务器的身份验证是可选的。

6、 PPP验证结束后,SSTP将在客户端和服务器通过VPN连接接口进行通信,该接口将使用“内部IP”,比如客户端为192.168.1.2,服务器为192.168.1.1。这个IP地址是在RRAS服务器上进行配置,用来访问公司的内部网络。

7、 客户端和服务器通过SSTP进行VPN通信,发送数据包。假设客户端(192.168.1.2)需要发送一个数据包到服务器(192.168.1.1),此时SSTP将提交此数据包到SSL层进行加密,然后SSL层添加新的数据包头部(源地址为100.100.100.1,目的地址为 200.200.200.1),通过Internet连接接口将数据包发往服务器。

SSTP协议同时还具有以下的特点:
  • 集成的NAP支持
  • 支持IPv6
  • SSTP使用的是单通道的HTTPS连接,相比于其他厂商的多通道实现,有更好的网络利用率,以及更佳的负载均衡性能。
以上内容部分翻译自微软RRAS Blog,Samirj Jain的文章。通过邮件联系了Samirj之后,他表示计划在3/4月份推出的LH Beta3和Vista SP1 Beta中加入SSTP的Beta Release。看来只有等Longhorn Server定型了,Vista才算是完整了吧,特别是Bussiniss这个版本,继续等待吧。

 

你可能感兴趣的:(网络协议编程-攻击和网络驱动,安全设备和网络安全方案)