飞牛 NAS 远程访问实战:星空组网连接 Mac 与安卓,从 Compose 部署到 5G 验证

在 Mac 上装好飞牛虚拟机之后,通过局域网地址打开管理后台很方便。但换成手机移动数据,这个内网地址就不能照搬了。怎样让手机在外面也能访问这台 NAS?

这次我用星空组网完成了一次实际接入:飞牛通过 Docker Compose 运行客户端,Mac 安装桌面客户端,安卓手机使用独立成员账号连接,最后在关闭 Wi-Fi 的情况下,通过 5G 打开飞牛登录页面。

一、先把实验环境说明白

这次的飞牛并不是单独的一台物理 NAS,而是运行在 Mac 的 Parallels 虚拟机中。

|--------|-----------------------------------|------------|---------------|
| 设备 | 本次环境 | 作用 | 星空组网虚拟 IP |
| 飞牛 NAS | fnOS 1.2.0302,ARM 虚拟机;容器客户端 6.0.9 | 提供管理页面 | 192.168.188.2 |
| Mac | Apple Silicon;星空客户端 6.1.0 | 配置与电脑端访问验证 | 192.168.188.1 |
| 安卓手机 | 关闭 Wi-Fi,使用 5G | 验证跨网络访问 | 192.168.188.3 |

这里的地址是本次后台分配结果,实际操作时要替换成你自己的地址。飞牛原有管理入口为 http://10.211.55.4:5666,加入组网之后,访问入口变为:

http://192.168.188.2:5666

变化的是目标 IP,飞牛管理服务的端口仍然是 5666。

还要区分两种测试:Mac 和它承载的飞牛虚拟机之间访问成功,可以检查基础配置;安卓手机关闭 Wi-Fi、使用移动数据访问成功,才是本文的跨网络验证。给 Mac 换一个热点,并不能自动让它与同机虚拟机处在两个独立的外部网络。

二、登录官网,为设备准备独立成员

星空组网官网进入"后台管理",使用主账号登录。官网登录界面如下,支持账号登录和微信扫码入口。

图1:官网主账号用于管理网络和成员,设备客户端使用对应的成员账号。

登录后,进入 设备管理 → 成员列表 → 添加成员 。本次分别为 Mac、飞牛和安卓准备成员,手机端名称设为 Android-5G,便于后续识别。

创建成员时,可以按照下面的方式填写:

|-------|---------------------------|
| 字段 | 填写建议 |
| 名称 | 使用设备用途,例如 Android-5G、家庭飞牛 |
| 成员账号 | 为设备设置独立成员名;完整账号以后台显示为准 |
| 虚拟 IP | 入门时可留空,让系统分配 |
| 登录密码 | 自行设置并妥善保存,不放进截图或 YAML |
| 备注 | 简单说明设备用途,方便以后维护 |

这里有个容易混淆的地方:设备应属于同一个主账号下的网络,但不同长期在线设备不要共用同一个成员账号。 官方成员管理文档也明确说明了这一点。把飞牛正在使用的成员账号直接拿到手机登录,并不是本教程采用的做法。官方成员管理说明

网络管理 → 网络配置 中可以查看现有网络名称和组网地址池。本次网络的地址池是 192.168.188.0/24

因此,"建立组网"在这套界面中的具体操作,是准备好网络内的设备成员并让客户端上线;后面飞牛里创建的 starvpn 项目,则是一个 Docker Compose 项目。两者的"创建"不要混为一谈。

三、在飞牛里准备 Compose 项目

目前官方已经提供飞牛原生 FPK 安装包。如果只是给一台全新的飞牛接入,可以直接参考文末的原生安装路线。本次飞牛有运行中的 Compose 项目,因此以这套实际配置为主线,便于把容器部署过程和代码一起讲清楚。

进入飞牛管理后台,打开 Docker → Compose → 新增项目。如果尚未准备好 Docker,先完成其安装与存储位置设置,再进行后续操作。

在创建窗口中:

  1. 项目名称填写 starvpn

  2. 在"路径"处选择用于保存项目配置的文件夹。

  3. 来源选择"创建 docker-compose.yml",将下方 YAML 粘贴到编辑器。

  4. 检查内容后,按需勾选"创建项目后立即启动",再确认创建。

图2:创建入口与配置填写示例。图中路径尚未选择、立即启动尚未勾选;新部署时需按上述步骤补齐。

使用的配置如下,与本次运行项目中的 YAML 一致:

复制代码
services:
  starvpn:
    image: registry.cn-beijing.aliyuncs.com/ld_beijing/stars.client:latest
    container_name: stars.client
    network_mode: host
    privileged: true
    restart: always

这份 Compose 配置对应官方 Docker 示例中的镜像、宿主机网络、特权运行和自动重启设置。官方 Docker 部署说明

|--------------------|---------------------------------|
| 配置项 | 在这里的作用 |
| image | 使用官方文档列出的客户端镜像 |
| container_name | 将容器命名为 stars.client,方便查看日志 |
| network_mode: host | 使用飞牛宿主机的网络栈 |
| privileged: true | 给予容器较高权限,以运行官方示例中的组网客户端 |
| restart: always | 设置容器重启策略;仍需确保飞牛的 Docker 服务可正常启动 |

这套配置是在 Linux 系统的飞牛虚拟机内部运行。Mac 端使用 macOS 客户端,不要把这里的宿主机网络行为直接套到 Mac 上的容器环境。

privilegedhost 会扩大容器对宿主机的影响范围,应核对镜像来源与配置用途,不要随意换成来历不明的镜像。已经运行星空客户端的设备,也不应再重复启动一套相同网络服务。

另外,latest 是可变化的标签。本次运行的容器实际报告为 6.0.9 ,这不代表今后拉取 latest 还会得到同一版本。长期维护时应记录实际版本及镜像摘要,并在升级前保存配置。

项目运行时,可以点开详情切换到"YAML 配置"核对内容。下面这张图来自实际运行项目,底部明确显示配置处于只读状态。

图3:项目名、容器名、镜像与网络模式均可从现有项目中核对。

回到 Compose 列表,确认项目显示"正在运行",并且包含一个容器。

图4:本次飞牛上已有的实际运行项目。容器运行只是第一步,还需要确认客户端登录与连接状态。

四、看日志,找到飞牛上的客户端控制台

进入 Docker → 容器 → stars.client → 更多 → 运行日志。官方 Docker 文档也提供了命令行查看方式:

复制代码
在飞牛的终端中执行,需要具有 Docker 操作权限
docker logs --tail 80 stars.client

如果近期日志没有启动提示,可以在飞牛的日志窗口向上翻,找到启动阶段的记录。本次实际日志如下:

图5:启动记录显示客户端 6.0.9、管理控制台端口 7725,以及首次启动时的未登录提示。历史日志不等于当前连接状态。

日志中的 127.0.0.1 指运行服务的那台机器。从 Mac 管理飞牛时,要使用 飞牛当前可达的局域网 IP

还要留意旧日志里的地址可能已经变化:图中内部地址是 172.19.55.124,而本次实际使用的飞牛地址是 10.211.55.4。核对当前设备地址后,这次打开的客户端控制台为:

复制代码
http://10.211.55.4:7725

首次进入时,使用分配给飞牛的星空成员账号登录。这里需要的是星空成员凭据,不是飞牛管理账号。

连接后,检查虚拟 IP、所属分组及连接状态。本次控制台显示飞牛的虚拟 IP 为 192.168.188.2/24,已经连接,所属分组为默认分组。

图6:实际客户端状态。

到这里,再区分一下两个端口:

|------|-------------|
| 端口 | 本文中的用途 |
| 7725 | 星空客户端控制台 |
| 5666 | 飞牛 NAS 管理页面 |

手机访问飞牛时,目标是 5666,不是 7725。也不需要为了这次组网访问,额外把客户端控制台映射到公网。

五、让 Mac 加入网络,先检查电脑端访问

官方 Mac 下载页选择对应芯片的安装包。Apple Silicon 与 Intel 使用的包不同,本次 Mac 为 Apple Silicon,实际客户端版本为 6.1.0。

安装后打开客户端,使用 分配给 Mac 的独立成员账号登录。

图7:登录前的实际界面,未填写账号与密码。

本次 Mac 登录后获得的组网地址为 192.168.188.1。在终端运行下面的请求,检查飞牛管理服务是否响应:

复制代码
将此处地址替换成你的飞牛组网 IP
NAS_IP="192.168.188.2"

curl --noproxy '*' \
  --connect-timeout 5 \
  --max-time 10 \
  --silent --show-error \
  --output /dev/null \
  --write-out 'HTTP 状态:%{http_code}\n' \
  "http://${NAS_IP}:5666"

--noproxy '*' 用于让这次 curl 请求不经代理,便于检查本机到目标地址的访问;连接与总耗时上限则避免命令一直等待。执行前后,本次观察到的差异很明确:Mac 尚未登录客户端时请求超时,登录后返回:

复制代码
HTTP 状态:200

HTTP 200 只能说明拿到了响应,还应该确认响应来自预期页面。因此,我又在浏览器打开 http://192.168.188.2:5666,实际进入了 fnos-m4 的飞牛登录页面。

图8:浏览器实际访问的页面;本次验证到登录页。

六、安卓关闭 Wi-Fi,用 5G 验证

安卓客户端的安装入口可从官方安卓文档获取。登录时使用前面单独创建的安卓成员,首次连接按照系统提示授权 VPN。

本次手机端按以下顺序操作:

  1. 登录安卓成员账号,建立星空组网连接。

  2. 关闭手机 Wi-Fi,确认正在使用移动数据。

  3. 保持 Mac 和其中的飞牛虚拟机运行。

  4. 在手机浏览器输入 http://192.168.188.2:5666

  5. 确认打开的是这台飞牛的登录页面。

实际操作后,手机成功打开页面,原始截图如下。顶部可以看到 5GVPN 标识,页面中的设备名为 fnos-m4

图9:手机端原始实操截图。浏览器顶部显示页面标题,访问地址已在操作时核对;截图保留了移动网络与 VPN 状态,账号和密码为空。

这一结果对应的完成标准是:安卓手机在移动数据环境下,通过组网访问到了飞牛管理登录页。 它不代表已经测试了大文件传输速度、长时间连接稳定性,也不能仅凭页面打开就判断链路一定采用 P2P 直连。

七、遇到访问问题,按这个顺序检查

项目运行中,但后台成员没有在线

先打开星空客户端控制台,确认已经登录并建立连接。Compose 列表里的"运行中"描述的是容器状态,并不保证成员已经完成认证。

同时检查是否把同一个成员账号用在了多个长期在线设备上。本文让 Mac、飞牛、安卓各用一个独立成员,便于确认设备归属。

客户端在线,飞牛页面还是打不开

先确认地址使用的是飞牛的 组网 IP ,并保留正确端口 5666。不要把本地地址、星空控制台端口和飞牛管理端口混用。

复制代码
可以再做一次基础检查:
Mac 或 Linux:观察基础连通性
ping -c 4 192.168.188.2

再检查具体 HTTP 服务
curl --noproxy '*' --connect-timeout 5 --max-time 10 \
  --silent --show-error --output /dev/null \
  --write-out 'HTTP 状态:%{http_code}\n' \
  http://192.168.188.2:5666

Ping 不通不一定等于 Web 服务不可达;Ping 能通也不代表目标端口正常。判断飞牛管理服务时,应结合 HTTP 请求和浏览器实际页面。

如果地址与端口无误,再检查网络或主机防火墙是否允许所需访问,以及当前路由是否把组网地址交给了其他 VPN。不要用直接关闭防火墙代替定位问题。

手机切换到移动数据后访问失败

确认手机的星空客户端仍然连接,VPN 标识没有消失,再检查是否被系统省电策略或后台限制暂停。官方安卓文档列出了后台保活与电池优化方面的排查建议。

同时确认 NAS 一侧仍然运行。本文飞牛在 Mac 虚拟机里,Mac 休眠、虚拟机暂停或 Docker 停止,都会影响远程访问。这里的"远程"并不会消除服务端持续在线的要求。

地址池和现有网络重叠

如果家庭网络或另一套 VPN 恰好也使用 192.168.188.0/24,应检查是否存在路由冲突。需要调整时,再到后台评估新的组网地址池。

后台提示,修改地址池会同步调整已有成员虚拟 IP,并通知在线客户端重启。因此,已经正常运行的网络不要仅为跟教程保持一致就随意修改网段。

容器更新后,需要重新确认什么

本例配置没有额外添加持久化目录。容器重建、镜像更新和普通重启是不同操作,不要假定重建之后一定保留原来的登录状态。更新前保存 Compose 配置并按官方说明核对配置保存方式,更新后检查版本、登录状态、虚拟 IP 和实际访问结果。

八、新装飞牛,也可以考虑原生 FPK

如果你的飞牛还没有部署客户端,官方已经提供 x86_64 和 ARM64 的原生 FPK 安装包 。按处理器架构下载后,在飞牛应用中心使用"手动安装",完成后打开应用并登录成员账号即可继续接入。飞牛原生安装说明

这里选安装包要看 飞牛系统自身的架构,不能仅根据浏览器所在电脑判断。本次设备信息已确认飞牛为 ARM 虚拟机。

本文保留 Compose 路线,是因为实验环境已实际使用它;原生安装属于另一种可选方式,不需要与现有容器同时重复部署。

这次实验最终完成了从官网成员准备、飞牛容器配置、客户端连接,到 Mac 页面验证和安卓 5G 访问的流程。对日常远程管理而言,先让目标设备在线、核对组网 IP 与服务端口,再到独立外部网络测试,是比只看"连接成功"提示更可靠的验收方式。


本文依据本次实际界面、运行项目及手机操作结果整理。官网功能、下载版本和入口可能更新;后续安装请以对应官方文档为准。

星空组网注册链接:点击注册星空组网账号

相关推荐
wuyk5551 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 06 章 2.4G&5G 频段信道干扰、穿墙、带宽、速率工程选型
物联网·5g
聚美智数1 小时前
手机号归属地-手机号归属地查询-手机归属地-运营商归属地
android·智能手机
恋猫de小郭1 小时前
Shopify 从 React Native 回到 Swift/Kotlin,但是你以为有手就行??
android·前端·ios
m0_734571761 小时前
深入理解5g <四> 功率控制过程
5g
菠萝加点糖1 小时前
Android ChipGroup 使用说明
android
for_ever_love__1 小时前
iOS: GCD高级API
macos·ios·objective-c·cocoa·多线程·gcd
我命由我123452 小时前
Android Compose 开发,使用 ConstraintLayout,但是引入的是旧的 ConstraintLayout
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
小鱼干..2 小时前
http://101.43.154.45:60083/start/index.php?page=hello
android
hai_android2 小时前
Android WorkManager 笔记
android·java