joy keeps flowin'

TUN模式和TAP模式

xx
目次

VPN #

http(s)代理 #

第一种是 RFC 7230 - HTTP/1.1: Message Syntax and Routing(即修订后的 RFC 2616,HTTP/1.1 协议的第一部分)描述的普通代理。这种代理扮演的是「中间人」角色,对于连接到它的客户端来说,它是服务端;对于要连接的服务端来说,它是客户端。它就负责在两端之间来回传送 HTTP 报文。

第二种是 Tunneling TCP based protocols through Web proxy servers(通过 Web 代理服务器用隧道方式传输基于 TCP 的协议)描述的隧道代理。它通过 HTTP 协议正文部分(Body)完成通讯,以 HTTP 的方式实现任意基于 TCP 的应用层协议代理。这种代理使用 HTTP 的 CONNECT 方法建立连接,但 CONNECT 最开始并不是 RFC 2616 - HTTP/1.1 的一部分,直到 2014 年发布的 HTTP/1.1 修订版中,才增加了对 CONNECT 及隧道代理的描述,详见 RFC 7231 - HTTP/1.1: Semantics and Content。实际上这种代理早就被广泛实现。

中间人攻击代理 #

中间人攻击

客户端与通信的服务器之间经过另一个代理服务器,客户端请求时先将请求发送至代理服务器,代理服务器再发送至真实的服务器。同样的,服务器响应时,也先将相应发送至代理服务器,代理服务器再发送至实际的客户端。

这种方式与抓包的原理相同,只能代理http请求,如果代理https时客户端或服务端有证书校验(certificate pinning), 就不能通过。原因是网络请求实际时代理服务器发送的,且只能从服务器拿到证书和公钥,拿不到私钥就没有办法生成通过证书校验。

http隧道代理 #

隧道代理

客户端和服务端通过隧道传递消息,隧道只做转发。

http 1.1提供的功能。

TUN 模式 #

原理 #

TUN 模式是一种网络层(第三层)代理模式。在这种模式下,Clash 创建了一个虚拟的网络接口(通常称为 TUN 接口),将流量从应用程序重定向到这个接口。然后,Clash 可以捕获和处理从该接口发出的数据包,进行代理操作,然后将它们发送到目标服务器,最后将响应数据包发送回虚拟接口,以便返回给应用程序。

应用 #

UN 模式通常用于代理 UDP 流量和 IP 层数据,例如 VPN 连接。它更适合用于路由级别的代理,允许您在操作系统级别实现网络代理。

优点 #

TUN 模式可以捕获整个 IP 数据包,因此对于需要代理整个网络连接的应用程序非常有用。它通常比 TAP 模式更高效,因为它仅操作网络层。

TAP 模式 #

原理 #

TAP 模式是一种数据链路层(第二层)代理模式。在这种模式下,Clash 创建虚拟以太网适配器(通常称为 TAP 适配器),并将其连接到物理网络适配器上。应用程序通过这个虚拟适配器发送和接收数据包,Clash 可以捕获和处理这些数据包,然后将它们发送到目标服务器,最后将响应数据包发送回虚拟适配器以返回给应用程序。

应用 #

TAP 模式通常用于代理需要以太网级别连接的应用程序,如一些在线游戏或其他需要 MAC 地址绑定的应用程序。

优点 #

TAP 模式允许代理以太网级别的连接,这对某些特定的应用程序非常有用。然而,它通常比 TUN 模式更复杂,因为它需要处理数据链路层的细节。

💡 一般情况下,电脑设置VPN是设置系统代理,由软件决定要不要通过代理。TUN模式和TAP模式都是通过TCP/IP中更底层的让计算机中所有应用全都走代理。

TAP/TUN代理示意图 #

TAP和TUN代理

参考 #

CONNECT - HTTP | MDN HTTP 代理原理及实现(一) Linux Tun/Tap 介绍

标签:
Categories: