没有 NAS 也能异地访问:我用 NanoPi 搭了一个轻量内网
很多人手里都有一台长期通电的小主机NanoPi、软路由或者装了 Linux 的开发板。它可能跑着下载、监控、Home Assistant 或几个脚本。问题在于人在外面时想访问它往往要处理公网 IP、端口映射和动态域名。这次我没有用 NAS也没有搭 Web 服务而是让一台 Windows 虚拟机和 NanoPi 加入星空组网再做两项实际测试Windows 通过 SSH 登录 NanoPiNanoPi 主动连接 Windows 上的临时 TCP 监听端口。两端不在同一个物理网络也可以按内网方式互访。一、先把这次测试说清楚测试环境只有两个节点一台 Windows 11 虚拟机和一台 NanoPi R3S。Windows 端安装星空客户端NanoPi 运行 iStoreOS。本文所有访问都使用星空分配的虚拟 IP不使用家里的公网 IP也不需要在路由器上做端口映射。二、Windows 和 NanoPi 分别入网2.1 创建账号打开 星空组网官网用邮箱或手机号注册主账号。登录后进入管理平台为 Windows 和 NanoPi 分别创建成员账号。设备分开使用账号后续查看在线状态或撤销权限会清楚很多。2.2 Windows 下载安装星空软件本文截图中的客户端版本为 6.0.7。发布前如需使用新版Windows 端可从指定的 6.0.8 下载地址获取安装包。下载的是.exe文件按 Windows 安装向导完成安装即可。安装完成后用 Windows 对应的成员账号登录并保持客户端在线。2.3 NanoPi 安装 Linux/ARM 客户端这台 NanoPi 已装好 iStoreOS本文不展开系统安装过程。先在 NanoPi 上确认系统和架构uname -m cat /etc/os-release从输出可以看到这台 NanoPi 运行 iStoreOS 24.10.6OpenWrt 系架构是aarch64即 ARM64。因此不能使用 Windows.exe、x86 安装包或.deb包。我直接按官方 iStoreOS 文档操作。按文档提供的一键安装脚本安装客户端。安装完成后用 NanoPi 对应的成员账号登录。回到管理后台Windows 和 NanoPi 都显示在线。在“设备管理”中查看两台设备获得的星空虚拟 IP。后台在线只说明两台设备已经加入网络下面继续验证它们能否实际互访。三、验证连通性3.1 Windows 连接 NanoPi我在 Windows 11 中打开 Git Bash通过 NanoPi 的星空虚拟 IP 连接 iStoreOSssh root192.168.188.23.2 NanoPi 主动连接 WindowsWindows 能 SSH 登录 NanoPi 后我又换了方向测试不安装 Web Server只在 Windows 上临时监听一个 TCP 端口再让 NanoPi 主动连接过来。先以管理员身份打开 Windows PowerShell创建一条临时防火墙规则。规则只放行 NanoPi 的星空虚拟 IP192.168.188.2访问 Windows 的 18080 端口不会向其他来源开放该端口New-NetFirewallRule -DisplayName StarVPN temporary test 18080 -Direction Inbound -Action Allow -Protocol TCP -LocalPort 18080 -RemoteAddress 192.168.188.2接着在同一个 PowerShell 窗口启动临时监听。出现Waiting for NanoPi on port 18080...后窗口会停在原处等待 NanoPi 发起连接$listener [System.Net.Sockets.TcpListener]::new([System.Net.IPAddress]::Any, 18080) $listener.Start() Write-Host Waiting for NanoPi on port 18080... $client $listener.AcceptTcpClient() $client.Client.RemoteEndPoint $client.Close() $listener.Stop()切换到 NanoPi 终端先确认它能 ping 通 Windows 的星空虚拟 IP192.168.188.1再用 BusyBox 自带的nc连接 18080 端口ping -c 4 192.168.188.1 nc 192.168.188.1 18080这台 iStoreOS 的 BusyBox 版nc只支持nc IP地址 端口的精简语法不支持常见 Linux 示例里的-v、-z、-w参数。第二条命令执行后终端会停住表示连接仍在保持并不是卡死。回到 Windows PowerShell监听程序会输出 NanoPi 的远端地址格式类似192.168.188.2:xxxxx。这次 TCP 连接由 NanoPi 主动发起并成功到达 Windows 虚拟机。看到 Windows 输出后在 NanoPi 终端按CtrlC结束nc最后删除临时防火墙规则Remove-NetFirewallRule -DisplayName StarVPN temporary test 18080四、实测结果两端可以相互访问这次没有使用 NAS也没有做端口映射只让 Windows 虚拟机和 NanoPi 加入同一张星空网络。结果很直接Windows 通过 NanoPi 的星空虚拟 IP192.168.188.2成功建立 SSH 会话说明可以从 Windows 管理这台 iStoreOS 设备。NanoPi 对 Windows 虚拟 IP192.168.188.1发起 Ping6 个数据包全部收到回复随后 NanoPi 主动连接 Windows 的临时 18080 端口Windows 监听程序识别到了来源为192.168.188.2的连接。后台显示“在线”只能说明设备已经加入网络SSH、Ping 和 TCP 监听的结果才说明两端真的可以相互发起访问。延迟会受两端宽带、NAT 类型和当时线路影响本文只记录这次环境下的结果。测试结束后我删除了 Windows 上的 18080 临时防火墙规则。临时验证用过的端口和规则不应长期保留正式服务需要什么权限再单独配置。五、异地组网不等于远程访问 NASNAS 是异地组网里常见的一类设备但不是前提。只要两端有需要互通的服务就可以组网。对 NanoPi Windows 这组设备来说最直接的用途是远程维护出门时 SSH 回 iStoreOS查看运行状态、更新脚本或处理容器服务不必为了一个管理端口去申请公网 IP。家里的 Home Assistant、下载机、打印机管理页或摄像头管理端也可以按同样思路接入访问时使用对应的虚拟 IP。开发和小团队也有类似需求。测试环境放在云服务器、同事电脑或办公室小主机上时可以先把设备加入同一张虚拟网络再访问 SSH、内部 Web 服务、数据库管理页或远程桌面。这并不替代应用自身的登录认证但能减少临时联调时开放公网端口的需求。异地两台电脑传文件、局域网游戏联机、远程桌面协助、两处门店设备维护甚至让笔记本访问家里一台闲置电脑也都不依赖 NAS。先明确哪台设备需要访问哪项服务再决定是否接入即可。组网成功后成员账号和服务权限仍要单独管理。SSH、iStoreOS 管理后台和后续部署的应用应设置独立密码或密钥测试完成的临时端口、临时防火墙规则也要及时删除。先用两台设备完成一次 SSH 和 TCP 双向验证再按需求接入 NAS、云服务器、家庭服务器或其他电脑会更省事。