Hev-Socks5-Tunnel是一种将隧道流量转发到socks代理的工具。与tun2socks 相比,Hev-Socks5-Tunnel提供了更高的传输速度,同时降低了CPU和内存资源的使用,确保了运行的稳定性和可靠性。其主要功能包括重定向TCP连接和支持Fullcone NAT的UDP报文重定向,通常可以用来进行全局流量代理,也可以配合路由表设置,进行一些特定网段的流量代理。Hev-Socks5-Tunnel可以跨平台使用,近期作者更新了对freebsd的支持。应网友的要求,本文介绍在pfSense、OPNsense当中配置Hev-Socks5-Tunnel,实现透明代理的方法。
为了简化安装过程,并实现Web控制,Hev-Socks5-Tunnel的安装采用替换全家桶中的tun2socks方式来完成。必须先安装代理全家桶,再安装Hev-Socks5-Tunnel。
注意:全家桶1.0.1已集成Hev-Socks5-Tunnel,可以直接下载安装使用,无需替换安装。
pfSense
安装HST
请参阅pfSense代理全家桶安装教程完成全家桶安装,然后下载附件pfSense的安装包,解压缩后上传到防火墙root目录,进入安装目录,运行以下命令安装Hev-Socks5-Tunnel:
sh install.sh
安装过程如下图所示:
修改配置
转到服务>代理面板>Tun2Socks,根据clash或sin-box代理配置参数,修改tun2socks的默认配置并保存。配置文件包含以下内容:
tunnel: name: tun3000 mtu: 9000 multi-queue: true ipv4: 198.18.0.1 socks5: port: 7891 address: 127.0.0.1 udp: 'udp' pipeline: true misc: log-level: error
multi-queue 选项通常用于多队列(Multi-Queue)模式,它的作用是优化数据包的并发处理,以提高网络吞吐量和降低延迟。
- 提高性能:在高负载环境下,启用multi-queue可以让多个CPU核心同时处理流量,从而减少单线程的瓶颈。
- 降低延迟:多个队列可以并行处理不同的连接,提高数据转发的效率。
- 更好的资源利用:适用于多核 CPU服务器,在多线程环境下能更充分利用系统资源。
pipeline选项用于启用或禁用 SOCKS5 数据流的流水线处理(Pipelining),它的作用是减少SOCKS5协议中的握手延迟,提高数据传输效率。
- 减少延迟:启用后,数据可以在握手完成前提前发送,避免传统SOCKS5需要等待握手完成再传输数据的延迟问题。
- 提升吞吐量:适用于高并发SOCKS5代理场景,尤其是流量较大的应用(如视频流、游戏加速等)。
- 降低CPU负载:减少不必要的握手等待,提高数据处理的连续性。
log-level选项用于确定日志记录的层级,包含debug, info, warn or error四级,记录的日志数量依次减少。为了减少日志的数量,建议使用warn或error选项。
添加接口
在Web界面启动tun2socks,并激活tun接口。然后转到接口>分配,添加“tun3000”接口,启用并设置IP和网关。注意分配IP和网关不能与现有任何接口地址冲突,tun接口IP地址和网关可以为同一地址。
添加规则
设置分流规则,让国外IP走tun接口,国内IP走默认网关。转到防火墙>别名管理,网址选项卡,点击右下角添加按钮,添加国内IP段更新网址。
转到防火墙>规则策略,LAN选项卡,修改LAN接口默认规则,国内IP走默认网关,目标选中主机名别名CN_IP,网关为默认网关。
添加另一条国外IP走透明网关的分流规则,源LAN子网,目标any。
网关选tun网关。
设置完成,点击保存。LAN接口规则如下图所示:
开机自启
在Shellcmd插件里,添加一条开机启动命令“service tun2socks start”,Shellcmd类型选“earlyshellcmd”。
检查测试
配置完成以后,重启防火墙,测试是否能正常访问google、youtube等网站,访问ip111.cn,检查分流是否正常。
OPNsense
安装HST
请参阅OPNsense代理全家桶安装教程完成全家桶安装,然后下载附件OPNsense的安装包,解压缩后上传到防火墙root目录,进入安装目录,运行以下命令安装Hev-Socks5-Tunnel:
sh install.sh
安装过程如下图所示:
修改配置
转到服务>代理面板>Tun2Socks,根据clash或sin-box配置参数,修改tun2socks的默认配置并保存。
注意:默认虚拟网卡名称“tun_3000”不能修改为tun+数字,必须是“tun_”后跟数字,否则在接口分配处不能识别,这点与pfSense不同。
添加接口
在Web界面启动tun2socks,并激活tun接口。然后转到接口>分配,添加“tun_3000”接口,启用并设置静态IP,注意分配IP不能与现有任何接口地址冲突。选中动态网关选项,Hev-Socks5-Tunnel支持动态网关,会自动生成网关,不需要手动设置。
添加规则
设置分流规则,让国外IP走tun接口,国内IP走默认网关。这里需要用到别名,添加别名有两种方法,一种是使用GeoIP,另一种是使用网址表,两者选一即可。
1、添加GeoIP别名
转到防火墙>别名,GeoIP 设置选项卡,在网址栏粘贴下面的链接地址并应用:
https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=fzp4V6mjbTHvbqGj&suffix=zip
转到防火墙>别名,添加一个中国区GeoIP别名。
添加完成并应用后,如下图所示:
2、添加网址表别名
转到防火墙>别名,添加一个别名,类型选URL Table(IPs),刷新(更新)频率根据需要填写,内容直接粘贴下面的地址,然后保存即可。
https://ispip.clang.cn/all_cn_cidr.txt
别名设置完成以后,转到防火墙>规则策略,LAN选项卡,修改默认接口规则。地址族IPv4,协议any,目标CN_IP,网关指定为默认或运营商出口网关。
添加另一条国外IP走透明网关的分流规则。源LAN子网,目标any,网关选tun网关。
设置完成以后,LAN接口规则如下图所示:
开机自启
无需设置。
检查测试
配置完成以后,重启防火墙,测试是否能正常访问google、youtube等网站,访问 ip111.cn,检查分流是否正常。
其他事项
有网友提出,像clash、sing-box等已内置分流配置的代理工具,是否还需要做中国IP策略路由的问题,经过测试是需要的。如果不做策略路由,很多国外网站会打不开,访问不稳定。