用 Hysteria2 和 Shadowrocket 实现随时随地高速访问 NAS
文章定位
这篇文章记录一套实际可用的 NAS 远程访问方案。目标不是把所有流量都丢进 VPN,而是只把访问 NAS 的私网流量精准送进 Hysteria2 隧道,让手机、平板、电脑和 Apple TV 在家里、公司、蜂窝网络、酒店 Wi-Fi 下都能用同一个入口访问 NAS。
这套方案适合后续做成 PPT 或视频教程,用来讲解:
- 如何用 Hysteria2 搭建高带宽低延迟的 NAS 访问隧道
- 为什么公网入口和 NAS 服务入口要分开
- 为什么不要直接暴露 WebDAV、DSM、SMB 到公网
- 如何用
nas-media.lan做统一访问入口 - 如何用 Cloudflare DDNS 解决公司公网 IP 变化的问题
- 如何在 v2rayN 中让普通代理与 NAS 专用 Hysteria2 出站同时工作
一、最终目标
NAS 位于公司内网:
NAS 内网 IP:10.10.6.78
WebDAV 端口:5005
DSM / Web 管理端口:5050
Hysteria2 Server 端口:8443/UDP
Cloudflare DDNS:nas.example.com
内部统一访问名:nas-media.lan
最终希望所有设备都只记一个 NAS 入口:
nas-media.lan
不同服务用不同端口:
WebDAV / Infuse:nas-media.lan:5005
DSM / 管理页面:nas-media.lan:5050
而公网域名 nas.example.com 只作为 Hysteria2 隧道入口,不直接给 Infuse 当 WebDAV 地址。
二、核心设计思想
这套方案里有两个名字,它们职责不同:
nas.example.com = 公网隧道入口
nas-media.lan = 隧道内 NAS 服务入口
可以这样理解:
nas.example.com 是进隧道的大门
nas-media.lan 是隧道里面的 NAS 房间
Infuse、Safari、Apple TV 需要访问的是 NAS 服务,所以它们使用:
nas-media.lan:5005
nas-media.lan:5050
Shadowrocket / Hysteria2 节点需要连接的是公网隧道入口,所以它使用:
nas.example.com:8443
三、为什么不直接用 nas.example.com 做 Infuse 地址
nas.example.com 解析到公司公网 IP:
nas.example.com -> 公司公网 IP -> 公司路由器
它后面只开放 Hysteria2 端口:
公网 UDP 8443 -> NAS 10.10.6.78:8443
如果在 Infuse 里填:
WebDAV 地址:nas.example.com
端口:5005
实际访问路径会变成:
Infuse -> nas.example.com:5005 -> 公司公网 IP:5005
除非公司路由器额外开放:
公网 5005 -> NAS 10.10.6.78:5005
否则不会通。
更重要的是,不建议这样做。直接暴露 WebDAV、DSM、SMB 到公网,风险远高于只暴露隧道端口。
推荐做法:
公网只暴露 Hysteria2
WebDAV / DSM / SMB 只在隧道内部访问
四、端口暴露的风险差异
公网暴露的端口分两类。
第一类是隧道入口:
8443/UDP = Hysteria2
51820/UDP = WireGuard
这类端口有协议握手、认证、加密和密钥保护。外部扫描到端口,也不能直接看到 NAS 文件服务。
第二类是 NAS 业务服务:
5005 = WebDAV
5050 = DSM / Web 管理
445 = SMB
22 = SSH
这类服务一旦暴露公网,攻击者可以直接访问登录页面或协议入口,容易被扫描、爆破或利用漏洞。
所以原则是:
可以接受只暴露隧道端口
尽量不要暴露 NAS 业务服务端口
本方案最终只需要:
公网 UDP 8443 -> NAS 10.10.6.78:8443
如果 WireGuard 已经不用,建议关闭公网 51820 转发。
五、为什么使用 nas-media.lan
nas-media.lan 不是必须的名字,只是一个清晰的内部别名。
它的含义是:
nas-media = 媒体 NAS
.lan = 局域网 / 内部访问
它不依赖公网 DNS,也不会暴露到 Cloudflare。我们只在 Shadowrocket 或本地 Hosts 中手动映射:
外出:nas-media.lan -> 10.10.6.78
家里:nas-media.lan -> 10.10.8.1
公司:nas-media.lan -> 10.10.6.78
不建议用 .local,因为 Apple 设备上 .local 常被 mDNS / Bonjour 接管,可能引起解析异常。
也不建议用 nas.example.com 作为内部服务名,因为它已经承担公网隧道入口职责。
六、整体架构
flowchart LR
Device["Mac / iPhone / iPad / Apple TV"] --> App["Infuse / Safari"]
App --> Alias["nas-media.lan"]
Alias --> Policy["Shadowrocket / v2rayN 场景规则和 Host 映射"]
Policy --> Tunnel["Hysteria2 隧道"]
Tunnel --> Public["nas.example.com:8443/UDP"]
Public --> Router["公司路由器端口转发"]
Router --> Server["NAS Hysteria2 Server"]
Server --> WebDAV["NAS WebDAV 10.10.6.78:5005"]
Server --> DSM["NAS DSM 10.10.6.78:5050"]
七、NAS 端 Hysteria2 Server
NAS 上运行 Hysteria2 Server,监听 UDP 8443。外部设备并不是直接访问 WebDAV 或 DSM,而是先连接这个 Hysteria2 Server,再由隧道内部访问 NAS 的私网服务。
下面以常见 Linux / Synology NAS 的 SSH 环境为例。不同 NAS 型号 CPU 架构不同,下载二进制时要选择对应版本:
x86_64 / amd64:选择 linux-amd64
ARM64 / aarch64:选择 linux-arm64
1. 登录 NAS
先通过 SSH 登录 NAS,并切换到 root:
ssh <nas-user>@<nas-lan-ip>
sudo -i
示例中的 <nas-lan-ip> 可以理解为 NAS 的内网地址,例如:
10.10.6.78
2. 创建目录
mkdir -p /usr/local/bin
mkdir -p /usr/local/etc/hysteria2
mkdir -p /usr/local/var/log/hysteria2
3. 下载 Hysteria2
到 Hysteria2 的 Release 页面下载对应架构的二进制文件:
https://github.com/apernet/hysteria/releases
如果 NAS 是 x86_64 / amd64,可以类似这样部署:
cd /tmp
wget -O hysteria2 https://github.com/apernet/hysteria/releases/download/app%2Fv2.x.x/hysteria-linux-amd64
install -m 755 hysteria2 /usr/local/bin/hysteria2
/usr/local/bin/hysteria2 version
如果 NAS 是 ARM64,则把下载文件换成:
hysteria-linux-arm64
建议部署时去 GitHub Release 页面复制最新版本链接,不要长期使用旧版本链接。
4. 生成认证密码和混淆密码
Hysteria2 至少需要一个认证密码。为了降低被主动探测的概率,建议同时开启 salamander 混淆。
生成两个随机密码:
AUTH_PASSWORD="$(openssl rand -hex 24)"
OBFS_PASSWORD="$(openssl rand -hex 16)"
echo "AUTH_PASSWORD=${AUTH_PASSWORD}"
echo "OBFS_PASSWORD=${OBFS_PASSWORD}"
保存好这两个值,客户端配置时会用到:
auth password = AUTH_PASSWORD
obfs password = OBFS_PASSWORD
5. 生成 TLS 证书
为了简单部署,可以先使用自签证书。示例使用 nas.example.com 作为证书域名:
openssl req -x509 -newkey rsa:2048 -nodes \
-keyout /usr/local/etc/hysteria2/server.key \
-out /usr/local/etc/hysteria2/server.crt \
-days 3650 \
-subj "/CN=nas.example.com"
chmod 600 /usr/local/etc/hysteria2/server.key
chmod 644 /usr/local/etc/hysteria2/server.crt
如果使用自签证书,客户端需要开启:
跳过证书验证 / allow insecure
更正式的做法是后续使用 Let's Encrypt 证书,让客户端不再需要跳过证书验证。
6. 写入 server.yaml
把下面配置写入:
/usr/local/etc/hysteria2/server.yaml
示例配置:
listen: :8443
tls:
cert: /usr/local/etc/hysteria2/server.crt
key: /usr/local/etc/hysteria2/server.key
auth:
type: password
password: <你的认证密码>
obfs:
type: salamander
salamander:
password: <你的混淆密码>
congestion:
type: bbr
如果用命令生成,可以执行:
cat > /usr/local/etc/hysteria2/server.yaml <<EOF
listen: :8443
tls:
cert: /usr/local/etc/hysteria2/server.crt
key: /usr/local/etc/hysteria2/server.key
auth:
type: password
password: ${AUTH_PASSWORD}
obfs:
type: salamander
salamander:
password: ${OBFS_PASSWORD}
congestion:
type: bbr
EOF
chmod 600 /usr/local/etc/hysteria2/server.yaml
7. 前台测试启动
先前台运行一次,确认配置没有语法错误:
/usr/local/bin/hysteria2 server \
-c /usr/local/etc/hysteria2/server.yaml \
--log-level info
看到服务正常监听后,按 Ctrl+C 停止,再配置后台服务。
8. 创建 systemd 服务
如果 NAS 支持 systemd,可以创建:
/etc/systemd/system/hysteria2.service
内容如下:
[Unit]
Description=Hysteria2 Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/hysteria2 server -c /usr/local/etc/hysteria2/server.yaml --log-level info
Restart=always
RestartSec=5
StandardOutput=append:/usr/local/var/log/hysteria2/server.log
StandardError=append:/usr/local/var/log/hysteria2/server.log
[Install]
WantedBy=multi-user.target
启用服务:
systemctl daemon-reload
systemctl enable --now hysteria2
systemctl status hysteria2
查看日志:
tail -f /usr/local/var/log/hysteria2/server.log
如果 NAS 不支持 systemd,也可以用 NAS 自带的任务计划或启动脚本,在开机时执行:
/usr/local/bin/hysteria2 server -c /usr/local/etc/hysteria2/server.yaml --log-level info >> /usr/local/var/log/hysteria2/server.log 2>&1 &
9. 确认端口监听
在 NAS 上检查 UDP 8443 是否监听:
netstat -ulnp | grep 8443
或:
ss -ulnp | grep 8443
看到 hysteria2 监听 :8443 即可。
公司路由器只需要转发:
公网 UDP 8443 -> NAS 10.10.6.78 UDP 8443
WebDAV、DSM、SMB 不需要暴露到公网。
10. 客户端对应参数
部署完成后,客户端 Hysteria2 节点需要填写:
服务器地址:nas.example.com
端口:8443
SNI:nas.example.com
跳过证书验证:开启,自签证书时需要
认证密码:server.yaml 中的 auth.password
混淆类型:salamander
混淆密码:server.yaml 中的 obfs.salamander.password
如果证书暂时还是旧域名签发,例如 old-ddns.example.net,则 SNI 暂时填旧证书域名:
服务器地址:nas.example.com
SNI:old-ddns.example.net
后续把证书换成 nas.example.com 后,再统一为:
服务器地址:nas.example.com
SNI:nas.example.com
八、Cloudflare DDNS
公司公网 IP 会变化,所以用 Cloudflare DNS 维护:
nas.example.com -> 当前公司公网 IP
NAS 上定时运行 DDNS 脚本:
/bin/sh /usr/local/bin/cloudflare-ddns.sh
DSM 任务计划建议:
用户:root
日期:每天
首次运行时间:00:00
运行频率:每 5 分钟
最后运行时间:23:55
DNS 记录保持:
类型:A
名称:nas
内容:由脚本自动更新
代理状态:仅 DNS
TTL:120 或自动
注意 Cloudflare 这里必须是“仅 DNS”,不要开启橙色云代理。Hysteria2 是 UDP 隧道服务,不能通过普通 Cloudflare Web 代理转发。
九、三种场景的访问路径
1. 家里
家里路由器运行 Hysteria2 Client,并在路由器上做本地端口转发。
例如:
10.10.8.1:5005 -> Hysteria2 -> NAS 10.10.6.78:5005
10.10.8.1:15050 -> Hysteria2 -> NAS 10.10.6.78:5050
家里配置中:
nas-media.lan -> 10.10.8.1
访问路径:
Infuse / Safari
-> nas-media.lan:5005
-> 10.10.8.1:5005
-> 家里路由器 Hysteria2 Client
-> nas.example.com:8443
-> NAS Hysteria2 Server
-> NAS 10.10.6.78:5005
DSM 管理页面:
Safari
-> nas-media.lan:15050 或 10.10.8.1:15050
-> 家里路由器 Hysteria2 Client
-> NAS 10.10.6.78:5050
如果希望家里也统一使用 nas-media.lan:5050,可以在家里路由器额外把本地 5050 转发到 NAS 5050。否则家里 DSM 使用 15050 也可以。
2. 公司
公司网络下,设备和 NAS 在同一个内网,最佳路径是直连,不需要绕 Hysteria2。
公司配置中:
nas-media.lan -> 10.10.6.78
访问路径:
Infuse
-> nas-media.lan:5005
-> NAS 10.10.6.78:5005
DSM 管理:
Safari
-> nas-media.lan:5050
-> NAS 10.10.6.78:5050
3. 外部网络 / 蜂窝网络
外部网络下,手机、iPad、Mac 不在公司内网,无法直接访问 10.10.6.78。移动设备可由 Shadowrocket、桌面电脑可由 v2rayN,把 nas-media.lan 的流量送进 Hysteria2 节点。
外出配置中:
nas-media.lan -> 10.10.6.78
Shadowrocket 规则:
DOMAIN,nas-media.lan,OUTSIDENAS
Host 映射:
nas-media.lan = 10.10.6.78
建议保留:
use-local-host-item-for-proxy = true
访问路径:
Infuse / Safari
-> nas-media.lan:5005 或 nas-media.lan:5050
-> Shadowrocket Host 映射为 10.10.6.78
-> DOMAIN,nas-media.lan 命中 OUTSIDENAS
-> Hysteria2 Client
-> nas.example.com:8443
-> 公司路由器 UDP 8443 转发
-> NAS Hysteria2 Server
-> NAS 10.10.6.78:5005 或 5050
十、为什么外出时不建议用裸 IP
理论上可以加:
IP-CIDR,10.10.6.78/32,OUTSIDENAS,no-resolve
但在实际测试中,http://nas-media.lan:5050/ 可以访问,而 http://10.10.6.78:5050/ 不一定稳定。这通常和 Shadowrocket 对裸 IP、TUN 路由、私网地址绕过规则有关。
为了让裸 IP 强制进隧道,可能需要移除:
skip-proxy = 192.168.0.0/16
tun-excluded-routes = 192.168.0.0/16
IP-CIDR,192.168.0.0/16,DIRECT
但不建议为了裸 IP 把这些全拆掉,因为它可能影响你访问真实局域网设备。
更推荐的做法是:
把 10.10.6.78 当作底层实现
把 nas-media.lan 当作日常入口
日常只访问:
http://nas-media.lan:5050/
WebDAV: nas-media.lan:5005
十一、为什么不能全局走 NAS 节点
OUTSIDENAS 是“回公司内网访问 NAS”的专用节点,不适合作为普通外网代理。
如果把 Shadowrocket 切到全局 OUTSIDENAS,Google、YouTube、ChatGPT 等流量都会从 NAS 所在的公司网络出去。公司网络可能无法访问这些服务,于是会出现超时。
推荐策略:
OUTSIDENAS:只访问 NAS / 公司内网
PROXY:访问 Google / YouTube / ChatGPT
DIRECT:国内网站或本地网络
规则示例:
DOMAIN,nas-media.lan,OUTSIDENAS
DOMAIN-SUFFIX,google.com,PROXY
DOMAIN-SUFFIX,youtube.com,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY
不要把模式切成全局 OUTSIDENAS。
十二、Infuse 推荐配置
WebDAV 配置:
协议:WebDAV
地址:nas-media.lan
端口:5005
路径:video
用户名:NAS 用户名
密码:NAS 密码
HTTPS/SSL:关闭
这样在不同场景下,Infuse 都只需要记住:
nas-media.lan:5005
底层如何到 NAS,由 Shadowrocket 场景配置或本地路由转发决定。
十三、Shadowrocket 外出配置重点
Hysteria2 节点:
类型:Hysteria2
地址:nas.example.com
端口:8443
SNI:old-ddns.example.net
跳过证书验证:开启
混淆:salamander
认证密码:Hysteria2 server.yaml 中的 auth password
混淆密码:Hysteria2 server.yaml 中的 salamander password
后续如果 Hysteria2 证书换成 nas.example.com,则可以统一为:
地址:nas.example.com
SNI:nas.example.com
规则:
DOMAIN,nas-media.lan,OUTSIDENAS
Host:
nas-media.lan = 10.10.6.78
不要把 nas-media.lan 写成 DOMAIN-SUFFIX,推荐使用完整主机名匹配:
DOMAIN,nas-media.lan,OUTSIDENAS
十四、v2rayN 桌面端配置
Shadowrocket 更适合 iPhone、iPad、Apple TV 和 Mac 场景切换。Windows、macOS 或 Linux 电脑也可以使用 v2rayN,并让普通代理节点与 NAS 专用 Hysteria2 节点同时工作。
目标不是把整个电脑切换到 NAS 节点,而是实现:
Google / YouTube 等普通外网 -> 当前活动代理节点
nas-media.lan / NAS 私网 IP -> OutsideNas 专用节点
国内网站和本地网络 -> DIRECT
1. 添加 OutsideNas Hysteria2 节点
在 v2rayN 中新增 Hysteria2 节点,示例参数如下:
别名:OutsideNas
地址:nas.example.com
端口:8443
认证密码:填写服务端 auth password
混淆:salamander
混淆密码:填写服务端 obfs password
TLS:开启
SNI / Server Name:nas.example.com
跳过证书验证 / Allow insecure:关闭
如果服务端仍使用自签证书,才需要临时开启 Allow insecure。使用 Let's Encrypt 等受信任证书后,应关闭该选项,并保证:
节点地址 = 证书域名 = SNI
SNI 不能留空。部分 Xray/Hysteria2 组合不会自动把节点地址补成 SNI,可能出现:
CRYPTO_ERROR
tls: internal error
503 Service Unavailable
2. 为什么不能只使用 proxy 标签
v2rayN 中普通规则的 outboundTag: proxy 通常指向当前活动节点。例如当前活动节点是一个普通外网代理,那么:
outboundTag: proxy -> 当前活动代理节点
它不会自动指向名为 OutsideNas 的 NAS 节点。因此需要在规则编辑器中选择 OutsideNas 作为预定义出站,让 v2rayN 为它生成独立出站。
最终会形成两个出口:
proxy -> 当前活动的普通代理节点
OutsideNas -> nas.example.com:8443 的 Hysteria2 节点
这样当前活动节点仍可保持为日常代理,NAS 流量则由规则单独送进 OutsideNas。
3. 创建 OutsideNAS 规则集
新建规则集:
别名:OutsideNAS
排序:0
域名解析策略:AsIs
添加两条规则。
第一条用于裸 IP:
别名:NAS-IP
网络:tcp,udp
IP:10.10.6.78/32
outboundTag:OutsideNas
第二条用于统一域名:
别名:NAS-Domain
网络:tcp,udp
域名:full:nas-media.lan
outboundTag:OutsideNas
规则顺序必须位于下面的私网直连规则之前:
geoip:private -> direct
geosite:private -> direct
否则 10.10.6.78 会先被识别为私网地址并尝试本地直连,外部网络自然无法访问。
正确顺序:
1. 10.10.6.78/32 -> OutsideNas
2. full:nas-media.lan -> OutsideNas
3. geoip:private -> direct
4. geosite:private -> direct
4. 与日常分流规则组合
在路由设置中保留两个规则集:
OutsideNAS:排序 0
V4-绕过大陆:排序 1
外部网络或手机热点下同时启用:
[x] OutsideNAS
[x] V4-绕过大陆
公司内网下不需要绕公网 Hysteria2:
[ ] OutsideNAS
[x] V4-绕过大陆
公司网络直接访问:
10.10.6.78:5005
10.10.6.78:5050
如果在公司内网仍强制走 OutsideNas,路径会变成:
公司电脑 -> 公司公网 IP:8443 -> 公司路由器 UDP NAT 回环 -> NAS
这依赖公司路由器支持 UDP NAT Loopback。很多路由器并不支持或表现不稳定,因此公司内网应直接访问 NAS,不要绕公网入口。
5. 添加 nas-media.lan Hosts 映射
路由规则只决定流量走哪个出口,不负责把域名解析成 IP。还需要在 v2rayN 的 DNS/Hosts 设置中添加:
nas-media.lan = 10.10.6.78
否则可能出现:
http://10.10.6.78:5050/ 可以访问
http://nas-media.lan:5050/ 无法访问
配置成功后,v2rayN 生成的 Xray 配置中应能看到类似内容:
{
"dns": {
"hosts": {
"nas-media.lan": "10.10.6.78"
}
}
}
6. 系统代理与 TUN 的区别
浏览器通常遵循系统代理,因此使用 v2rayN 的“自动配置系统代理”即可访问:
http://nas-media.lan:5050/
Infuse、WebDAV 客户端和部分原生应用不一定遵循系统 HTTP/SOCKS 代理。这类应用需要开启 v2rayN TUN,让目标私网流量进入 Xray。
原则如下:
Safari / Chrome:系统代理通常足够
Infuse / 原生 WebDAV:可能需要 TUN
同一时间只运行一个 TUN 应用
使用 v2rayN 时应彻底退出 Shadowrocket、WireGuard 等其他 TUN 程序,避免 DNS、默认路由或私网路由互相覆盖。
7. v2rayN 外部网络访问路径
flowchart LR
App["浏览器 / WebDAV 客户端"] --> Inbound["v2rayN 系统代理或 TUN"]
Inbound --> Rule["匹配 NAS-IP / NAS-Domain"]
Rule --> Outbound["OutsideNas 独立出站"]
Outbound --> Public["nas.example.com:8443/UDP"]
Public --> Router["公司路由器 UDP 转发"]
Router --> Hy2["NAS Hysteria2 Server"]
Hy2 --> Service["NAS 10.10.6.78:5005 / 5050"]
普通外网同时保持原路径:
flowchart LR
Browser["Google / YouTube"] --> V2["v2rayN"]
V2 --> Proxy["当前活动代理节点"]
Proxy --> Internet["Internet"]
8. v2rayN 验证方法
先连接手机热点或其他真正的外部网络,然后测试裸 IP:
curl -x http://127.0.0.1:10808 \
-I http://10.10.6.78:5050/
正常情况下应返回:
HTTP/1.1 200 OK
再测试统一域名:
curl -x http://127.0.0.1:10808 \
-I http://nas-media.lan:5050/
在 v2rayN 日志中应看到类似:
taking detour [OutsideNas] for [tcp:10.10.6.78:5050]
dialing to udp:nas.example.com:8443
测试时同时在 NAS 查看:
tail -f /usr/local/var/log/hysteria2/server.log
如果客户端日志显示规则已命中,但 NAS 完全没有新连接,问题发生在 Hysteria2 握手、DDNS、UDP 8443、SNI 或证书阶段。
9. v2rayN 常见故障
节点测试延迟为 -1
-1 不一定代表 NAS 隧道不可用。v2rayN 的默认测试 URL 可能是 Google 等公网网站,而 NAS 节点本来只用于访问私网服务。最终应以实际访问 10.10.6.78:5050 或 WebDAV 为准。
返回 503 Service Unavailable
这通常是本地 Xray 已收到请求,但 Hysteria2 出站建立失败。打开详细日志重点检查:
tls: internal error -> 检查 SNI 与证书域名
timeout -> 检查 DDNS、UDP 8443 和运营商网络
failed to resolve host -> 检查 DNS 与 Hosts
日志出现 closed pipe
io: read/write on closed pipe
这通常表示浏览器或上游连接提前关闭。应结合它前面的错误判断,不能单凭 closed pipe 认定 NAS 服务故障。
规则命中却走错节点
检查日志中的出站标签。如果规则只写 proxy,它会使用当前活动节点。NAS 规则应明确使用 OutsideNas 独立出站。
手机热点仍然无法访问
按顺序检查:
1. Mac 公网出口是否已经变化
2. OutsideNAS 规则是否排在 private/direct 前
3. OutsideNas 出站地址是否为 nas.example.com:8443
4. SNI 是否明确填写 nas.example.com
5. Allow insecure 是否与证书类型一致
6. NAS 日志是否出现新的 client connected
十五、常见排查方法
1. DDNS 是否正确
dig +short nas.example.com @1.1.1.1
应该返回公司当前公网 IP。
2. NAS 服务是否正常
在 NAS 上测试:
curl -I http://127.0.0.1:5050/
curl -I http://10.10.6.78:5050/
curl -I http://127.0.0.1:5005/
5050 返回 200 OK 代表 DSM / Web 管理服务正常。5005 根路径返回 404 不一定是错误,WebDAV 根路径经常这样。
3. 手机流量是否进入 Hysteria2
在 NAS 上看日志:
tail -f /usr/local/var/log/hysteria2/server.log
如果看到:
client connected
reqAddr: 10.10.6.78:5005
reqAddr: 10.10.6.78:5050
说明手机请求已经进入 Hysteria2。
如果只看到 client connected,没有 reqAddr,说明节点连上了,但应用请求没有按预期进入隧道。
4. Safari 测试要写完整 URL
排查时不要只输入:
10.10.6.78
nas-media.lan
要写完整:
http://nas-media.lan:5050/
http://nas-media.lan:5005/
Safari 有时会自动补 HTTPS 或忽略端口,完整 URL 更可靠。
十六、最终推荐入口
用户日常只记:
nas-media.lan
不同用途:
Infuse / WebDAV:nas-media.lan:5005
DSM 管理页面:nas-media.lan:5050
公网域名只给隧道使用:
Hysteria2 节点:nas.example.com:8443
三种场景:
外出:nas-media.lan -> Shadowrocket / v2rayN 的 OutsideNas -> Hysteria2 -> NAS
家里:nas-media.lan -> 10.10.8.1 本地转发 -> Hysteria2 -> NAS
公司:nas-media.lan -> 10.10.6.78 直连
十七、一句话总结
这套方案的关键不是“全局 VPN”,而是“精准隧道”:
只让 NAS 私网服务走 Hysteria2
普通外网继续走原来的代理或直连
公网只暴露隧道端口
NAS 服务端口始终藏在隧道内部
这样既能获得高带宽、低延迟的远程 NAS 体验,也能减少 WebDAV、DSM、SMB 直接暴露公网带来的安全风险。