You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

3.9 KiB

tun2socks

GitHub Workflow Go Version Go Report GitHub License Total Lines Releases

English | 简体中文

什么是 tun2socks ?

tun2socks是一个用来将网络层的TCP/UDP(包括IPv4IPv6)流量套接字化的应用。它实现了一个TUN虚拟网卡接口,可以把所有到来的TCP/UDP包处理并转发给SOCKS服务器。

为什么使用 tun2socks ?

通过在主机上运行tun2socks,可以轻松地接管所有的TCP/UDP流量,同时提供诸多专业的功能特性,这包括:

  • 强制使不支持代理的程序走代理
  • 结合Clash、V2Ray等代理后端实现全局科学上网
  • 结合Burp、Charles等工具进行应用层数据的调试
  • 结合DHCP、CoreDNS等应用部署路由模式代理局域网流量

特性介绍

  • ICMP 回应 / IPv6 支持 / Socks5 和 SS 代理支持
  • SO_BINDTODEVICE & SO_MARK 套接字选项支持
  • 适用于游戏加速,针对UDP流量传输的专门优化
  • 纯 Go 实现,不再需要 CGO,提升了稳定性
  • 路由模式,可以用来转发及代理局域网内所有流量
  • 核心由 gVisor 强力驱动的 TCP/IP 网络栈
  • 超过 2.5Gbps 的带宽吞吐量(v1 版本的10x倍以上)

硬件需求

目标 最小 建议
系统 Linux MacOS Freebsd OpenBSD Windows Linux or MacOS
内存 >20MB >128MB
架构 AMD64(x86_64) ARM64 AMD64 with AES-NI & AVX2

使用文档

文档以及使用方式,请看 Github Wiki

源码编译

由于 tun2socks 是基于 gVisor 的 TCP/IP 栈,所以目前只支持 x86_64 和 ARM64 架构。以后其他的架构的支持取决于 gVisor。

环境依赖

确保安装了以下环境:

  • Go 1.15+

开始编译

编译以及安装 tun2socks 二进制文件:

make tun2socks
sudo cp ./bin/tun2socks /usr/local/bin

编译所有架构的二进制文件:

make all-arch

特别感谢

注意事项

  1. 由于采用了纯Go实现,所以这一版本的tun2socks在有大量连接时内存消耗通常较多。如果您的需求对内存消耗极为敏感,请继续使用 v1 版本。
  2. tun2socks只应该专注于将网络层的TCP/UDP流量转发给SOCKS服务器,其他的如DNS(DoH)、DHCP等模块功能应该交由第三方应用实现,所以弃用了DNS模块。
  3. 因为是通过用户空间的网络栈接管所有流量并处理转发,在高吞吐时CPU的使用量会剧增,所以CPU的性能直接与可以达到的最大带宽挂钩。

TODO

  • Windows 支持
  • FreeBSD 支持
  • OpenBSD 支持
  • 自动路由模式