tun2socks 的原理是将TUN 设备上的IP 数据包转换为SOCKS 协议数据,然后通过SOCKS 代理服务器发送。简单来说,它利用TUN 设备模拟一个虚拟网络接口,将所有流经该接口的网络流量重定向到SOCKS 代理,从而实现流量的代理转发,让原本不支持SOCKS 代理的应用也能使用SOCKS 代理。
具体原理如下:
1. TUN 设备:
TUN (介于网络层和数据链路层之间的虚拟网络接口) 设备模拟一个网络接口,它接收IP 数据包并将其传递给用户空间应用程序。tun2socks 运行后,会创建一个TUN 设备,并将所有流经该设备的IP 数据包捕获。
2. IP 数据包解析:
tun2socks 接收到TUN 设备传递的IP 数据包后,会解析数据包中的IP 地址、端口等信息。
3. SOCKS 协议转换:
tun2socks 将解析出的IP 数据包信息转换为SOCKS 协议(通常是SOCKS5 协议) 格式的数据,并将其发送给配置的SOCKS 代理服务器。
4. 代理服务器转发:
SOCKS 代理服务器接收到tun2socks 发送的数据后,根据其配置,将数据转发到目标服务器,并将目标服务器的响应数据返回给tun2socks。
5. 数据回传:
tun2socks 接收到代理服务器的响应数据后,将其转换回原始的IP 数据包格式,并通过TUN 设备发送回原始应用程序,完成整个代理过程。
总结来说,tun2socks 通过在TUN 设备上拦截IP 数据包,并将其转化为SOCKS 协议数据,然后利用SOCKS 代理服务器进行转发,最终实现流量的代理和转发功能。
一些关键概念:
TUN/TAP:
TUN (通用网络隧道) 和TAP (通用以太网隧道) 都是虚拟网络接口,用于在用户空间和内核空间之间传递网络数据包。TUN 模拟的是IP 层,而TAP 模拟的是以太网层。
SOCKS 代理:
SOCKS 是一种网络协议,用于在客户端和服务器之间建立代理连接。SOCKS 代理服务器可以转发各种类型的网络流量,包括TCP 和UDP。
透明代理:
tun2socks 实现的是一种透明代理,应用程序不需要进行任何配置,就可以自动使用代理。这是因为它通过TUN 设备劫持了网络流量,并将其转发到代理服务器。