下载与解压 frp → 配置 frps.toml → 放行安全组与本机防火墙 → systemd 托管 → 浏览器登录面板 → 在 NAS 写入 frpc 配置并放行 remotePort → 验证访问与安全加固。
合规与安全提示
仅在自有或已获授权的设备与账号上使用 FRP。务必启用鉴权(token)、限制来源 IP、只开放必要端口;管理面板请设置强口令并按需限制访问范围。
方案架构与准备
架构:公网阿里云 ECS 充当 frps 服务端,家庭/公司内网的 NAS 作为 frpc 客户端。NAS 侧将本地服务(如 SSH 22、DSM 5000/5001)通过 TCP 代理到 ECS 的 remotePort,实现外网可达。
前提:
已有阿里云 ECS(具公网 IP)。
能登录 ECS 终端(控制台或 SSH)。
NAS 可访问公网(作 frpc)。
具备基础 Linux 操作能力与管理员权限。
在阿里云 ECS 部署 frps(服务端)
下载与解压
在本机下载适配架构的 frp 压缩包(需要魔法工具),找到适合的版本就行。
ECS 控制台打开服务器终端或用 SFTP/文件管理器或使用宝塔面板上传压缩包到服务器某目录(例如 /opt/frp)
解压(解压后可见 frps、frpc 可执行文件及示例配置):
cd /opt/frp # 自己的路径
tar -zxvf frp_*.tar.gz 编写
在 ECS 上新建并编辑配置(路径自定,例如 /opt/frp/frps.toml):
vim /opt/frp/frps.toml 粘贴以下内容(根据需要修改端口与口令):
bindPort = 7000 # 服务端监听端口(frpc 连接用)
# vhostHTTPPort = 8080 # 如需 HTTP 反代可启用
# vhostHTTPSPort = 8081 # 如需 HTTPS 反代可启用
# 认证
auth.method = "token"
auth.token = "请改为强口令"
# 管理面板
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "面板用户名"
webServer.password = "面板密码"
[log]
to = "/var/log/frp/frps.log"
level = "debug"
maxDays = 1 # 每天清空一次日志,视情况而定
disablePrintColor = true 配置安全组与本机防火墙
在阿里云 安全组中新建规则(建议单独建一个“FRP”安全组),放行:
22(SSH)、80(HTTP)、443(HTTPS)
7000(frps 连接端口)、7500(管理面板)
以及你将用于远端映射(nas将要中转的服务)的 remotePort(例如 6666、8868等)
Linux 本机(CentOS/RHEL)如启用 firewalld,在服务器命令行执行:
sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
sudo firewall-cmd --zone=public --add-port=7500/tcp --permanent
# 如需更多 remotePort 依次添加
sudo firewall-cmd --reload
sudo firewall-cmd --list-all # 查看当前的开放端口 Ubuntu 使用 ufw 的话:sudo ufw allow 7000/tcp 等。
使用 systemd 托管
安装 systemd(多数发行版自带)后,创建服务文件:
sudo yum install systemd #(不同系统不一样的命令 sudo vim /etc/systemd/system/frps.service 粘贴:
[Unit]
Description=frp server
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
# 修改为你的 frps 与 frps.toml 实际路径
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target 加载并设为开机自启:
sudo systemctl daemon-reload
sudo systemctl enable frps
sudo systemctl start frps 启动、自检与日志
语法自检(如你的版本支持):
sudo /opt/frp/frps verify -c /opt/frp/frps.toml 服务状态与日志:
sudo systemctl status frps # 11. 查看 frps 服务状态
sudo systemctl stop frps # 关闭服务的命令
sudo systemctl restart frps # 后续修改 frps.toml 文件后,需要重启 frps 服务
vim /var/log/frp/frps.log # 查看日志输出 管理面板登录
在浏览器访问:
http://<ECS公网IP>:7500
输入面板用户名与密码即可查看在线客户端、代理状态与连接日志。
在 NAS 侧配置 frpc(客户端)
打开 套件中心搜索并安装 Frpc 客户端(或使用容器/二进制方式)。
写入配置(toml),注意与服务端 token 保持一致,并将需要暴露的本地服务映射到 remotePort:
serverAddr = "你的ECS公网IP"
serverPort = 7000
auth.token = "与服务端一致的强口令"
[[proxies]]
name = "DSM_ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort= 你的服务器开放的端口
[[proxies]]
name = "DSM_web_5000"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5000
remotePort= 你的服务器开放的端口
# 如需同时暴露 5001(HTTPS 管理端口),再加一个映射:
[[proxies]]
name = "DSM_web_5001"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5001
remotePort=你的服务器开放的端口 在 ECS 的安全组与本机防火墙放行对应 remotePort
设置开机自启
在群晖 – 控制面板 – 任务计划 – 新增 – 触发的任务 – 用户定义的脚本 – 任务名称:frpc – 用户帐号:root – 事件:开机 – 任务设置里面 – 用户定义的脚本:sudo systemctl start frpc
访问与验证示例
SSH 到 NAS(经 ECS 中转)
ssh -p 6666 NAS用户名@ECS公网IP 浏览器访问 DSM(假设 5000 被映射为 8888)
http://ECS公网IP:8888 DSM 5001 HTTPS(映射到 8889)
https://ECS公网IP:8889 SSH 到 NAS(经 ECS 中转)
如果你有自有域名,建议结合反向代理与证书,将端口访问改为域名访问(实现端口隐藏),提升可用性与安全性。
可选:域名与反向代理
在 ECS 上用 Nginx(或宝塔/Nginx)将
media.nas.example.com/nas.example.com等域名反向代理到对应端口(如8898/8899),并签发 HTTPS 证书(Let’s Encrypt)。具体使用方式参阅通过域名和 Nginx 实现公网访问 NAS:配置 SSL 证书与反向代理也可在 frp 启用 HTTP/HTTPS 反代端口(
vhostHTTPPort/vhostHTTPSPort)实现基于域名的转发(本文示例聚焦 TCP 直通,按需启用即可)。
安全加固与最佳实践
只放行必要端口:避免一次性全量开放;管理面板端口(7500)尽量限 IP。
强口令与轮换:
auth.token使用高强度随机串并定期更换。最小权限:如用容器方式运行,限制特权;ECS 上使用非 root 运行与专用目录存放配置、日志。
TLS 与加密:如需提升链路安全,可在新版本中启用传输层 TLS(参考 frp 文档)或在反向代理层强制 HTTPS。
监控与告警:定期查看
frps.log,为异常连接数、失败认证等设置告警。面板暴露审慎:面板仅在调试时开启或对管理网段可见;生产环境建议关闭或加二次认证/内网专线访问。
常见问题排障(FAQ)
常见问题排障(FAQ)
连不上 frps:检查
7000是否在安全组与本机防火墙放行;auth.token是否一致;ECS 公网 IP 是否变更。remotePort 已被占用:更换为未占用端口,并在安全组同步放行。
能连上 frps,但访问 DSM 报错:确认 frpc
localIP/localPort正确;DSM 是否只允许本地回环访问;NAS 套件是否运行。面板打不开:确认
7500/tcp放行;frps 是否成功启动;查看frps.log与systemctl status frps。连接缓慢或中断:排查运营商 QoS、ECS 带宽上限、并发连接数;必要时提升带宽或选择更近地域。
安全提醒:请勿将 SSH(22)直接在 ECS 上暴露给全网;如果必须暴露,请限 IP + 密钥登录。
— 完 —

