Clash(现在使用mihomo替代)是一款功能强大的跨平台代理工具,主要用于管理代理规则和流量分流。支持多种代理协议(如 HTTP(S)、SOCKS5、Shadowsocks、VMess等)。提供灵活的规则分流功能,可根据域名、IP和GeoIP分流流量。支持YAML配置文件,易于配置和扩展。
Sing-Box是一款更现代化的代理工具,支持多种代理协议(如Shadowsocks、VMess、Trojan、HTTP(S) 等)。内置流量转发和复杂规则匹配功能。提供插件化设计,可扩展功能(如DNS、路由等)。
MosDNS是一款高性能的DNS解析工具,专注于解决DNS劫持、分流和缓存问题。支持多上游DNS查询,按规则分流。提供DNS-over-HTTPS (DoH)、DNS-over-TLS (DoT) 等加密查询支持。内置缓存功能,提高DNS解析效率。支持复杂的过滤和规则匹配,用于屏蔽广告或定向解析。可与Clash或Sing-Box集成,实现流量分流的DNS 解析。
Tun2Socks是一个将TUN虚拟网络接口流量转发到SOCKS5代理的工具,常用于透明代理场景。捕获来自操作系统或容器的流量,转发TCP和UDP流量到指定的 SOCKS5 代理。支持IPv4和IPv6。可以与Clash或Sing-Box一起使用,用于实现透明代理。
这四者常常配合使用,Clash和Sing-Box提供代理服务和规则管理,MosDNS解决DNS解析问题,而Tun2Socks则完成透明代理的流量转发,组成一个完整的代理与流量管理解决方案。
本教程介绍如何在OPNsense上安装代理全家桶,包括Clash、Sing-Box、MosDNS和Tun2Socks。通过该教程,将能轻松搭建一个功能强大的网络代理环境。
环境要求
- 设备已安装OPNsense
- 防火墙上开启ssh访问
- 在安装配置之前,请先做好系统备份
- 经过测试的Clash、Sing-Box、MosDNS和Tun2Socks的配置文件
安装脚本
一键安装脚本,简化安装过程。脚本特点:
- 自动添加菜单
- 自动添加各种服务
- clash添加本地订阅转换功能
- 系统重置或升级插件功能保留
- 带Web控制程序,方便修改添加配置、控制代理启停和查看运行日志
程序说明
clash使用mihomo代替,sing-box自行编译,MosDNS和Tun2Socks使用github上发布的最新版本。
安装步骤
1.安装全家桶
下载附件并解压缩,然后将文件目录复制到防火墙,进入程序目录,执行以下脚本:
sh install.sh
脚本运行过程如下图所示:
2.修改配置
重启防火墙,进入入Web界面,导航到服务>代理面板菜单,在对应程序模块输入配置并保存,然后点击启动按钮,根据日志信息排查配置问题。
3.配置代理
代理配置的详细过程请参阅以下文章:
4.开机自启
OPNsense不需要设置开机自启脚本,系统会根据rc.d脚本自动启动程序。tun2socks因为要在网络启动之前启动,安装脚本在以下位置添加了一个启动项:
/usr/local/etc/rc.syshook.d/early
考虑有些版本的OPNsense开机后不能自动启用tun的虚拟网卡,在以下位置添加了一个虚拟机网卡启用脚本。
/usr/local/etc/rc.syshook.d/start/96-tun_if_up
如果你的虚拟网卡存在不能自动启用的问题,请修改该脚本中的虚拟网卡名称。
5.系统服务
安装脚本已自动将程序添加为系统服务,可以在系统>诊断>服务处查看并控制。也可以在仪表盘添加服务部件进行查看。
客户端设置
Windows系统按以下方法添加http和socks代理:点击左下角搜索图标,输入“代理服务器设置”,点击打开,选择手动设置代理,然后按下图设置即可。
1.http代理
2.socks代理
设好代理并保存以后,测试是否能正常访问google、youtube等网站,访问ip111.cn,检查分流设置是否正常。
透明代理
在pfSense、OPNsense防火墙上实现透明代理的方法请参阅以下文章:
注意事项
- 如果遇到问题,建议查看相关程序的服务日志来进行排查。
- 禁止某个代理程序开机自启,只需修改/etc/rc.conf,将启动项设置为NO即可。
- 系统升级或重置后,可能需要恢复/etc/rc.conf备份,或者重新执行安装脚本安装。
- 根据需要调整clash的config.yaml或sing-box的config.json配置,以满足代理需求。
- 受防火墙安全机制影响,从WAN接口访问时无法控制代理的启停,以及查看日志,除非使用VPN类应用。
最近也在弄opnsense 在家里搞着玩 一直在看你的教程
希望对你有所帮助,也欢迎提出意见!
Netbird出了opnsense插件,可以出个使用教程
https://github.com/netbirdio/netbird/issues/2200