首先,我猜你是想比较VPN和SSL. ssh是一个remote shell 是基于SSL的一种应用,尽管很多人用ssh的转发功能 但是本质上,并没有使用shell, 只是利用了sshd这个软件的SSL proxy的功能。
其次,SSL本身就是VPN的一种,称之为SSL VPN, VPN是外延更广的概念,也不能放在一起比较。
所以我猜你所说的vpn是非SSL VPN,很可能是IPsec,L2TP和PPTP这种基于GRE tunnel的VPN(也有基于其他类型的tunnel 比如ip-ip 或者根本就在tunnel里的,但典型的,是基于GRE tunnel的)。
那么接下来比较一下tunnel-based VPN和SSL VPN。
SSL VPN 的最大好处就是天生可以穿越NAT。因为SSL工作在TCP/UDP之上,有端口号,可以被NAT复用。SSL非常适合远程登陆,也就是client-gateway模式。要知道你在家里面上VPN一般来说肯定是要经过你们家路由器的NAT的,在这方面SSL有先天的优势。缺点也很明显,SSL/TCP VPN本身有TCP melt down的问题(简单的说就是性能太差),web SSL只适合与访问网站。DTLS即SSL/UDP倒是一个方向。
而tunnel-based VPN 穿越NAT需要有专门的feature,比如IPsec有NAT-T。即把数据报文包裹在UDP:4500包里面而不是简单的GRE tunnel,当然如果这么做,其实和DTLS就有点像了。tunnel VPN因为在处理包的时候只看到IP的头(顶多再看看UDP的8字节头部),而且数据通道是无状态的,因此速度特别快。我这么说并没有考虑加解密的开销,因为无论是SSL VPN还是tunnel VPN,加解密现在一般都是专门的硬件来做了。
至于面向远程用户的易用性,SSL VPN除非是client-less模式(应用并不是很多),还是要安装客户端,反而tunnel VPN在主流的操作系统上native支持。比如MAC支持IPsec,LT2P,PPTP,Andorid支持PPTP和L2TP,等等。
因此对于远程登录用户来说,现在SSL相比较Tunnel VPN并无明显优势。
但是有一个优势SSL VPN的一个分支也就是sshd proxy这种技术门槛比较低,一般的用户很容易就可以学会用sshd来搭一个转发服务器。
至于企业用户,tunnel VPN的优势就太大了。像IPSEC的企业网技术远远不是SSL VPN所能达到。比如DMVPN,GETVPN。而且企业网更注重性能。
运营商级别的就不谈了。
所以SSL的应用,现在还不能和tunnel-based VPN相比。
— 完 —
本文作者:lookwatchsee
【知乎日报】
你都看到这啦,快来点我嘛 Σ(▼□▼メ)
此问题还有 6 个回答,查看全部。
延伸阅读:
市面上购买的VPN加速 和 SSH搭建 哪个速度快 稳定?
如何用 VPS 配置成 SSH 代理服务器?