想在公司、出差途中打开家里的 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 管理页面:
- 隧道类型选择 TCP。
- 本地 IP 填
127.0.0.1。启动器使用 host 网络时,可以通过 NAS 本机回环地址访问本机服务。 - 本地端口填飞牛管理页面实际使用的 HTTPS 端口;图示和本文示例使用
5667。 - 填写便于识别的备注,保存后启动隧道。

远程端口和节点以你创建后页面显示为准,不要照抄别人的值。若当前隧道设置提供访问密码或认证选项,建议开启;同时保留 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 的朋友。你目前用哪种方式远程回家?欢迎在评论区交流。