本文将带你从零开始,快速完成基于 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服务端:
下载并解压 FRP 服务端(以 Linux 为例)
访问 FRP 的 Releases 页面下载对应版本并解压(示例为 v0.65.0 或更高)。编写 frps.toml 配置文件(示例)
将以下内容写入frps.toml,并根据实际需求调整端口与 token:bindPort = 7000 # 客户端连接端口(frpc 连接到此端口) vhostHTTPPort = 8080 # HTTP 映射的公网访问端口(可选) # 建议设置 auth.token 为复杂字符串,防止未授权连接 auth.token = "你的复杂密匙"启动 frps(示例)
在服务端目录运行:./frps -c frps.toml- 推荐使用 systemd 或类似进程管理工具把 frps 设为服务以便开机自启与日志管理。
- 确保云服务器安全组、防火墙已放行
bindPort(本例为 7000)以及你需要的 HTTP/TCP 端口(例如 8080、其他映射端口)。
(可选)在服务端支持 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)
下载与安装 Mole
前往 Mole 的 Release 页面下载适合你系统的安装包并安装或解压。基础连接设置(在 Mole 配置界面中):
- 服务器地址:填入云服务器的公网 IP(或域名)
- 服务器端口:填入
7000(须与服务端bindPort一致) - Token:填入服务端
auth.token中的值
添加代理规则(在 Mole 中新增条目)
- HTTP/HTTPS(适用于网站)
- 类型:HTTP/HTTPS
- 本地端口(Local Port):你内网 Web 服务运行的端口(例如 80、8080)
- 自定义域名(如果使用域名映射)
- TCP/UDP(适用于 SSH、RDP、任意 TCP 服务或 UDP 服务)
- 类型:TCP 或 UDP
- 本地端口:内网服务监听端口(例如 SSH 的 22)
- 远程端口:映射到 frps 的公网可访问端口(如果不使用随机端口,可指定)
- HTTP/HTTPS(适用于网站)
保存配置:点击 Mole 配置界面上的 “保存” 按钮,注意需要重新连接才能加载最新配置。
可选:查看并编辑 frpc 配置
- Mole 会在用户目录下解压 frpc 二进制并生成配置文件,若需要可手动修改后测试。
🚀 第三步:开启穿透服务
- 一键启动:在 Mole 控制页面点击 “启动” 按钮。
- 状态验证:在 Mole 的日志区域观察输出,若显示
start proxy success或类似成功信息,表示连接已建立。 - 静默运行:关闭主窗口后,程序会缩至系统托盘继续运行(避免误关闭导致穿透中断)。
❓ 常见问题排查(FAQ)
| 问题现象 | 解决方案 |
|---|---|
| 连接服务器失败 | 1. 检查云服务器安全组/防火墙是否放行 7000(bindPort)及所需映射端口。2. 检查服务端与客户端的 token 是否完全一致(注意空格/换行)。 |
| 如何查看底层报错 | 在 Mole 的 “日志” 页面可查看 frpc 的原生输出;也可到用户目录找到 frpc 的日志或手动运行 frpc 查看控制台输出。 |
| 如何手动验证 | Mole 会在用户目录下生成 frpc 二进制和配置文件,你可以进入该目录手动运行 ./frpc -c frpc.toml(或对应配置文件)进行调试。 |
| 是否支持自启动 | Mole 目前不支持系统开机自启,但支持软件启动后自动启动配置好的 frpc 服务(请在 Mole 设置中查看相关选项)。 |
🔗 相关资源
- 项目源码(示例):littletow/mole-go
- FRP Releases(下载 frps/frpc):fatedier/frp
- Mole Releases(下载桌面客户端):littletow/mole-go
- 云服务器:阿里云 - 专享特惠
- 云服务器:腾讯云 - 专享特惠
💡 小贴士
- 强烈建议设置复杂的
auth.token并妥善保管,避免被未授权的 frpc 连接。 - 在生产环境中,将 frps 配置为 systemd 服务以便可靠运行并自动重启。
- 使用基于域名的 HTTP 映射时,请确保 DNS 指向你的 frps 公网 IP,或在 vhost 配置上使用正确的域名。
- 如果你觉得 Mole 客户端对你有帮助,欢迎前往 GitHub 为项目点个 Star ⭐,或在 Issues 中提交建议和问题。