pfSense plus配置Clash透明代理

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核心的客户端程序(如:ClashNClash 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运行状况。

检查服务端口:

运行以下命令,检查服务端口是否启用

netstat -f inet -na | grep -i LISTEN

如果服务启用正常,会显示以下内容:

root@opn:~ # netstat -f inet -na | grep -i LISTEN
tcp46 0 0 *.7890 *.* LISTEN 
tcp46 0 0 *.9090 *.* LISTEN

启动、停止或重启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 -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

不添加该选项,youtuberedditgoogle等网站可能将无法访问。

5、上游代理设置

转到Remote Cache选项卡,添加Clash代理信息。主机名输入127.0.0.1,端口输入clash的默认端口7890或配置文件指定的端口。

6、测试

点击右上角重启服务图标,重启squid服务。客户端禁用代理服务器设置,访问google、youtube等网站,检查透明代理设置是否正确。

经实际测试,与直接代理相比,使用squid代理后速度影响基本可以忽略。根据硬件配置的不同,会稍微增加CPU 5%-10%的使用率。

总结

通过在pfSense中启用Clash,并设置透明代理服务,用户可以轻松绕过网络限制并保护隐私。

附件:

clash-for-pfSense

相关文章:

评论

  1. vincentmli
    1 月前
    2024-4-24 4:19:49

    您好,您对防火墙经年丰富,如何和您取得直接联系,我fork ipfire https://github.com/vincentmli/BPFire/tree/bpfire, 我们可以互相分享一些防火墙方面的知识

  2. 博主
    1 月前
    2024-4-24 10:48:41

    我对linux不太熟悉,帮不上忙。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇