记录了我折腾 NAS 的相关问题和解决方案。
有线 mesh
- 子路由连 lan 口
- 关闭 DHCP
- 子路由修改 wifi 名字和主路由相同
在此之后,子路由会重启,然后就无法再次登录子路由的管理界面了。连着子路由,tracert 也不会显示子路由的 ip。
要做到无缝切换,需要整个过程中 ip 地址是不变的,因此主路由和副路由需要在同一个网段里面。
外网访问
为了实现快速的外网访问,有几种思路:
- 使用一个服务器转发
- 类似 ZeroTier 的 VPN 方案
- 直接使用公网 IP
对于后两种方案,需要:
- 首先实现“光猫改桥接”,然后使用路由器拨号。这样,光猫只会负责光信号转电信号,路由器实际上是整个家庭网络的边界了。
- 开启路由器的 UPnP 功能。
ZeroTier
在群晖套件里面直接安装。
1 | sudo ./zerotier-one -q listpeers |
Tailscale
配置方式类似,也可以在群晖套件里面直接安装。
光猫改桥接
对于移动来说,路由器拨号的账户是手机号,密码可以打 10086 重置密码。
NAT 穿透
最佳实践:
- 有一台阿里云服务器,作为控制面。也可以作为数据面(不过带宽就感人了)
原因是 ZeroTier 和 Tailscale 延迟很高,ssh 都很卡。如果能接受卡的程度,那么也不需要阿里云。
控制面至少需要转发 22、5000 端口。如果使用 nass3cp 需要转发 9443。 - 数据面考虑:
- 利用 nass3cp 用 S3 中转。基于 Cloudflare 当前的服务,基本不用钱。
- 利用 nathole 打洞。
- 直接使用阿里云服务器。
FRP 相关
直接转发 tcp(不推荐)
不推荐这个是因为不安全。
在自己电脑上启动
1 | ./frpc -c ./frpc.toml |
在 nas 上,其中 5005 是 nas 上的 webdav 的 port,而 22 就是 ssh 端口。
1 | [[proxies]] |
可以使用
1 | ./frp/frpc -c ./frp/frpc.toml |
不过这里建议使用 cyberduck 而不是 windows 的原生文件管理来做,因为 windows 文件管理很有 bug。cyberduck 的配置是阿里云的 addr,端口是 15005。
xtcp 打洞(不推荐)
frp 在 nas 上可以部署不同的协议。这里比较推荐的是 xtcp,可以打洞。
我做成了 f.sh 方便启动
打洞成功有下面这个日志,但是需要注意,这里不要让他通过 ZeroTier 等转发,不然实际上是没打成功。
1 | [p2p_5005] get natHoleRespMsg, sid [xxx], protocol [quic], candidate address [...], assisted address [...], detectBehavior: {Role:sender Mode:3 TTL:0 SendDelayMs:0 ReadTimeoutMs:5000 CandidatePorts:[{From:28106 To:28120}] SendRandomPorts:0 ListenRandomPorts:0} |
stcp
stcp 的安全性好,适合做转发控制面协议。下面的例子是 stcp,在 nas 端,给下面的配置:
1 | serverAddr = "alicloud_addr" |
然后只需要即可运行,在不需要的时候,其实可以把这个进程 kill 掉,这样比较安全,毕竟是通过外网打洞
1 | ./frp/frpc -c ./frp/frpc-s.toml |
在客户端,需要
1 | # frpc.toml |
在远程,只需要
1 | .\frpc.exe -c .\frpc-s.toml |
ssh 访问是
1 | ssh -p 6000 NAS用户名@127.0.0.1 |
关于 WebDav 的具体用法
Windows 访问 Nas 上文件只能借助于 WebDav。
在 Nas 上安装 WebDav Server 是很简单的。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters 上的 BasicAuthLevel 要改成 2。
Windows Defender 上需要新建入站规则,将 15005 和 15006 端口打开限制。
下面的配置是以 xtcp 为例的,如果使用 stcp 需要做对应修改。
1 | [[visitors]] |
搞完连上去是这样的,容量显示的是本地磁盘的,应该是什么 bug。

xtcp 的体感是连上去一会就断,所以复制个文件,看到的是波动特别明显。
比较推荐使用 Cyberduck.exe 去使用 WebDav 服务。
n4 打洞(不推荐)
不推荐
1 | python3 n4.py -c -h <公网服务器> |
nathole 打洞
https://github.com/CalvinNeo/nathole
我让 chatgpt 帮我做的,nat4 打洞成功率还挺高的。
先得本地生成 tunnel-keys,然后把它复制到 Nas 上的同名目录里面。
1 | python python/nat4_tunnel.py keygen --out tunnel-keys |
1 | python3 -u python/nat4_demo.py server --bind 0.0.0.0:40000 --rounds 12 --round-ms 5000 2>&1 | tee server.log |
Cyberduck 连接 127.0.0.1:18080 即可。
使用 nass3cp
原理是用便宜的 S3 服务中转。
https://github.com/CalvinNeo/nass3cp
建议使用 Cloudflare R2 服务,基本上免费。
编辑 nass3cp/config/ 中的 server.json,配置 allowed_roots 和 auth。关掉 tls,原因是我们控制面本来就是基于 stcp 转发的,很安全。
启动 WebUI
1
2
3
4
5# NAS
./nass3cp/bin/nass3cp-server --config nass3cp/config/server.json
# Local
.\bin\nass3cp.cmd --no-tls --host 127.0.0.1 --port 9443 browse nas:/volume1/shared当然也可以自己用命令行复制
全局梯子
OpenClash

下面是第一个配置的截图。总共有 10 张图,修改 url 来查看其他的图。
覆写设置 -> 开发者选项
1 | #!/bin/sh |
注意,和 PS5 相关的要走 DIRECT
1 | - DOMAIN-SUFFIX,playstation.com,DIRECT |