浅谈VPN和代理

0x00前言

  VPN和代理是两种常见的“翻墙”方式,那么两者的区别是什么呢:适用性?安全性?访问速度等?

0x01代理

1.1原理

  • 代理服务器位于客户端和访问互联网之间,服务器接收客户端的请求,然后代替客户端向目标网站发出请求,所有的流量路由均来自代理服务器的IP地址,从而获取到一些不能直接获取的资源。

1.2代理分为HTTP代理和SOCKET代理

  HTTP代理是在HTTP协议层的代理服务,只能处理HTTP/HTTPS请求,主要满足用户Web浏览网页需求,由于只处理HTTP请求,处理速度极快。
  SOCKET代理不解析网络流量,传递数据包而并不关心是何种应用协议,这使得SOCKET代理可以用于多种环境,支持FTP、SMTP、HTTP等,也支持QQ、BT下载等多种应用,典型的有Shadowsocks。通常分为socks 4 和socks 5两种类型,socks 4只支持TCP协议而socks 5支持TCP/UDP协议,还支持各种身份验证机制等协议。

0x02VPN

2.1原理

  VPN(Virtual Private Network),在客户端和主机之间建立加密隧道,客户端的请求通过加密将所有方式发送给VPN服务器。

2.2主流VPN分为PPTP、SSL VPN 、IPSec VPN

  PPTP(Point to Point Tunneling Protocol)点对点隧道协议。用PPP协议对数据进行封装,添加附加包头用于互联网络上数据的传输工作,采用MPLS加密认证方式,工作在数据链路层。目前的计算机、智能手机等设备均支持此协议,不用额外安装软件即可连接。
  IPSec(Internet Protocol Security)VPN采用IPSec协议实现VPN技术,工作在网络层。包括LAN TO LAN(站到站)、ENDTO LAN(端到站)等方式。

0x03对比

3.1 资源特性

  • VPN方式是将客户端和服务器配置在一个LAN域,所有在配置VPN服务器时要求给服务器指定LAN于内的IP,且声明可以用于分配给客户端的IP范围,每个客户端连接VPN后,会分配到一个特点的IP地址,可以通过ipconfig/ifconfig查看到。
  • 代理方式,服务器只接受客户端的请求数据包,然后转发,客户端不会分配得到特定的IP地址。

3.2 适用性

  • PPTP VPN/IPSec VPN等常见VPN适用性最佳,计算机设备、智能手机、PAD登智能设备默认支持此类VPN连接,不需要任何额外的软件即可获得VPN服务。SSL VPN通常需要安装特定的软件才能使用。默认计算机的所有流量都通过VPN传输
  • 代理方式一般需要安装客户端才能使用,也可以通过浏览器代理设置,默认只有设置了代理的应用(通常是浏览器)的流量包才通过代理服务器。

3.3 安全性

  • 其中PPTP是最常见的VPN,安装部署非常简便,网上不乏“一键搭建”的教程,然而PPTP VPN采用MSCHAPV2认证协议,该协议在网上爆出了很多的安全缺陷,可能导致中间人攻击,弱口令爆破(asleap+thc-pptp-bruter),而且秘钥空间只有2^56,利用专业的攻击设备可以在短时间内破解加密密钥,获取VPN通信内容。
  • IPSec VPN采用AH协议提供数据完整性和身份识别,采用ESP协议实现数据加密。SSL VPN采用SSL加密通信流,相对PPTP而言拥有更高的安全性。
  • Shadowsocks采用 AES-256-CFB或RC4-MD5加密,安全性也相对较高。

3.4 访问速度

  • 网上针对SOCKET和HTTP代理速度比较各执一词,有人认为SOCKET代理直接转发流量,并不关心具体的协议,因而速度更快;也有说由于支持处理的协议多,加密耗时更长,因而速度更慢。笔者觉得实际应用中,限制的因素大部分是客户端到VPS的访问速度,加密耗时及协议数量不是决定性因素,带宽相对固定式,协议类型多样,导致网页的浏览速度感官上变慢,然而总流量几乎是持平的。这也可以类比于Shadowsocks代理浏览器访问感觉比VPN快,应为默认VPN是系统全局代理,所有请求流量都要耗费带宽,而Shadowsocks则只有代理的数据流量,同样带宽感官上浏览速度确实较快。

0x04参考

Debian OpenVPN安装官方教程
Ubuntu OpenVPN安装官方教程
Ubuntu PPTP安装教程
Proxies vs. VPN – What’s the difference?
A death blow for PPTP
Shadowsocks 使用说明