HEV

High-performance tun2socks

· hev

HevSocks5Tunnel 是一个高性能、低开销的tun2socks开源实现,采用C语言编写、基于知名的轻量级用户态网络协议栈LwIP以及协程化IO调度处理技术。当前支持 Linux、Android、FreeBSD、macOS和iOS系统。与其它开源的tun2socks实现比较,目前的结果是传输速度更快,同时CPU、内存资源使用也比较少,运行稳定、可靠。

项目地址: https://github.com/heiher/hev-socks5-tunnel

功能

  1. IPv4/IPv6 双栈。
  2. 支持重定向 TCP 连接。
  3. 支持重定向 UDP 报文。(Fullcone NAT,UDP over TCP/UDP)

性能

详细信息

传输速率

CPU使用率

内存使用量

用法

Linux系统

  1. 配置运行

配置文件:

tunnel:
  name: tun0
  mtu: 9000
  multi-queue: true
  ipv4: '198.18.0.1'
  ipv6: 'fc00::1'

socks5:
   port: 1080         # socks5服务器端口
   address: 127.0.0.1 # socks5服务器地址

运行:

sudo hev-socks5-tunnel conf.yml
  1. 避免环路

避免环路的目的是防止配置在全局默认路由模式时,所有流量都进入虚拟网卡,这其中也包括了tun2socks程序自身访问Socks5服务器端的流量,从而造成环路死锁。最简单的避免方法是给Socks5服务端地址增加一个比默认路由更高优先的路由规则。

IPv4:

sudo ip route add SOCKS5-ADDRESS dev INTERNET-IFACE metric 10

IPv6:

sudo ip -6 route add SOCKS5-ADDRESS dev INTERNET-IFACE metric 10
  1. 策略路由

全局模式:

全局模式除了tun2socks程序访问Socks5服务器端的流量外,其余所有TCP、UDP流量都通过tun2socks程序创建的虚拟网卡,通过Socks5服务器端代理访问。

# IPv4

sudo ip route add default dev tun0 metric 20

# IPv6
sudo ip -6 route add default dev tun0 metric 20

规则模式:

规则模式是仅让指定的应用进程或指定系统用户下的所有进程通过Socks5代理访问,其余流量仍通过系统默认的通路。此处仅以指定系统用户下进程示例。

# UID 1用户的进程
sudo ip rule add uidrange 1-1 lookup 100
sudo ip route add default dev tun0 table 100

安卓(Android) VPN参考实现

项目地址: https://github.com/heiher/sockstun