很多折腾 NAS 和 Mac mini 的朋友都绕不开一个痛点:人在外面,怎么优雅地连回家里的设备?

之前我一直用 Tailscale,虽然小白友好,但缺点也很要命——每台设备都得装客户端。而且SSH反向代理动不动就掉线,这让人很很不方便。

最近被我摸索出了一套更完美的终极方案:FRP 内网穿透。只需一台带公网IP的云服务器,就能在各个设备间建立稳定的私有隧道。SSH、VNC远程桌面、Samba文件共享、甚至OpenClaw控制台,全部一网打尽。今天这篇保姆级实操教程,手把手教你搭建,建议先收藏再看,以防找不到!”

这是一个手把手的教程,涉及的内容比较多,我先给你列一个纲,让你有个大概。

大致原理

它的的底层实现还是基于 SSH 反向代理, 只是做了一些封装,运行更稳定,配置也更简单。用通俗的话说:你的云服务器(带公网IP)就是个“中转站”(frps),你家里的 Mac mini 是“寄件人”(frpc)。寄件人主动和中转站建立了一条秘密通道。你在外面拿笔记本访问中转站的某个端口,中转站就会把数据顺着通道送回你家里的 Mac。对了, FRP 也是一个开源项目,在 github 上已经有接近11W 的星标。今天应用这种方式来试一下。不废话,开干!

前提条件

你需要一台公有云的服务器,并且还需要一个公网地址,FRPS就绑定在这台服务器上。需要需要穿透的服务就运行 FRPC。本文演示的是公有去服务器是一台阿里云ECS服务器,为了文章理解,公有云地址我写一个 mock 地址。

在阿里云服务器上安装与设置 frps

第一步,下载并安装frps

wget 

解压并安装到系统

tar -zxvf frp_0.61.0_linux_amd64.tar.gz
cd frp_0.61.0_linux_amd64
cp frps /usr/local/bin/
mkdir -p /etc/frp
cp frps.toml /etc/frp/

第二步,配置

编辑配置文件:vim /etc/frp/frps.toml

将内容修改为最简配置(建议设置一个 token 增加安全性):

bindPort = 7000        # 服务端端口,Mac 上的 frpc 会连这个
# 强烈建议添加安全密钥,防止别人蹭你的服务器
auth.token = "设置一个你自己的复杂密码"

第三步:设置 Ubuntu 开机自启 (Systemd)

为了让 frps 在服务器重启后自动运行,我们需要创建一个服务文件:

  1. 创建服务文件:vim /etc/systemd/system/frps.service
  2. 粘贴以下内容:
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 启动并设置自启:
systemctl daemon-reload
systemctl enable frps
systemctl start frps
  1. **检查状态:**Bash systemctl status frps

看到 active (running) 说明服务器端已就绪。

图:image

在Macmini上安装与设置frpc

第一步,安装

brew install frpc

几兆的东西,很快就下载完。

frpc -v

能正常打印版本就安装成功了。

第二步,配置

在M芯片里面,Homebrew 安装的 frp 配置文件通常位于:/opt/homebrew/etc/frp/frpc.toml

  1. 使用终端打开配置文件:vim /opt/homebrew/etc/frp/frpc.toml
  2. 参考以下模板进行修改(请根据你的阿里云服务器信息替换内容):
# 基础连接配置
serverAddr = "你的阿里云服务器IP"
serverPort = 7000  # 需与阿里云 frps.toml 中的 bindPort 一致
auth.token = "你的连接密钥" # 如果服务端设置了 token,这里必须填

[[proxies]]
name = "mac-mini-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000  # 远程服务器映射出的端口,记得在阿里云安全组开放此端口`
  1. 设置 macOS 开机启动 Homebrew 提供了非常简便的服务管理工具 brew services

启动并设置为开机自启**:**brew services start frpc

检查运行状态:brew services list

如果看到 frpc 状态为 started(绿色),则表示大功告成。

图:image

在Ubuntu 服务器上安装与设置 frpc

我还有一台本地的 ubuntu 开发服务器,主要用于 Android开发,也需要把里面的服务 ssh 和 samba 服务开放给外网,这样我能在任何时间和地址,只要有网就能访问。设置与 Macmini 设置类似,我简单过一下

第一步:下载并安装 frpc

  1. 登录你的这台 Ubuntu 客户端:
  2. **下载软件包(与服务端相同,包含 frpc 和 frps):**Bash
wget 
tar -zxvf frp_0.61.0_linux_amd64.tar.gz
cd frp_0.61.0_linux_amd64
  1. **安装二进制文件:**Bash
sudo cp frpc /usr/local/bin/
sudo mkdir -p /etc/frp

第二步:配置 frpc.toml

创建并编辑配置文件:sudo vim /etc/frp/frpc.toml

粘贴以下配置(注意修改 name 以免和 Mac mini 冲突):

serverAddr = "111.111.111.111"
serverPort = 7000
auth.token = "你之前在阿里云设置的那个密码"

[[proxies]]
name = "ubtu-smb"
type = "tcp"
localIP = "127.0.0.1"
localPort = 445
remotePort = 4450

第三步:设置开机自启 (Systemd)

这是在 Linux 上实现“开机启动”的标准做法:

  1. 创建服务文件:sudo nano /etc/systemd/system/frpc.service
  2. 粘贴以下内容:
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
  1. 启动并启用服务: sudo systemctl daemon-reload sudo systemctl enable frpc sudo systemctl start frpc

  2. 检查是否成功: sudo systemctl status frpc

图:image

测试

在前面的示例中,我们把 macmini 的 ssh 服务在公网暴露出来了,现在来测试一下你 macmini 的 ssh 服务,在任何一台可以上网的电脑上,使用以下命令即可穿透到你的 Mac Mini:ssh -p 6000 [Mac用户名]@阿里云的地址

如果你要访问 Ubuntu 服务器的 ssh 服务,或者 samba 服务,也通过公网地址加对应的端口,同样也非常方便的访问。

添加其他服务

我们在 macmini 上已经把 ssh 服务开放出去,我这边台 macmini 上还跑了 openclaw,同时我也需要把远程桌面服务暴露到公网,这样方便远程桌面连接,现在我们把openclaw的服务和vnc服务添加进去。 vim /opt/homebrew/etc/frp/frpc.toml

大致如下:

# ---- VNC 远程桌面配置 ----
[[proxies]]
name = "macmini-vnc"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5900        # macOS VNC 默认端口
remotePort = 5900       # 映射到阿里云的端口(建议设为相同,方便记忆)

# ---- OpenClaw / Web 控制台配置 ----
[[proxies]]
name = "macmini-openclaw"
type = "tcp"
localIP = "127.0.0.1"
localPort = 18789        # 请确认你 OpenClash 控制面板的本地端口,通常是 9090 或 7892
remotePort = 18789       # 映射到阿里云的端口,你可以自定义

然后重启服务:

在 Mac 终端执行:brew services restart frpc ,在 Ubuntu 上就执行sudo systemctl restart frpc

这样我远程都访问成功了。后面需要添加其他服务,就直接添加各个平台的 frpc.toml文件即可,非常方便。

最后的话

我在之前的《 Untitled 》文章中也提到,就是我的macmini与阿里云服务器建立一条ssh的通道,我其他电脑如macbook远程访问阿里云的这个公网IP对应的端口,就可以把相应的流量转到macmini上,实现远程方式。

至此,你的跨平台无缝远程工作流就彻底打通了!无论是 Mac 还是 Ubuntu,只要有网,随时待命。很多人觉得内网穿透难,其实理顺了服务端(frps)和客户端(frpc)的端口映射关系,就像搭积木一样简单。

你是用什么方式实现内网打通,欢迎交流。

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com