OPNsense代理全家桶安装教程

OPNsense可供使用的代理工具包括Clash、Sing-Box、MosDNS和Tun2Socks,每个工具负责不同功能。

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一起使用,用于实现透明代理。

自1.0.1版本开始,tun2socks更换为hev-socks5-tunnel。

这四者常常配合使用,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.运行脚本

下载附件解压缩,将文件夹复制到防火墙root目录,进入程序目录,运行以下脚本:

sh install.sh

脚本运行过程如下图所示:

2.修改配置

刷新浏览器,让菜单重新生效(1.03版本以后,不需要重启防火墙),进入入Web界面,导航到服务>代理面板菜单,在对应程序模块更新配置并保存,然后点击启动按钮,根据日志信息排查配置问题。

3.配置代理

代理配置请参阅以下文章:

4.开机自启

OPNsense不需要设置开机自启脚本,系统会根据rc.d脚本自动启动程序。tun2socks需要在网络启动之前运行,安装脚本在以下位置添加了一个启动项(1.01版本使用hev-socks-tunnel后无该选项):

/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防火墙上实现透明代理的方法请参阅以下文章:

注意事项

  1. 如果遇到问题,建议查看相关程序的服务日志来进行排查。
  2. 禁止某个代理程序开机自启,只需修改/etc/rc.conf,将启动项设置为NO即可。
  3. 系统升级或重置后,可能需要恢复/etc/rc.conf备份,或者重新执行安装脚本安装。
  4. 根据需要调整clash的config.yaml或sing-box的config.json配置,以满足代理需求。

附件下载

OPNsense Proxy Suite

评论

  1. 月亮之城
    1-13
    2025-1-13 12:25:15

    最近也在弄opnsense 在家里搞着玩 一直在看你的教程

    • Avatar photo
      博主
      月亮之城
      1-14
      2025-1-14 8:26:29

      希望对你有所帮助,也欢迎提出意见!

  2. J
    Jim
    1-18
    2025-1-18 21:01:05

    Netbird出了opnsense插件,可以出个使用教程
    https://github.com/netbirdio/netbird/issues/2200

  3. zjahon
    2-7
    2025-2-07 8:43:53

    之前按博主另外一个教程装了后台带订阅版clash,怎么把他清除干净呢?

    • Avatar photo
      博主
      zjahon
      2-7
      2025-2-07 9:29:23

      删除安装目录即可,其他的会自动覆盖。

  4. inkflaw
    2-28
    2025-2-28 19:01:02

    我给 heiher/hev-socks5-tunnel 的流程在 FreeBSD 上跑通了,但是在 OpnSense 上还不行
    看起来它的性能比 tun2socks 好很多,大佬可以帮忙看看嘛|´・ω・)ノ
    https://github.com/heiher/hev-socks5-tunnel/issues/210#issuecomment-2690314268

    • Avatar photo
      博主
      inkflaw
      已编辑
      3-2
      2025-3-02 12:30:38

      在freebsd上用gmake命令编译了程序,分别在pfSense、OPNsense上进行了测试。在pfSense上运行以后,可以在接口>分配处发现tun3000虚拟网卡的,但是与clash配合,分流测试不成功。在OPNsense上运行以后,不能在接口>分配处找到tun3000虚拟网卡,更改虚拟网卡名称并添加默认路由后,进行分流测试也不成功。只能等作者完善了。

      • inkflaw
        鉄血男兒
        已编辑
        3-12
        2025-3-12 20:58:46

        已经跟开发者一起修好了这个 bug 了
        https://github.com/heiher/hev-socks5-tunnel/issues/210
        附上我的配置文件和 init

        tunnel:
          # Interface name
          name: tun_3000
          # Interface MTU
          mtu: 9000
          # Multi-queue, FreeBSD no support
          multi-queue: false
          # IPv4 address
          ipv4: 198.18.0.1
          # IPv6 address
          ipv6: 'fc00::1'
          # Post up script
        # post-up-script: up.sh
          # Pre down script
        # pre-down-script: down.sh
        
        socks5:
          # Socks5 server port
          port: 7891
          # Socks5 server address (ipv4/ipv6)
          address: 127.0.0.1
          # Socks5 UDP relay mode (tcp|udp)
          udp: 'udp'
          # Socks5 handshake using pipeline mode
        # pipeline: false
          # Socks5 server username
        # username: 'username'
          # Socks5 server password
        # password: 'password'
          # Socket mark
        # mark: 0
        
        #misc:
           # task stack size (bytes)
        #  task-stack-size: 86016
        #  task-stack-size: 36864 # 20480 + tcp-buffer-size
           # tcp buffer size (bytes)
        #  tcp-buffer-size: 65536
        #  tcp-buffer-size: 16384 # 16*1024k
           # connect timeout (ms)
        #  connect-timeout: 5000
           # read-write timeout (ms)
        #  read-write-timeout: 60000
           # stdout, stderr or file-path
        #  log-file: stderr
           # debug, info, warn or error
        #  log-level: warn
           # If present, run as a daemon with this pid file
        #  pid-file: /run/hev-socks5-tunnel.pid
           # If present, set rlimit nofile; else use default value
        #  limit-nofile: 65535
        #!/bin/sh
        
        # PROVIDE: hevsocks5tunnel
        # REQUIRE: NETWORKING
        # KEYWORD: shutdown
        
        . /etc/rc.subr
        
        name="hevsocks5tunnel"
        rcvar="hevsocks5tunnel_enable"
        pidfile="/var/run/${name}.pid"
        logfile="/var/log/${name}.log"
        command="/usr/local/bin/hev-socks5-tunnel"
        command_args="/usr/local/etc/hevsocks5tunnel/config.yaml"
        
        start_cmd="${name}_start"
        stop_cmd="${name}_stop"
        restart_cmd="${name}_restart"
        status_cmd="${name}_status"
        
        
        hevsocks5tunnel_start() {
            if [ -f "$pidfile" ] && kill -0 $(cat "$pidfile") 2>/dev/null; then
                echo "${name} is already running." | tee -a "$logfile"
                return 1
            fi
            ifconfig tun_3000 destroy || true
            ifconfig tun3000 destroy || true
            ifconfig tun3000 create name tun_3000
            #ifconfig hevsocks5 destroy || true
            echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting ${name}..." | tee -a "$logfile"
            nohup ${command} ${command_args} >> "$logfile" 2>&1 &
            echo $! > "$pidfile"
            echo "$(date '+%Y-%m-%d %H:%M:%S') - ${name} started successfully." | tee -a "$logfile"
        }
        
        hevsocks5tunnel_stop() {
            if [ ! -f "$pidfile" ] || ! kill -0 $(cat "$pidfile") 2>/dev/null; then
                echo "${name} is not running." | tee -a "$logfile"
                return 1
            fi
            echo "$(date '+%Y-%m-%d %H:%M:%S') - Stopping ${name}..." | tee -a "$logfile"
            kill $(cat "$pidfile") && rm -f "$pidfile"
            echo "$(date '+%Y-%m-%d %H:%M:%S') - ${name} has stopped." | tee -a "$logfile"
            ifconfig tun_3000 destroy || true
            ifconfig tun3000 destroy || true
        }
        
        hevsocks5tunnel_restart() {
            echo "$(date '+%Y-%m-%d %H:%M:%S') - Restarting ${name}..." | tee -a "$logfile"
            hevsocks5tunnel_stop
            sleep 1
            hevsocks5tunnel_start
        }
        
        hevsocks5tunnel_status() {
            if [ -f "$pidfile" ] && kill -0 $(cat "$pidfile") 2>/dev/null; then
                echo "hevsocks5tunnel is running (PID: $(cat "$pidfile"))."
            else
                echo "hevsocks5tunnel is not running."
            fi
        }
        load_rc_config $name
        run_rc_command "$1"
        • Avatar photo
          博主
          inkflaw
          已编辑
          3-12
          2025-3-12 23:00:08

          配合clash测试成功。安装配置教程:https://pfchina.org/?p=14551

发送评论 编辑评论


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