没有公网 IP、不会端口映射?用 Natfrp 轻松远程访问家中 NAS

想在公司、出差途中打开家里的 NAS,却卡在"没有公网 IP""不会设置路由器端口映射"?可以看看内网穿透。它让家里的设备主动连到穿透服务,再由外部设备通过服务商提供的地址访问回来。本文以飞牛 Docker 的 Compose 项目和 Natfrp(SakuraFrp)为例,从原理到配置一步步说明。

先说清楚:免端口映射不等于免服务商,也不代表不限速、无限流量或绝对安全。连接质量取决于 Natfrp 套餐、节点、家中上行带宽和网络状态。建议先用于轻量访问,确认稳定后再考虑其他方案。

先弄懂:内网穿透是怎么连回家的?

家里的路由器通常不会主动接收外网发起的连接。内网穿透的思路是让 NAS 先向 Natfrp 建立一条"向外"的连接;外出时,手机或电脑访问 Natfrp 分配的隧道地址,服务再把访问请求沿已有连接转回 NAS。

简单理解:路由器不需要把某个端口"开给全网",NAS 会主动连出去;外部请求经隧道服务转发回来。隧道地址、端口、速度和流量规则由服务商及所选节点决定。

开始前准备

  • 一台已安装 Docker 的飞牛设备,能正常访问互联网。
  • 一个 Natfrp 账户,以及账户面板里的访问密钥。
  • 飞牛管理页面已启用 HTTPS,并确认本机 HTTPS 端口。下文用 5667 做示例;如果你的系统设置不同,请以实际端口为准。
  • 一个单独设置的远程管理密码,至少 8 位,建议使用随机且不重复的密码。

开始配置前,请先在 Natfrp 的 用户 → 实名认证 页面完成实名认证。你提供的页面提示,认证通过第三方接口完成并收取一次性认证费用;费用金额和办理流程以你操作时官网显示为准。认证后即可继续获取访问密钥、配置启动器。

Natfrp 账户页面可能提供每日签到领取流量的活动。奖励额度和套餐规则会变化,截图仅用于说明入口,不代表固定承诺;请以账户页面当前显示为准。

第一步:复制 Natfrp 访问密钥

登录 Natfrp 官网,在首页账户信息区域点击"复制访问密钥"。这串密钥用于启动器登录你的 Natfrp 账户,后面会放进 Compose 配置。

访问密钥相当于账户凭证:不要发给他人,不要贴到公开文章或代码仓库,也不要把包含密钥的 Compose 截图公开。如果不慎泄露,应尽快在账户后台处理。

第二步:在飞牛 Docker 创建 Compose 项目

打开飞牛桌面的 Docker → Compose 。点击"新增项目",填写项目名称(例如 sakurafrp)和保存位置,选择"创建 docker-compose.yml",再粘贴下面配置。

yaml 复制代码
services:
  sakurafrp: # 服务名,可以自定义,在同一个 compose 项目中唯一
    image: natfrp.com/launcher:latest
    # container_name: natfrp  # 如需自定义容器名,可取消注释并修改
    network_mode: host
    restart: always
    environment:
      LANG: zh_CN.UTF-8
      TZ: Asia/Shanghai
      NATFRP_TOKEN: <你的访问密钥>
      NATFRP_REMOTE: <设置远程管理密码(8位以上)>
    volumes:
      - ./data:/run # 保存运行目录,便于项目管理

把 <你的访问密钥> 换成刚才复制的密钥,把 <设置远程管理密码(8位以上)> 换成你自己设置的密码,并删除尖括号。不要把占位文字原样留下;密码中如果有 YAML 特殊字符,可按 Compose 解析规则加引号。

几个配置项的意思:

  • image:使用 Natfrp 官方启动器镜像。
  • network_mode: host:容器直接使用 NAS 的网络。这个配置下不需要额外填写 ports 映射。
  • restart: always:设备重启后,容器会尝试自动启动。
  • NATFRP_TOKEN:Natfrp 账户访问密钥。
  • NATFRP_REMOTE:连接远程管理设备时要输入的密码,至少 8 位;它不是 Natfrp 登录密码,也不是 NAS 登录密码。
  • ./data:/run:把启动器运行数据保存在 Compose 项目目录的 data 文件夹。

确认内容和保存位置无误后,创建项目并启动。Compose 文件含有访问密钥和密码,应按敏感信息保存,不要公开分享。

小提示:创建项目后,如果页面显示"已停止",在项目右侧菜单点"构建",再启动项目。不同飞牛版本的界面文字可能略有差异。

第三步:确认 Natfrp 启动器已上线

项目启动后,回到 Natfrp 官网的 服务 → 远程管理 ,刷新设备列表。出现这台 NAS 后选择它,输入 Compose 里设置的 NATFRP_REMOTE 密码连接。

连接时在设备列表里选中自己的设备,再输入自定义的远程管理密码。这个密码对应 Compose 中的 NATFRP_REMOTE,请妥善保存。

如果设备没有出现,先检查 Compose 项目是否运行、访问密钥是否填写正确,并查看容器日志。飞牛 Docker 的 Compose 项目菜单和容器菜单都能找到日志入口;日志出现错误时,先确认具体报错,不要直接把整段日志公开,因为其中可能包含设备信息、地址或认证信息。

图中容器处于异常退出状态,仅展示"运行日志"的查看入口,不代表启动成功。遇到类似情况要以自己的日志报错内容为准逐项排查。

启动器正常运行后,也可以通过日志确认远程管理连接、节点连接和隧道启动状态。下面是启动器输出示例;如果要把日志截图发到公开平台,请先检查并处理其中的访问地址、设备标识和其他个人信息。

第四步:创建 NAS 管理页面隧道

在远程管理连接中打开 服务 → 隧道列表 → 创建隧道。本文示范的是通过隧道访问 NAS 的 HTTPS 管理页面:

  1. 隧道类型选择 TCP。
  2. 本地 IP 填 127.0.0.1。启动器使用 host 网络时,可以通过 NAS 本机回环地址访问本机服务。
  3. 本地端口填飞牛管理页面实际使用的 HTTPS 端口;图示和本文示例使用 5667。
  4. 填写便于识别的备注,保存后启动隧道。

    远程端口和节点以你创建后页面显示为准,不要照抄别人的值。若当前隧道设置提供访问密码或认证选项,建议开启;同时保留 NAS 自身的强密码、双重验证等保护。隧道认证密码与 NATFRP_REMOTE、NAS 登录密码分别独立。

隧道创建后,可以回到远程管理页面查看已建立的隧道。下面截图展示了设备上线后隧道卡片所在的位置;卡片上的连接信息应以你自己的面板为准。

第五步:用外网网络测试

启动隧道后,从隧道详情或启动器日志查看服务商分配的连接地址和远程端口。手机先断开家中 Wi‑Fi,改用蜂窝网络访问,确认确实是从外网连接。

如果通过 IP 和端口访问,浏览器可能提示证书与地址不匹配。不要忽略证书警告后继续输入 NAS 账号密码。IP 访问通常不能匹配域名证书,可以继续配置子域名和自动 HTTPS。

可选:绑定子域名并启用 HTTPS

如果不想记 IP 和端口,可以在 Natfrp 的 服务 → 子域绑定 中申请可用子域名,把它绑定到隧道,并按官方说明设置自动 HTTPS。证书签发后,重启隧道并查看日志确认已加载证书,再通过 https://你的子域名 测试。是否需要保留远程端口,按面板给出的访问地址为准。

使用自己的域名则还需要配置 DNS 和证书,适用条件以 Natfrp 文档及控制面板当前说明为准。可参考官方的启动器使用指南、远程管理 V2 指南、子域绑定说明和自动 HTTPS 指南。

常见卡点

远程管理里看不到设备:检查容器运行状态、访问密钥是否正确、NAS 是否能访问互联网,再查看运行日志。

隧道启动了但页面打不开 :核对隧道本地 IP 是否为 127.0.0.1、本地端口是否为飞牛当前 HTTPS 端口;外网测试时使用服务商给出的连接地址和端口。

浏览器提示证书不安全:先停止登录操作,确认访问地址与证书域名一致、证书已签发且隧道已按文档配置 HTTPS。不要把证书警告当作可以忽略的提示。

速度慢或流量不足:中继节点、免费账户限速/流量、家中上行带宽和运营商线路都会影响体验。每日签到奖励与服务规则可能调整,以 Natfrp 账户页面为准;大文件传输、照片或视频备份不建议默认依赖免费隧道。

写在最后

配置完成后,你就多了一条不需要在家用路由器上做端口映射的远程访问路径。记住它仍经过第三方服务:只开放确实需要的服务,使用强密码和 HTTPS,不使用时可以停用隧道;分享截图或日志前也要遮挡访问密钥、远程密码、设备 ID、隧道 ID、域名、IP 和端口。

如果这篇教程帮你理清了内网穿透,欢迎点赞、关注并转发给也在折腾 NAS 的朋友。你目前用哪种方式远程回家?欢迎在评论区交流。

相关推荐
HY小宝F1 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
dog2501 小时前
带宽,时延,抖动的不可能三角
网络·tcp/ip
福大大架构师每日一题5 小时前
mediamtx v1.21.2发布:UDP、JWT、RTSP、RTMP、HLS、WebRTC全面修复,稳定性与安全性再提升
网络协议·udp·webrtc
曹小强wxx5 小时前
Flutter 局域网设备发现:UDP 广播 + mDNS 双路合并,以及靠谱的在线判定与断线重连
物联网·网络协议·flutter
花间相见6 小时前
【计算基础|网络09】TCP(上):三次握手与四次挥手
网络·网络协议·tcp/ip
北京盛世宏博6 小时前
多协议以太网温湿度变送器:Modbus TCP/UDP/SNMP 协议应用场景详解
单片机·tcp/ip·udp·传感器·温湿度
wdfk_prog6 小时前
LWIP教程 08:从 `tcp_write()` 到 ACK 清队列——TCP 数据发送、窗口与回调
网络·网络协议·tcp/ip
anew___6 小时前
《从零手写操作系统 (37):网络协议栈基础——Socket接口与TCP状态机》
网络·网络协议·tcp/ip
wdfk_prog6 小时前
LWIP教程 10:从 `tcp_receive()` 到 `ooseq` / SACK——TCP 乱序、重组与选择确认
网络·数据库·tcp/ip