众所周知,代理在计算机网络中十分重要。一方面它为隐私安全做出了重大贡献,另一方面又提升了网络流量追踪溯源的难度。那么这篇文章,将梳理主流的代理技术,以及其区别和联系。

image.png

首先,我们按OSI层次结构,将最常见的代理技术分为4种:
应用层代理:HTTP
会话层代理:Socks
网络层代理:TUN
数据链路层代理:TAP

其中,HTTP只代理TCP相关协议,其通过HTTP的CONNECT请求,建立一个TCP隧道,透明的传输数据;Socks分为Socks4和Socks5,Sock4和HTTP一样,仅代理TCP相关协议,而Socks5除了TCP,还能代理UDP相关协议,如DNS和游戏;TUN会虚拟一张IP网卡,代理IP层及以上的所有协议,包括ICMP协议;TAP更是逆天,可以虚拟一张以太网网卡,用于桥接局域网,实现局域网层的虚拟网络连接。

操作系统自带的代理客户端一般为HTTP代理[1],如Windows和IOS等。若要使用其它代理客户端,则要进行额外安装,如Socks等客户端。需要说明的是,HTTP代理仅负责透明的传输TCP数据,没有加密功能,也就是说,如果客户端访问的是HTTP网站,那么不会有数据加密效果,如果是HTTPS网站,则会有加密效果。此外,即使设置了Windows的系统代理,有些应用流量也不会走这个代理,如curl不走,pip走,这跟软件本身是否调用Windows的代理API有关。

此外,一些如Vmess、Shadowsocks等代理协议,均为应用层代理,最终都会由代理工具统一处理为HTTP或者Socks代理模式,供用户直接使用,因为Socks和HTTP的代理客户端普及范围更广,无需安装额外客户端。

Socks代理虽然也能够代理UDP协议,但是一般本地运行的应用程序,如游戏,不会提供一个专门的代理配置窗口供用户使用,所以让游戏流量走Socks代理还是有一些困难的。个别提供代理配置窗口的程序,如微信、QQ等,也只是提供HTTP代理,不会有Socks层面的代理。

VPN一般会从数据链路层或者网络层代理,例如OpenVPN默认从网络层代理,若调整为桥接模式,则会从数据链路层代理。这种层面的代理一般会将电脑的所有数据都走代理,也就是大名鼎鼎的全局代理,代理游戏或者防溯源经常用到。

游戏加速器和VPN类似,不过游戏加速器厂商会比一般VPN厂商提供的节点更加稳定,延迟更低。因为游戏主要就是看延迟,带宽要求并不是很大,所以用VPN或者代理客户端的TUN模式加速游戏理论上可行,但是由于代理节点的延迟太高,实际上很难应用。

这种在本地开放代理服务的流量,在用Wireshark抓包时,要同时打开两个,一个用于抓本地回环地址的流量,也就是未经本地代理服务的流量,另一端则抓连接网络的网卡流量,即经过代理客户端处理过的流量。

此外,浏览器虽然支持Socks5代理,但WebRTC的STUN协议的UDP流量浏览器并不会交给代理处理,而是由浏览器直接发送,这也导致了STUN泄露了用户真实IP,解决这个的办法有两种,第一种:下载浏览器插件,禁用WebRTC,第二种:使用全局代理。

References

[1] Microsoft. Use a proxy server in Windows[EB/OL]. https://support.microsoft.com/en-us/windows/use-a-proxy-server-in-windows-03096c53-0554-4ffe-b6ab-8b1deee8dae1.

标签: Proxy

添加新评论