本文将带你从零开始,快速完成基于 Mole 的内网穿透服务部署,包含服务端 (frps) 与桌面客户端 (Mole/frpc) 的配置与排查要点。


📖 核心概念

  • 什么是 FRP?
    FRP (Fast Reverse Proxy) 是一款高性能的反向代理/内网穿透工具,它通过在公网服务器和内网客户端之间建立隧道,使外网可以访问内网服务(如 NAS、树莓派、开发环境等)。

  • 什么是 Mole?
    Mole 是一款基于 wails3 开发的 FRP 桌面客户端,提供图形化管理界面,简化 frpc 的配置与使用:

    • 告别繁琐命令行
    • 支持系统托盘常驻,防止误关窗口导致中断
    • 支持 HTTP/HTTPS、TCP、UDP 等多种协议

🛠️ 部署前准备

  • 一台拥有公网 IP 的低配云服务器(例如1核1G内存的阿里云腾讯云等)
  • FRP 服务端(frps)与客户端(frpc)二进制文件,建议使用 FRP Releases 的 v0.65.0 或更高版本
  • Mole 桌面客户端安装包(对应你操作系统的版本)
  • 基本网络与防火墙管理权限

1. 服务端配置(frps)

在拥有公网IP的云服务器上部署frps服务端:

  1. 下载并解压 FRP 服务端(以 Linux 为例)
    访问 FRP 的 Releases 页面下载对应版本并解压(示例为 v0.65.0 或更高)。

  2. 编写 frps.toml 配置文件(示例)
    将以下内容写入 frps.toml,并根据实际需求调整端口与 token:

    bindPort = 7000           # 客户端连接端口(frpc 连接到此端口)
    vhostHTTPPort = 8080      # HTTP 映射的公网访问端口(可选)
    # 建议设置 auth.token 为复杂字符串,防止未授权连接
    auth.token = "你的复杂密匙"
    
  3. 启动 frps(示例)
    在服务端目录运行:

    ./frps -c frps.toml
    
    • 推荐使用 systemd 或类似进程管理工具把 frps 设为服务以便开机自启与日志管理。
    • 确保云服务器安全组、防火墙已放行 bindPort(本例为 7000)以及你需要的 HTTP/TCP 端口(例如 8080、其他映射端口)。
  4. (可选)在服务端支持 HTTPS(使用nginx或者caddy反向代理)
    推荐做法:在服务器上使用 nginx 或 Caddy 负责 HTTPS(推荐),nginx/Caddy 监听 443,反向代理到 frps 的 vhostHTTPPort(例如 8080)。

    • Caddy配置:

       example.com {
          reverse_proxy 127.0.0.1:8080
       }
      
    • Nginx配置:

       server {
          listen 80;
          server_name example.com;
          # 可直接重定向到 https
          return 301 https://$host$request_uri;
       }
      
       server {
          listen 443 ssl http2;
          server_name example.com;
      
          ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
          ssl_protocols TLSv1.2 TLSv1.3;
          ssl_prefer_server_ciphers off;
      
          location / {
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_pass http://127.0.0.1:8080;  # 转发到 frps 的 vhostHTTPPort
          }
       }
      

      Caddy 会自动为 example.com 获取并续期 Let’s Encrypt 证书(默认),配置极简,推荐用于快速部署。如果已经有Nginx环境,使用Nginx也是一个不错选择,它性能极高。

      使用HTTPS的工作原理:外部客户端访问 https://example.com -> nginx/Caddy 在服务器上完成 TLS -> 将解密后的 HTTP 请求以带 Host 头的形式代理到 frps 的 vhostHTTPPort -> frps 根据 Host(Host=example.com)将请求转发到对应 frpc(在内网的客户端)。

      它的好处是域名证书管理集中(nginx/Caddy 或 Caddy 自动化)、支持 HTTP/2、性能高、能在边缘添加 WAF、缓存、访问控制等。


2. 客户端配置(Mole / frpc)

  1. 下载与安装 Mole
    前往 Mole 的 Release 页面下载适合你系统的安装包并安装或解压。

  2. 基础连接设置(在 Mole 配置界面中):

    • 服务器地址:填入云服务器的公网 IP(或域名)
    • 服务器端口:填入 7000(须与服务端 bindPort 一致)
    • Token:填入服务端 auth.token 中的值
  3. 添加代理规则(在 Mole 中新增条目)

    • HTTP/HTTPS(适用于网站)
      • 类型:HTTP/HTTPS
      • 本地端口(Local Port):你内网 Web 服务运行的端口(例如 80、8080)
      • 自定义域名(如果使用域名映射)
    • TCP/UDP(适用于 SSH、RDP、任意 TCP 服务或 UDP 服务)
      • 类型:TCP 或 UDP
      • 本地端口:内网服务监听端口(例如 SSH 的 22)
      • 远程端口:映射到 frps 的公网可访问端口(如果不使用随机端口,可指定)
  4. 保存配置:点击 Mole 配置界面上的 “保存” 按钮,注意需要重新连接才能加载最新配置。

  5. 可选:查看并编辑 frpc 配置

    • Mole 会在用户目录下解压 frpc 二进制并生成配置文件,若需要可手动修改后测试。

🚀 第三步:开启穿透服务

  1. 一键启动:在 Mole 控制页面点击 “启动” 按钮。
  2. 状态验证:在 Mole 的日志区域观察输出,若显示 start proxy success 或类似成功信息,表示连接已建立。
  3. 静默运行:关闭主窗口后,程序会缩至系统托盘继续运行(避免误关闭导致穿透中断)。

❓ 常见问题排查(FAQ)

问题现象解决方案
连接服务器失败1. 检查云服务器安全组/防火墙是否放行 7000(bindPort)及所需映射端口。2. 检查服务端与客户端的 token 是否完全一致(注意空格/换行)。
如何查看底层报错在 Mole 的 “日志” 页面可查看 frpc 的原生输出;也可到用户目录找到 frpc 的日志或手动运行 frpc 查看控制台输出。
如何手动验证Mole 会在用户目录下生成 frpc 二进制和配置文件,你可以进入该目录手动运行 ./frpc -c frpc.toml(或对应配置文件)进行调试。
是否支持自启动Mole 目前不支持系统开机自启,但支持软件启动后自动启动配置好的 frpc 服务(请在 Mole 设置中查看相关选项)。

🔗 相关资源


💡 小贴士

  • 强烈建议设置复杂的 auth.token 并妥善保管,避免被未授权的 frpc 连接。
  • 在生产环境中,将 frps 配置为 systemd 服务以便可靠运行并自动重启。
  • 使用基于域名的 HTTP 映射时,请确保 DNS 指向你的 frps 公网 IP,或在 vhost 配置上使用正确的域名。
  • 如果你觉得 Mole 客户端对你有帮助,欢迎前往 GitHub 为项目点个 Star ⭐,或在 Issues 中提交建议和问题。