frp在日常开发中经常用到,比如本地调试飞书、微信、支付宝事件回调等,而且安装配置相对简单。(最近整理笔记,发现有两篇关于 frp 的,决定重新整理)。玩归玩,闹归闹,不推荐长时间把 NAS 内网服务暴漏在外网,如果通过 stcp 协议远程 ssh 是没毛病。总而言之,还是不如 wireguard 方便,找到自己方便的就是最好的!!!
准备
下载 frp :https://github.com/fatedier/frp/releases
服务器 :阿里云 (我的服务器amd64,frp下载对应版本即可)
群辉NAS :家里的笔记本改造的黑群晖
外网电脑 :其他地方用的另一台笔记本
常见服务器是 amd64 版本,客户端 Windows 和 Intel MacBook 也是下载 amd64 版本,M芯片 MacBook 下载 arm64 版本。具体确认在命令行运行:uname -m

配置
域名解析
将泛域名 *.frp.11010.net 解析到 frps 所在服务器的 IP 地址,这一步也不必要,如果不用域名+端口访问,可以用 IP+端口访问。推荐用域名!
frp服务端
服务器配置文件对应修改 frps.toml
|
|
修改完后运行./frps -c frps.toml测试启动服务端,在根目录运行!!!
NAS客户端
配置文件对应修改 frpc.toml
|
|
修改完成测试启动 NAS 客户端./frpc -c frpc.toml,到这里就可以访问群晖 NAS了http://nas.frp.11010.net:8989
需要SSH连接的客户端
如果只需要访问家里的NAS或者部署的其他服务,不需要这一步。我需要SSH连接NAS,所以需要配置STCP连接。下面配合vscode远程开发功能,做好端口映射,也可以访问NAS部署的其他docker服务。
配置文件对应修改 frpc.toml
|
|
修改完后启动客户端./frpc -c frpc.toml,通过ssh -o Port=6000 用户名@127.0.0.1就可以 SSH 到自己的 NAS 了
frp 控制台
http://你的服务器ip:7500
进阶
上面都测试访问通了后,control+c结束掉上面 frp 启动,下面准备把启动改成服务。
Supervisor 守护
(不用supervisor启动则忽略)supervisor 配置,这就是个进程守护工具,不是必须的。不推荐!
|
|
systemd
在 Linux 系统下,使用
systemd可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。非常建议,省心省力!!!
在/etc/systemd/system/创建frpc.service文件,内容如下:
|
|
服务器端/etc/systemd/system/frps.service,内容如下:
|
|
-
加载配置文件:
sudo systemctl daemon-reload -
把 frp 设置开机启动:
sudo systemctl enable frpc.service -
启动:
sudo systemctl start frpc.service -
停止:
sudo systemctl stop frpc.service -
重启:
sudo systemctl restart frpc.service

vscode端口映射
上面已经可以通过 SSH 连接 NAS,下面配合 vscode 远程开发就可以访问其他服务了。
SSH免登
非必要,配置了每次 SSH 连接不用输入用户名和密码了,而是通过密钥。
查看 ~/.ssh/ 下有id_rsa.pub文件,如果没有运行ssh-keygen -t ed25519 -C "your@email.com"创建密钥对,最后运行ssh-copy-id -i ~/.ssh/id_rsa.pub -p 6000 songqj@127.0.0.1把本机公钥发射到NAS 上。
安装Remote-SSH
插件地址:https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh
vscode连上nas做远程开发,比如编辑docker-compose.yml文件
端口转发
cmd + j唤出 vscode 控制台,然后添加端口转发,就可以愉快的访问NAS的内网服务了。

推荐阅读
- frp 官方文档 :https://gofrp.org/zh-cn/docs