pfSense、OPNsense配置Clash代理教程

Clash一款强大的本地HTTP/HTTPS/SOCKS代理软件,内置DNS服务器,可以最大限度减少DNS污染,支持DoH/DoT上游DNS。可以基于域、GEOIP、IP-CIDR或进程名称规则将数据包路由到不同目的地。代理组允许用户制定灵活的规则,支持自动回退、负载均衡或基于延迟自动选择远程代理节点。Clash提供了基于Freebsd平台运行的程序,本文介绍在pfSense和OPNsense上安装Clash并设置透明代理的方法。

本教程所使用的防火墙为pfSense plus 24.03和OPNsense24.7_1。在配置clash之前,请先按正常步骤配置防火墙,确保各项功能正常使用。

本文使用Clash Meta(mihomo)内核代理clash,该内核还在持续更新当中。为简化安装配置过程,我制作了安装脚本,只需修改配置即可快速部署。

修改配置

下载文末附件并解压缩,修改config.yaml配置。从支持Clash Meta核心的客户端程序(如:ClashNClash Verge等)导出所使用机场的配置文件,保留http和socks代理端口设置,如下图所示:

port: 7890
socks-port: 7891
allow-lan: true
mode: rule
ipv6: true
log-level: info
unified-delay: true
global-client-fingerprint: chrome
external-controller: '0.0.0.0:9090'
external-ui: /usr/local/etc/clash/ui
external_ui_download_url: 'https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip'
external_ui_download_detour: 'proxy'
secret: 123456
dns:
enable: true
listen: :53
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仪表面板,需要设置仪表面板访问地址、下载地址和安全密钥。如果想使用OPNsense的Unbound DNS进行DNS查询(阻止黑名单功能),可以将default-nameserver项设置为127.0.0.1。

如果有海外VPS,推荐使用Sing-box一键四协议共存脚本,能直接提供clash.meta核心使用的Clash配置文件。

安装clash

1、运行安装脚本

将配置文件修改好以后,使用finalShell将文件复制到防火墙,进入程序所在目录,运行以下命令:

sh install.sh

运行后如下图所示:

2、手动调试

使用以下命令进行手动调试,测试配置文件,并下载clash运行所需要的其他文件。

/usr/local/bin/clash -d /usr/local/etc/clash

3、启动clash

手动调试没有问题后,运行以下命令启动clash服务。

service clash  start

4、检查服务端口

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

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

5、启动、停止、重启、查看Clash状态

service clash start
service clash stop
service clash restart
service clash status

注意,附件提供的mihomo版本为mihomo-freebsd-amd64-v1.18.8.gz,如果出现这个提示:“This program can only be run on AMD64 processors with v3 microarchitecture support”,请下载mihomo-freebsd-amd64-compatible-v1.18.8.gz进行替换。

开机自启

1、pfSense

安装shellcmd插件,添加一条开机启动shellcmd命令:

service clash start

2、Opnsense

安装脚本已包含开机自启命令,无需再设置。

仪表面板

如果config.yaml当中包括了clash仪表面板的设置信息,在程序运行以后,就可以通过仪表面板查看代理连接信息。

仪表面板访问地址:http://LAN地址:9090/ui,默认安全密钥为123456,可以修改config.yaml中“secret”的值进行更改。

测试代理

Windows系统按以下方法添加http代理:点击左下角搜索图标,输入“代理服务器设置”,点击打开,选择手动设置代理,http代理按下图设置:

socks代理按下图设置:

设好代理并保存以后,测试是否能正常访问google、youtube等网站,访问ip111.cn,检查分流设置是否正常。

透明代理

由于mihomo在freebsd中未提供对tun的完全支持,在pfSense、OPNsense防火墙上实现透明代理只有采用其他办法。目前有两种方法,一种是使用系统自带插件Squid来实现,请参阅 pfSense、OPNsense配置http透明代理教程;另一种方法通过tun2socks实现,请参阅 pfSense、OPNsense配置tun2socks(socks透明代理)

附件下载

clash for pfSense and OPNsense

clash for OPNsense(插件版)

clash for OPNsense(带订阅功能)

相关文章:

评论

  1. 1510m
    2 年前
    2023-3-18 22:40:10

    我的clash for windows配置文件中有一句 listen: ‘127.0.0.1:35353’。请问这个应该怎么改?
    —————–
    dns:
    enable: true
    listen: ‘127.0.0.1:35353’
    default-nameserver: [223.5.5.5, 114.114.114.114]
    enhanced-mode: fake-ip
    fake-ip-range: 198.18.0.1/16

    ——————–

    • 1510m
      1510m
      2 年前
      2023-3-19 9:03:51

      解决了,这里不用改。
      注意上边allow-lan: false 改成allow-lan:true

      • Avatar photo
        鉄血男兒
        博主
        1510m
        2 年前
        2023-3-22 12:23:31

        OK

  2. being
    2 年前
    2023-4-22 12:36:25

    外网访问clash的socks代理怎么访问,能出一期教程吗?

    • being
      being
      2 年前
      2023-4-22 16:45:22

      设置透明代理后,无线ap无法访问网络

      • Avatar photo
        鉄血男兒
        博主
        being
        2 年前
        2023-4-23 11:29:57

        有线能访问,无线不能访问,找找无线配置的问题。

  3. luo
    1 年前
    2023-6-23 23:53:36

    配置了透明代理之后内网的设备可以正常透明代理上网,但是防火墙本身不走代理访问网站,博主知道该咋设置吗?

    • Avatar photo
      鉄血男兒
      博主
      luo
      1 年前
      2023-6-25 11:01:00

      目前还没找到办法,也没有这种需求。

  4. lim
    1 年前
    2023-10-16 23:53:29

    如果从clash复制出来config后又自己修改过的话,一定要记得不能有空行!!!!这个插件估计文件检查比较严格,clash客户端或者直接运行clash core的话,config带有空行不影响运行,但是这个插件不行。今天换成clash premium core,一度以为是不支持,结果就是单纯我的config有空行。。。。

    • Avatar photo
      鉄血男兒
      博主
      lim
      1 年前
      2023-10-18 22:36:37

      clash.meta内核没这么讲究。

  5. Avatar photo
    鉄血男兒
    博主
    已编辑
    11 月前
    2023-12-19 9:59:10

    clash已删库,可以使用clash meta(mihomo)内核来替换。

  6. dadada
    8 月前
    2024-4-06 19:53:10

    I can’t find the clash.meta kerne and also Clash script program what do you name it? system proxy? i hope there a tutorial for this on youtube it will be great to have this.

    • Avatar photo
      博主
      dadada
      已编辑
      8 月前
      2024-4-07 11:43:12

      😔

  7. 已编辑
    4 月前
    2024-8-02 18:53:06

    版本
    OPNsense 24.7-amd64
    FreeBSD 14.1-RELEASE-p2
    OpenSSL 3.0.14
    运行安装脚本之后 service clash  start 端口没起来 service clash status 显示没运行
    root@OPN:~/clash # service clash status
    clash is not running.

    • Avatar photo
      博主
      4 月前
      2024-8-03 10:32:28

      检查CLASH配置文件是否正确,你可以运行“/usr/local/bin/clash -d /usr/local/etc/clash”进行测试,看是否能正常跑码

      • 鉄血男兒
        已编辑
        4 月前
        2024-8-03 11:53:05

        回复 This program can only be run on AMD64 processors with v3 microarchitecture support.
        是因为cpu不支持么?CPU为j1900v4

        • 4 月前
          2024-8-03 12:05:47

          OK我找到原因了 是站长下载的内核非兼容版 无法运行起来 替换兼容版mihomo-freebsd-amd64-compatible-v1.18.7.gz
          解决问题

          • 4 月前
            2024-8-03 13:16:08

            出现新问题 配置透明代理完成后启动
            Starting squid.
            CPU Usage: 0.021 seconds = 0.021 user + 0.000 sys
            Maximum Resident Size: 62464 KB
            Page faults with physical i/o: 0
            2024/08/03 05:15:32| Processing Configuration File: /usr/local/etc/squid/squid.conf (depth 0)
            2024/08/03 05:15:32| Starting Authentication on port 127.0.0.1:3128
            2024/08/03 05:15:32| Disabling Authentication on port 127.0.0.1:3128 (interception enabled)
            2024/08/03 05:15:32| Starting Authentication on port [::1]:3128
            2024/08/03 05:15:32| Disabling Authentication on port [::1]:3128 (interception enabled)
            2024/08/03 05:15:32| Starting Authentication on port 127.0.0.1:3129
            2024/08/03 05:15:32| Disabling Authentication on port 127.0.0.1:3129 (interception enabled)
            2024/08/03 05:15:32| Starting Authentication on port [::1]:3129
            2024/08/03 05:15:32| Disabling Authentication on port [::1]:3129 (interception enabled)
            2024/08/03 05:15:32| WARNING: empty ACL: acl bump_nobumpsites ssl::server_name “/usr/local/etc/squid/nobumpsites.acl”
            2024/08/03 05:15:32| Processing Configuration File: /usr/local/etc/squid/pre-auth/40-snmp.conf (depth 1)
            2024/08/03 05:15:32| Processing Configuration File: /usr/local/etc/squid/pre-auth/dummy.conf (depth 1)
            2024/08/03 05:15:32| Processing Configuration File: /usr/local/etc/squid/pre-auth/parentproxy.conf (depth 1)
            2024/08/03 05:15:32| ERROR: ACL not found: Safe_ports
            2024/08/03 05:15:32| Not currently OK to rewrite swap log.
            2024/08/03 05:15:32| storeDirWriteCleanLogs: Operation aborted.
            2024/08/03 05:15:32| FATAL: Bungled /usr/local/etc/squid/squid.conf line 99: http_access deny !Safe_ports !unrestricted
            2024/08/03 05:15:32| Squid Cache (Version 6.10): Terminated abnormally.
            /usr/local/etc/rc.d/squid: WARNING: failed to start squid

          • 4 月前
            2024-8-03 13:27:38

            最新版本
            缺少两条访问控制 才能启动
            /usr/local/etc/squid/squid.conf
            acl Safe_ports port 80
            acl SSL_ports port 443
            启动成功!

          • Avatar photo
            博主
            4 月前
            2024-8-04 11:25:36

            这两条命令,应该可以在正向代理>访问控制列表,允许目标tcp端口处进行添加,教程添加了这一部分内容。

          • 鉄血男兒
            已编辑
            3 月前
            2024-8-12 17:20:17

            尝试按你说的加这两条规则 发现不行 会导致访问任何网站都报ssl错误
            。。。。。
            教程有完善 我再测试一下
            。。。。。。
            再修改 app都能用 就电报不行 奇了怪了

          • Avatar photo
            博主
            3 月前
            2024-8-13 8:48:08

            我测试了是可以的。下面是的我squid.conf的配置。
            #
            # Automatic generated configuration for Squid.
            # Do not edit this file manually.
            #

            # Setup transparent mode listeners on loopback interfaces
            http_port 127.0.0.1:3128 intercept ssl-bump cert=/var/squid/ssl/ca.pem dynamic_cert_mem_cache_size=10MB generate-host-certificates=on
            http_port [::1]:3128 intercept ssl-bump cert=/var/squid/ssl/ca.pem dynamic_cert_mem_cache_size=10MB generate-host-certificates=on
            https_port 127.0.0.1:3129 intercept ssl-bump cert=/var/squid/ssl/ca.pem dynamic_cert_mem_cache_size=10MB generate-host-certificates=on
            https_port [::1]:3129 intercept ssl-bump cert=/var/squid/ssl/ca.pem dynamic_cert_mem_cache_size=10MB generate-host-certificates=on

            # Setup regular listeners configuration
            http_port 192.168.101.250:3128 ssl-bump cert=/var/squid/ssl/ca.pem dynamic_cert_mem_cache_size=10MB generate-host-certificates=on

            # setup ssl re-cert
            sslcrtd_program /usr/local/libexec/squid/security_file_certgen -s /var/squid/ssl_crtd -M 10MB
            sslcrtd_children 25

            tls_outgoing_options options=NO_TLSv1 cipher=HIGH:MEDIUM:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS

            # setup ssl bump acl’s
            acl bump_step1 at_step SslBump1
            acl bump_step2 at_step SslBump2
            acl bump_step3 at_step SslBump3
            acl bump_nobumpsites ssl::server_name “/usr/local/etc/squid/nobumpsites.acl”

            # configure bump
            ssl_bump peek bump_step1 all
            ssl_bump splice all
            ssl_bump peek bump_step2 all
            ssl_bump splice bump_step3 all
            ssl_bump bump

            sslproxy_cert_error deny all

            acl ftp proto FTP
            http_access allow ftp

            # Setup ftp proxy

            # Rules allowing access from your local networks.
            # Generated list of (internal) IP networks from where browsing
            # should be allowed. (Allow interface subnets).
            acl localnet src 192.168.101.0/24 # Possible internal network (interfaces v4)
            # Default allow for local-link and private networks
            acl localnet src fc00::/7 # RFC 4193 local private network range
            acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines

            # ACL – Allow localhost for PURGE cache if enabled

            # ACL lists

            # ACL – Remote fetched Blacklist (remoteblacklist)

            # ACL – Block browser/user-agent – User defined (browser)

            # ACL – SSL ports, default are configured in config.xml
            acl SSL_ports port 443 # https

            # Default Safe ports are now defined in config.xml
            # ACL – Safe_ports
            acl Safe_ports port 80 # http
            acl Safe_ports port 21 # ftp
            acl Safe_ports port 443 # https
            acl Safe_ports port 70 # gopher
            acl Safe_ports port 210 # wais
            acl Safe_ports port 1025-65535 # unregistered ports
            acl Safe_ports port 280 # http-mgmt
            acl Safe_ports port 488 # gss-http
            acl Safe_ports port 591 # filemaker
            acl Safe_ports port 777 # multiling http
            acl CONNECT method CONNECT

            # ICAP SETTINGS
            # disable icap
            icap_enable off

            # Pre-auth plugins
            include /usr/local/etc/squid/pre-auth/*.conf

            # Authentication Settings

            # Google Suite Filter

            # YouTube Filter
            request_header_add YouTube-Restrict moderate

            # Deny requests to certain unsafe ports

            http_access deny !Safe_ports
            # Deny CONNECT to other than secure SSL ports

            http_access deny CONNECT !SSL_ports

            # Only allow cachemgr access from localhost
            http_access allow localhost manager
            http_access deny manager

            # We strongly recommend the following be uncommented to protect innocent
            # web applications running on the proxy server who think the only
            # one who can access services on “localhost” is a local user
            http_access deny to_localhost

            # Auth plugins
            include /usr/local/etc/squid/auth/*.conf

            #
            # Access Permission configuration:
            #
            # Deny request from unauthorized clients

            #
            # ACL – localnet – default these include ranges from selected interfaces (Allow local subnets)
            http_access allow localnet

            # ACL – localhost
            http_access allow localhost

            # Deny all other access to this proxy
            http_access deny all
            # Post-auth plugins
            include /usr/local/etc/squid/post-auth/*.conf

            # Caching settings
            cache deny all
            cache_mem 0

            # Leave coredumps in the first cache dir
            coredump_dir /var/squid/cache

            #
            # Add any of your own refresh_pattern entries above these.
            #

            refresh_pattern ^ftp: 1440 20% 10080
            refresh_pattern ^gopher: 1440 0% 1440
            refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
            refresh_pattern . 0 20% 4320

            # Squid Options
            pinger_enable off
            # Disable access logging
            access_log none

            # Disable cache store log
            cache_store_log none
            # Suppress http version string (default=off)
            httpd_suppress_version_string on
            # URI handling with Whitespaces (default=strip)
            uri_whitespace strip
            # Disable squid logfile rotate to use system defaults
            logfile_rotate 0
            # Define visible hostname
            visible_hostname wall.pfchina.org
            # Define visible email
            cache_mgr [email protected]

            # Set error directory language
            error_directory /usr/local/share/squid-langpack/en

          • 鉄血男兒
            3 月前
            2024-8-13 9:30:55

            使用是可以了 我后面加了分割线
            但是电报不能用 其他能用

          • Avatar photo
            博主
            3 月前
            2024-8-13 10:41:45

            我测试电报可以正常使用,可能是clash配置文件本身的问题。你可以试试sing-box。

          • 鉄血男兒
            3 月前
            2024-8-13 16:43:44

            奇怪了 同配置我在openwrt是可以使用的

  8. 4 月前
    2024-8-07 16:13:52

    是不是可以再写一个脚本定时下载配置,达到订阅更新的目的?

    • Avatar photo
      博主
      PC27149
      3 月前
      2024-8-10 10:48:12

      pfSense可以安装cron插件解决这个问题,OPNsense稍微复杂一点,参考这个就可以:https://gist.github.com/PiDroid-B/078198bc84c1e8451d5fd331b46b332d

  9. tankren
    已编辑
    1 月前
    2024-10-07 17:20:18

    /usr/local/bin/clash -d /usr/local/etc/clash
    重启后这个bin文件和目录全部消失了。。。
    忽略,我的在root下

    • Avatar photo
      博主
      tankren
      1 月前
      2024-10-08 14:25:53

      除非是在线运行模式,否则是不可能出现这种情况的。

发送评论 编辑评论


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