收起左侧

frp 内网穿透实现外网访问 fnos NAS 服务,带后台看板

2
回复
176
查看
[ 复制链接 ]

2

主题

8

回帖

0

牛值

江湖小虾

frp 内网穿透实现外网访问 fnos NAS 服务(完整版)

一、文档说明

  • 核心目的:通过 frp 实现外网访问局域网内 fnos NAS 服务(供他人使用),个人使用推荐 tailscale 组网
  • 环境依赖:需一台带公网 IP 的服务器(本文用阿里云 ECS Ubuntu 20.04,3M 带宽年付 99 元)
  • 文件准备:frps(服务端)、frpc(客户端)配置文件已合并至同一文件夹(见附件)

二、准备工作

  1. 阿里云 ECS 前置操作:确保已登录 ECS 服务器,且具备 sudo 权限
  2. 依赖安装:若 ECS 未装 Docker 和 Docker-Compose,先执行以下命令(Ubuntu 示例):
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装Docker
sudo apt install docker.io -y
# 安装Docker-Compose
sudo apt install docker-compose-plugin -y
# 验证安装
docker --version && docker compose version

三、frps 部署(阿里云 ECS 端)

3.1 配置 frps.toml 文件

核心配置项说明(已标注与 frpc 的关联关系):

配置项 示例值 说明
bindAddr "0.0.0.0" 服务端监听地址,默认 0.0.0.0(无需修改)
bindPort 7000 服务端通信端口,需与 frpc.toml 的 serverPort 完全一致
auth.method "token" 认证方式,固定为 token(需与 frpc 一致)
auth.token "your-secure-token" 认证密钥,需与 frpc.toml 的 auth.token 完全一致(建议复杂字符组合)
webServer.port 7001 控制台访问端口(默认 7001,可自定义)
webServer.user "admin" 控制台登录用户名(自定义)
webServer.password "your-admin-pwd" 控制台登录密码(自定义,建议复杂)
allowPorts [{start=9000,end=9002}] 允许客户端映射的端口范围,新增端口需在此添加(示例:[{start=9003,end=9005},{start=9006,end=9008}])
log.to "/var/log/frps.log" 日志存储路径(无需修改,需确保容器有写入权限)

完整配置文件(可直接复制使用,需替换auth.token和webServer.password):

# 基础通信配置
bindAddr = "0.0.0.0"
bindPort = 7000

# 认证配置
auth.method = "token"
auth.token = "your-secure-token"  # 替换为自定义密钥,需与frpc一致

# 控制台配置
webServer.addr = "0.0.0.0"
webServer.port = 7001
webServer.user = "admin"
webServer.password = "your-admin-pwd"  # 替换为自定义密码
webServer.pprofEnable = false

# TLS加密与连接配置
transport.tls.force = true
transport.tcpMux = true
transport.maxPoolCount = 2000

# 日志配置
log.to = "/var/log/frps.log"
log.level = "info"
log.maxDays = 3
log.disablePrintColor = false

# 端口权限控制
allowPorts = [
  { start = 9000, end = 9002 }  # 可按需求新增端口段
]

# 默认必要参数(无需修改)
maxPortsPerClient = 8
u**acketSize = 1500
nathole**ysisDataReserveHours = 168

3.2 启动 frps 服务(Docker-Compose)

  1. 将附件中的frp文件夹上传至 ECS 服务器(示例路径:/home/ubuntu/frp)
  2. 进入 frp 目录执行启动命令:
# 进入frp文件夹
cd /home/ubuntu/frp
# 后台启动frps服务
docker compose -f docker-compose-frps.yml up -d
# 验证服务状态(出现"Up"表示启动成功)
docker compose -f docker-compose-frps.yml ps

3.3 阿里云 ECS 开放安全组规则

(必须操作!否则外网无法访问 frp 服务)

  1. 登录里云控制台 → 进入「ECS 实例列表」→ 找到目标服务器 → 点击「安全组」
  2. 点击「配置规则」→ 「添加安全组规则」,按以下参数配置:
规则方向 类型 端口范围 授权对象 描述
入方向 自定义 TCP 7000/7000 0.0.0.0/0 frp 通信端口
入方向 自定义 TCP 7001/7001 0.0.0.0/0 frp 控制台端口
入方向 自定义 TCP 9000-9002 0.0.0.0/0 frp 映射端口

四、frpc 部署(局域网 fnos NAS 端)

4.1 配置 frpc.toml 文件

核心配置项说明(需与 frps 对应):

配置项 示例值 说明
serverAddr "120.XX.XX.XX" 阿里云 ECS 的公网 IP(需替换为实际 IP)
serverPort 7000 与 frps.toml 的 bindPort 一致
auth.token "your-secure-token" 与 frps.toml 的 auth.token 完全一致
[[proxies]] - 每个 [[proxies]] 对应一个 NAS 服务的映射(可新增多个)
name "libertool" 映射名称(自定义,如服务名)
type "tcp" 协议类型(NAS 服务默认用 tcp)
localIP "0.0.0.0" NAS 本地 IP(0.0.0.0 表示本机所有 IP,无需修改)
localPort 9091 NAS 服务的本地端口(如 libertool 服务端口)
remotePort 9000 映射到 ECS 的端口(需在 frps.allowPorts 范围内)

完整配置文件(示例含 3 个服务映射,可按需新增):

serverAddr = "120.XX.XX.XX"  # 替换为ECS公网IP
serverPort = 7000
auth.method = "token"
auth.token = "your-secure-token"  # 与frps一致

log.to = "/var/log/frpc.log"
log.level = "info"
log.maxDays = 3

# 映射1:libertool服务(本地端口9091 → 公网端口9000)
[[proxies]]
name = "libertool"
type = "tcp"
localIP = "0.0.0.0"
localPort = 9091
remotePort = 9000

# 映射2:dify服务(本地端口80 → 公网端口9001)
[[proxies]]
name = "dify"
type = "tcp"
localIP = "0.0.0.0"
localPort = 80
remotePort = 9001

# 映射3:PDF服务(本地端口7070 → 公网端口9002)
[[proxies]]
name = "pdf"
type = "tcp"
localIP = "0.0.0.0"
localPort = 7070
remotePort = 9002

4.2 启动 frpc 服务(fnos NAS 容器管理)

  1. 登录 fnos NAS 管理界面 → 进入「容器管理」模块 → 点击「Compose 新建项目」
  2. 项目配置:
  • 项目名称:自定义(如frpc-nas)
  • 文件夹:选择 NAS 上存放frp文件夹的路径(需包含frpc.toml和docker-compose-frpc.yml)
  • 配置内容:复制以下docker-compose.yml代码(或直接读取文件):
services:
  frpc:
    image: stilleshan/frpc:0.64.0  # 稳定版镜像
    container_name: frpc
    restart: always  # 开机自动重启
    network_mode: "host"
    volumes:
      - ./frpc.toml:/frp/frpc.toml  # 挂载配置文件
      - ./logs:/var/log  # 挂载日志目录
    environment:
      - TZ=Asia/Shanghai  # 时区配置(避免日志时间偏差)
  1. 点击「部署」,等待容器启动完成(状态显示 “运行中” 即为成功)
    4b13ab3064ef499682e9bc5486995bb7.png

五、部署验证

  1. 访问 frp 控制台
  • 浏览器输入:http://ECS公网IP:7001
  • 输入webServer.user和webServer.password登录
  • 查看「代理列表」:所有配置的[[proxies]]应显示 “在线” 状态
  1. 访问 NAS 服务
  • 示例 1(dify 服务):http://ECS公网IP:9001
  • 示例 2(libertool 服务):http://ECS公网IP:9000
  • 若能正常打开服务界面,说明穿透成功

六、常见操作示例

示例 1:新增 NAS 服务映射

  1. 编辑frpc.toml,新增一段[[proxies]]:
[[proxies]]
name = "new-service"  # 自定义名称
type = "tcp"
localIP = "0.0.0.0"
localPort = 8080  # 新增服务的本地端口
remotePort = 9003  # 新增端口(需在frps.allowPorts中添加{start=9003,end=9003})
  1. 同步更新 ECS 的frps.toml的allowPorts:

allowPorts = [
  { start = 9000, end = 9002 },
  { start = 9003, end = 9003 }  # 新增端口段
]
  1. 重启服务:
  • ECS 端:cd /home/ubuntu/frp && docker compose -f docker-compose-frps.yml restart
  • NAS 端:在「容器管理」中重启frpc容器

七、注意事项

  1. 安全防护
  • auth.token建议使用大小写字母 + 数字 + 特殊符号的组合(如Frp@2025!),避免泄露
  • allowPorts仅开放必要端口,不建议配置过大的端口范围(如9000-9999)
  • 定期查看 frp 日志(./logs/frps.log和./logs/frpc.log),排查异常连接
  1. 稳定性保障
  • ECS 需开启 “开机自启”,避免服务器重启后 frps 服务中断
  • NAS 端容器配置restart: always,确保 NAS 重启后 frpc 自动恢复
  • 若穿透速度慢,可检查 ECS 带宽是否充足(3M 带宽适合小流量服务,大文件传输建议升级带宽)
  1. 故障排查
  • 若控制台显示 “代理离线”:检查 frpc 与 frps 的auth.token是否一致、ECS 安全组是否开放7000端口
  • 若服务无法访问:检查localPort是否为 NAS 服务的实际端口、remotePort是否在allowPorts范围内

image.png
upload 附件:frp.zip

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

3

主题

13

回帖

0

牛值

fnOS系统内测组

够用吗,远程看视频啥的

3M带宽看视频不够用,这个一般备份用丢在那里不要管,可以看看华为还是腾讯云,最低也有99的,有按流量计费的,带宽比较高。4K视频一般的15M-20M,看视频可以用飞牛自带的ddns,家庭光猫一般都有ipv6  详情 回复
昨天 11:20

2

主题

8

回帖

0

牛值

江湖小虾

昨天 11:20 楼主 显示全部楼层
Gevak 发表于 2025-11-4 11:05
够用吗,远程看视频啥的

3M带宽看视频不够用,这个一般备份用丢在那里不要管,可以看看华为还是腾讯云,最低也有99的,有按流量计费的,带宽比较高。4K视频一般的15M-20M,看视频可以用飞牛自带的ddns,家庭光猫一般都有ipv6
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则