High-performance tun2socks
·
hev
HevSocks5Tunnel 是一个高性能、低开销的tun2socks开源实现,采用C语言编写、基于知名的轻量级用户态网络协议栈LwIP以及协程化IO调度处理技术。当前支持 Linux、Android、FreeBSD、macOS和iOS系统。与其它开源的tun2socks实现比较,目前的结果是传输速度更快,同时CPU、内存资源使用也比较少,运行稳定、可靠。
项目地址: https://github.com/heiher/hev-socks5-tunnel
功能
- IPv4/IPv6 双栈。
- 支持重定向 TCP 连接。
- 支持重定向 UDP 报文。(Fullcone NAT,UDP over TCP/UDP)
性能
传输速率
CPU使用率
内存使用量
用法
Linux系统
- 配置运行
配置文件:
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
- 避免环路
避免环路的目的是防止配置在全局默认路由模式时,所有流量都进入虚拟网卡,这其中也包括了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
- 策略路由
全局模式:
全局模式除了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