CPN-连接私网(FnCPN):把 NAS 和它所在的整个局域网一起带出门
飞牛商店里的 CPN-连接私网,能让你在外面直接进 NAS 所在的整个局域网,不只是 NAS 那一台。装法、首次登录、每日用法和它那几个绕不开的限制,都在这篇。
飞牛自带的远程访问能让你在外面打开 NAS 的网页后台。这个够用,但不够用的时候也很明显:你想连的不是 NAS,是 NAS 后面那台路由器、那台打印机、那个只绑了内网 IP 的开发机。
CPN-连接私网(项目名 FnCPN)解决的就是这个。它在你手机或电脑和家里之间拉一条虚拟网线,让远程设备像是插在同一个交换机上。
项目地址:https://github.com/rectcircle/fn-connect-private-network
它凭什么说"自动"
同类工具多半要你选模式:走中转还是走直连、填中继地址、配密钥。FnCPN 把这一步藏起来了,它自己判断走哪条路:
- 局域网直达——你在家,那就走内网,速度拉满;
- IPv6 直连——家里有 IPv6、你那边也支持,点对点打过去,不经过中转;
- FN Connect 中继——前面两条都不通,退回飞牛自己的中继通道。
你不用知道现在走的是哪条,界面会告诉你,但它会自己选、自己切。
代价是它依赖 FN Connect。这不是一套完全独立的内网穿透,是站在飞牛远程访问肩膀上再往前做了一层。所以第一件事:NAS 上得先开好 FN Connect,没开这个,装完也连不上。
装之前确认三件
一、NAS 端:fnOS,x86_64 或 ARM64,FN Connect 已启用。服务端只认这两个架构,ARM 的板子装不了。
二、账号:需要一个 fnOS 用户账号。普通用户就能连;但装软件、改服务端网络设置要管理员。
三、先装服务端,再装客户端。顺序反了,客户端会一直转圈。
第一步:NAS 上装服务端
飞牛应用中心里搜 CPN 或 连接私网,装上。也可以在项目 Releases 下载 .fpk 手动装:
- x86_64 的机器:
fncpn-<版本>-fnos-x64.fpk - ARM64 的机器:
fncpn-<版本>-fnos-arm64.fpk
装完打开它,确认服务在跑。管理页里能改私有网段,默认是 10.253.203.1——记住这个地址,后面要用。
第二步:选客户端
它铺得比想象中全:
| 你的设备 | 选哪个包 | 能不能直接装 |
|---|---|---|
| Apple Silicon Mac | macos-arm64-unsigned.pkg | 要手动去隔离标记 |
| Intel Mac | macos-x64-unsigned.pkg | 同上 |
| Windows x64 / ARM64 | windows-*-unsigned.msi | 能装,会有"未知发布者"提示 |
| Android 8.0+ | android-arm64-v8a.apk | 能装,需允许"安装未知应用" |
| iPhone / iPad(iOS 15+) | ios-arm64-unsigned.ipa | 不行,得自己签名 |
| HarmonyOS(API 20+) | harmonyos-arm64-unsigned.hap | 不行,得自己签名 |
| Debian / Ubuntu / Fedora / openSUSE / Arch | .deb / .rpm / .pkg.tar.zst | 能装,需要 systemd |
几个必须说清楚的地方,免得你装到一半骂人:
作者没有 Apple 开发者账号,也没有华为开发者账号。所以 macOS 的 PKG 是 ad-hoc 签名、没公证;iOS 和鸿蒙的包根本没签名,App Store 和华为市场里都没有。
iOS 那边,你需要一份带 Network Extension(Packet Tunnel)权限的签名材料,自己签完再装。鸿蒙同理,要注册华为开发者账号、开调试、用 HapSign 这类工具申请设备绑定证书。
这不是作者偷懒,是分发渠道的成本。如果你只是想在手机上看 NAS 里的电影,用飞牛 App 就行,别为了这个折腾签名。
macOS 上装的时候会拦一下,去掉隔离标记就行:
xattr -d com.apple.quarantine "$HOME/Downloads/fncpn-<版本>-macos-arm64-unsigned.pkg"
open "$HOME/Downloads/fncpn-<版本>-macos-arm64-unsigned.pkg"
愿意用 Homebrew 的:
brew tap rectcircle/fn-connect-private-network https://github.com/rectcircle/fn-connect-private-network
brew install --cask rectcircle/fn-connect-private-network/fncpn
Linux 有安装脚本,会自己判断有没有桌面环境,有桌面装 Core+UI,纯命令行只装 Core:
curl -fsSL https://raw.githubusercontent.com/rectcircle/fn-connect-private-network/main/scripts/install-linux.sh -o install-fncpn-linux.sh
bash install-fncpn-linux.sh
第三步:首次登录
打开客户端,会依次问你三样东西:
- FN Connect ID(NAS 开了访问码的话,这一步还要填访问码);
- fnOS 用户名和密码;
- 账号开了两步验证的,接着填六位 OTP,可以勾"信任此设备"。
点"登录并连接"。成功后它会自动注册这个设备、建立通道,密码不会被存下来——下次会话失效时重新输一次就行。
连上之后,进"连接详情"看两个东西:
- NAS 私有地址(默认
10.253.203.1) - 有没有"已启用的 LAN 网段"
用那个地址访问,就跟你坐在家里一样。
连上之后,地址从哪来
分两种情况:
你在家:它走局域网直达,你直接用 NAS 原来的内网 IP,速度跟平时没区别。
你在外面:用详情里显示的私有地址。如果管理员在服务端开了 LAN 网段,那个网段里的其他设备(路由器、打印机、别的机器)也能访问。
网段撞了怎么办:如果你所在的地方(比如公司)内网也是 10.253.203.x,它会提示冲突,然后只保留 NAS 私有地址可用,别的访问不了。解决办法是在 NAS 的 FnCPN 管理页把网段改成别的,比如 10.77.0.1,然后客户端重连。
命令行也能用
不想开图形界面,或者要在服务器上脚本化:
fncpn status # 看当前状态和走的哪条路
fncpn connect # 连接
fncpn disconnect # 断开
fncpn retry # 重试
fncpn diagnose --json # 出一份脱敏诊断
登录用 fncpn authorize <fn-id>,会在终端里问账号密码和 OTP,密码输入不回显。
这个对"在远程服务器上跑个脚本,需要访问家里内网"的场景特别有用。
日常那几个动作,别搞混
- 断开:暂停自动连接。你再点连接就回来了,配置都在。
- 重新登录:会话过期了,重新输密码。设备身份和配置保留。
- 退出登录:断开并清掉凭据,但保留隧道设备身份。下次登录会生成新的设备标识。
- 忘记此服务端:本机配置、密钥、凭据全清,等于重新来过。
几个绕不开的限制
Android 只能有一个 VPN。你手机里如果还开着别的 VPN(包括公司那种),它会冲突,得先关掉。
不承诺常驻。项目自己写明了:不保证开机自启、不保证"始终开启"模式、也不保证在厂商省电策略下一直在线。被系统杀掉就得手动点开。
中继速度看你运气。走 FN Connect 中继时,快慢取决于上游服务和当时的网络状况——它不是给你看 4K 原盘的,是给你"能连上、能操作"的。
iOS 和鸿蒙要自己签名,前面说过了,这是硬门槛。
它不吃掉飞牛原来的远程访问。两个并存,你平时用哪个都行。
一个安全细节,容易被忽略
在服务端管理页点「删除离线设备」,只是清掉那条记录,不等于撤销访问权限。
真要断掉某台设备的访问,得走 fnOS 账号那边——改密码、或者清掉那台设备的登录凭据。把这个当成"踢人"按钮用,会出事。
另外,它不往系统里装证书。连接用的是内置的、指纹固定的 ISRG Root X1,只对 fnos.net 和有效的 FN ID 子域生效,不动你系统里其他东西。这点比很多同类工具干净。
适合谁
- 在外面需要访问家里不止 NAS 一台设备的(路由器后台、内网服务、开发机);
- 家里有 IPv6,想要点对点直连速度的;
- 用 Linux 或命令行,想脚本化访问内网的;
- 手上是 Android 或 Windows,装个包就能用的。
不适合:只想在手机上看 NAS 里的片子(用飞牛 App 更省事);不接受自己签名 iOS 包的;内网 IP 段和常去的地方严重冲突又懒得改的。
最后
这类工具的价值不在"能不能连",在"连得顺不顺"。FnCPN 把选路这件事藏起来是对的——大部分人不关心走的是中继还是直连,只关心打开就能用。
代价是它绑在 FN Connect 上:飞牛那边出问题,这边一起受影响。要不要接受这个依赖,是你自己的选择。
装的过程中卡住,留言,我补进这篇。
留言