Clash是一款强大的本地HTTP/HTTPS/SOCKS代理软件,内置DNS服务器,可以最大限度减少DNS污染,支持DoH/DoT上游DNS。可以基于域、GEOIP、IP-CIDR或进程名称规则将数据包路由到不同目的地。代理组允许用户制定灵活的规则,支持自动回退、负载均衡或基于延迟自动选择远程代理节点。Clash提供了基于FreeBSD平台运行的程序,本文介绍在pfSense plus 23.09.1上配置使用Clash并设置透明代理的方法。
Clash已删库,为了保证后续正常使用,本文使用Clash Meta(mihomo)内核,该内核还在持续更新当中。
前提条件
按正常步骤配置好防火墙,包括DNS、DHCP等,保证防火墙后面的客户端可以正访问网络。
文件准备
本文使用的脚本来源于github,去除了订阅转换等一些不必要的功能。在本群管理程序员帮助下,对pfSense和OPNsense进行了适配。
下载文末附件并解压缩。
1、修改Clash配置文件
从支持Clash Meta核心的客户端程序(如:ClashN、Clash Verge等)导出所使用机场的配置文件,将socks-port: 7891、redir-port: 7892、mixed-port: 7893等删除,如下面所示:
port: 7890
allow-lan: true
mode: rule
log-level: info
unified-delay: true
global-client-fingerprint: chrome
external-controller: '0.0.0.0:9090'
secret: 123456
external-ui: /root/clash/dashboard/public
dns:
enable: true
listen: :5353
ipv6: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
default-nameserver:
- 223.5.5.5
- 8.8.8.8
nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query
fallback:
- https://1.0.0.1/dns-query
- tls://dns.google
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
proxies:
......
allow-lan参数设置为true,以允许防火墙的客户端使用代理。为了使用Clash面板,需要设置面板访问地址、安全密钥和路径。DNS监听端口修改为其他端口,避免与防火墙DNS解析器或转发器使用的默认端口53冲突。
将导出的文件改名为config.yaml,放入下载附件的conf目录。
如果有海外VPS,推荐使用Sing-box一键四协议共存脚本,能直接提供clash.meta核心使用的Clash配置文件。
2、上传文件
将附件clash目录整体复制到防火墙root目录下。
3、安装脚本运行环境
进入 shell环境,安装bash、sudo、zsh程序。
pkg install bash pkg install sudo
zsh需要安装对应平台的版本:
pfSense plus 23.09平台为freebsd 14,pfsense plus 24.03平台为freebsd 15,可以在仪表大厅的系统信息上查看版本。
根据pfSense不同版本,执行以下命令安装zsh程序:
pkg add https://pkg.freebsd.org/FreeBSD:14:amd64/latest/All/zsh-5.9_4.pkg pkg add https://pkg.freebsd.org/FreeBSD:15:amd64/latest/All/zsh-5.9_4.pkg
启动脚本
进入程序运行目录:
cd clash
运行以下命令启动Clash(如果提示命令出错,请重启一下防火墙让安装的程序命令生效。):
sudo bash start.sh
程序运行日志存储在/root/clash/conf/clash.log文件中,查看日志文件可以帮助了解Clash运行状况。
启动、停止或重启Clash:
1、启动Clash:
sh /usr/local/etc/rc.d/clash start
2、停止Clash:
sh /usr/local/etc/rc.d/clash stop
3、重启Clash:
sh /usr/local/etc/rc.d/clash restart
4、查看状态:
sh /usr/local/etc/rc.d/clash status
5、实时调试( 必须先停止clash):
/root/clash/bin/clash -f /root/clash/conf/config.yaml -d /root/clash/conf
注意:脚本运行一次后,已具备开机自启功能,无需再添加其他开机启动命令。
管理面板
管理面板访问地址:http://LAN地址:9090/ui,默认安全密钥为123456,可以修改/root/clash/.env的默认值来更改密钥。如果留空,系统会在脚本每一次运行时自动生成复杂的密钥。
测试代理
客户端开启代理服务器,代理地址为防火墙的LAN IP地址,默认端口7890。
访问google或youtube,测试代理是否正常。可以打开ipaddress.my网站查看代理地址。
透明代理
配置squid透明代理选项,让客户端无需任何设置即可正常访问所有网站。
安装Squid插件
导航到系统>插件管理 ,点击squid软件包右侧安装按钮进行安装。
添加证书
配置https透明代理需要验证防火墙CA。导航到系统>证书管理,添加一个CAs,如下图所示。
添加完成如下图所示:
配置Squid
导航到服务>Proxy Seriver,Local Cache选项卡,根据防火墙硬件配置设置好代理所需的本地缓存。如果没有缓存内容的需求,也可以直接禁用缓存,如下图所示。
1、常规设置
转到General选项卡,按照下图配置常规选项。选中Allow Users on Interface选项,不用再设置ACL的接口子网。
2、透明代理设置
选中透明HTTPS代理选项,接口选LAN,其他选项默认或留空。
3、SSL过滤设置
选中SSL过滤选项,SSL/MITM模式选Splice All,其他选项客户端需导入CA。验证CA选中前面添加的CA,其他选项保持默认或参照下图进行设置。
4、高级功能
打开显示高级功能,在自定义选项(认证前)栏里,输入以下内容:
never_direct allow all ssl_bump peek step2 ssl_bump peek step3
不添加该选项,youtube、reddit、google等网站可能将无法访问。
5、上游代理设置
转到Remote Cache选项卡,添加Clash代理信息。主机名输入127.0.0.1,端口输入clash的默认端口7890或配置文件指定的端口。
6、测试
点击右上角重启服务图标,重启squid服务。客户端禁用代理服务器设置,访问google、youtube等网站,检查透明代理设置是否正确。
经实际测试,与直接代理相比,使用squid代理后速度影响基本可以忽略。根据硬件配置的不同,会稍微增加CPU 5%-10%的使用率。
总结
通过在pfSense中启用Clash,并设置透明代理服务,用户可以轻松绕过网络限制并保护隐私。
附件:点我下载
相关文章:
您好,您对防火墙经年丰富,如何和您取得直接联系,我fork ipfire https://github.com/vincentmli/BPFire/tree/bpfire, 我们可以互相分享一些防火墙方面的知识
我对linux不太熟悉,帮不上忙。