用 FRP 实现中转:阿里云 ECS 搭建 frps + NAS 作为 frpc(含安全组与 systemd)
本文最后更新于 63 天前,如有失效请评论区留言。

下载与解压 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

解压(解压后可见 frpsfrpc 可执行文件及示例配置):

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.logsystemctl status frps

  • 连接缓慢或中断:排查运营商 QoS、ECS 带宽上限、并发连接数;必要时提升带宽或选择更近地域。

  • 安全提醒:请勿将 SSH(22)直接在 ECS 上暴露给全网;如果必须暴露,请限 IP + 密钥登录。

— 完 —

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇