tun2socks (tunnel to socks) 是一种将隧道 流量转发到socks代理的工具,通常可以用来进行全局流量代理,也可以配合路由表设置,进行一些特定网段的流量代理。由于tun2socks跨平台的特点,也完美支持freebsd。本文介绍在pfSense、OPNsense当中配置tun2socks,实现透明代理的方法。
前提条件:参考下面的教程配置好socks代理,并确保socks代理能正常使用。
- pfSense、OPNsense配置v2ray教程
- pfSense、OPNsense配置trojan-go教程
- pfSense、OPNsense配置Xray代理教程
- pfSense、OPNsense配置Clash代理教程
- pfSense、OPNsense配置sing-box代理教程
- pfSense、OPNsense配置hysteria2代理教程
pfSense
安装tun2socks
pfSense的tun2socks控制界面
修改配置
转到代理面板>Tun2Socks,根据clash或sin-box代理配置参数,修改tun2socks的默认配置并保存。
添加接口
在Web界面启动tun2socks,并激活tun接口。然后转到接口>分配,添加tun接口,启用并设置IP和网关。注意分配IP和网关不要与现有任何接口地址冲突。
添加规则
设置分流规则,让国外IP走tun接口,国内IP走默认网关。转到防火墙>别名管理,网址选项卡,点击右下角添加按钮,添加国内IP段更新网址。
转到防火墙>规则策略,LAN选项卡,修改LAN接口默认规则,国内IP走默认网关,目标选中主机名别名CN_IP,网关为默认网关。
添加另一条国外IP走透明网关的分流规则,源LAN子网,目标any。
网关选tun网关。
设置完成,点击保存。LAN接口规则如下图所示:
开机自启
在Shellcmd插件里,添加一条开机启动命令“service tun2socks start”,注意Shellcmd类型选“earlyshellcmd”,必须早于网络启动前启动tun2socks,否则tun接口将不起作用。
检查测试
配置完成以后,重启防火墙,测试是否能正常访问google、youtube等网站,访问ip111.cn,检查分流是否正常。
OPNsense
安装tun2socks
请参阅以下教程:
安装完成如下图所示:
OPNsense的tun2socks控制界面
修改配置
转到代理面板>Tun2Socks,根据clash或sin-box代理配置参数,修改tun2socks的默认配置并保存。
添加接口
在web控制界面修改配置,然后启动tun2socks,激活tun接口。转到接口>分配,添加tun接口,启用并配置静态IP和网关。注意分配IP和网关不能与现有任何接口地址冲突。
添加网关,在添加完成以后,注意回到接口设置,选中新添加的网关。
添加规则
设置分流规则,让国外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策略路由的问题,经过测试是需要的。如果不做策略路由,很多国外网站会打不开,访问不稳定。
附件下载
pfSense Proxy Suite
请问下如果clash已经做好了分流,这个最后一步的的分流还需要做嘛,会不会有些重复?
你可以试一试,不做策略路由访问是否正常。