avatar

蜗牛札记

记录技术、生活与一点点折腾

  • 首页
  • PetBoxX
  • 工具软件
  • NAS 折腾
  • Linux 运维
  • VPS & 网络
  • 关于
主页 用 Hysteria2 和 Shadowrocket 实现随时随地高速访问 NAS
文章

用 Hysteria2 和 Shadowrocket 实现随时随地高速访问 NAS

发表于 2026-07-10 更新于 2026-07- 21
作者 Snailszzy
83~106 分钟 阅读

文章定位

这篇文章记录一套实际可用的 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 直接暴露公网带来的安全风险。

VPS & 网络
许可协议:  CC BY 4.0
分享

相关文章

7月 23, 2026

代理网络故障排查指南:从 DNS、Fake-IP、TUN 到节点连接

适用系统:macOS、Ubuntu、Windows 适用工具:Shadowrocket、v2rayN、Clash、sing-box、Xray、Hysteria2 等 典型现象:IP 节点正常、域名节点超时;延迟显示 -1;开代理后 DNS 异常;手机正常但电脑不正常 脱敏说明:本文中的 exampl

7月 10, 2026

用 Hysteria2 和 Shadowrocket 实现随时随地高速访问 NAS

文章定位 这篇文章记录一套实际可用的 NAS 远程访问方案。目标不是把所有流量都丢进 VPN,而是只把访问 NAS 的私网流量精准送进 Hysteria2 隧道,让手机、平板、电脑和 Apple TV 在家里、公司、蜂窝网络、酒店 Wi-Fi 下都能用同一个入口访问 NAS。 这套方案适合后续做成

7月 6, 2026

清理 Ubuntu 系统垃圾:释放磁盘空间的常用方法

在长期使用 Ubuntu 服务器的过程中,系统日志、apt 缓存、旧内核、用户目录缓存等都会逐渐占用大量磁盘空间。尤其是云服务器系统盘较小的情况下,很容易出现根分区 / 空间不足的问题。 本文整理一套常用、安全的 Ubuntu 系统清理方法,适合用于服务器日常维护。 1. 先查看根目录占用情况 在清

下一篇

代理网络故障排查指南:从 DNS、Fake-IP、TUN 到节点连接

上一篇

清理 Ubuntu 系统垃圾:释放磁盘空间的常用方法

最近更新

  • Public Node Observatory
  • 代理网络故障排查指南:从 DNS、Fake-IP、TUN 到节点连接
  • 用 Hysteria2 和 Shadowrocket 实现随时随地高速访问 NAS
  • 清理 Ubuntu 系统垃圾:释放磁盘空间的常用方法
  • 在 3x-ui / Xray 服务端配置广告拦截,并兼顾 Netflix 等流媒体解锁

热门标签

Halo PetBox PetBoxX

目录

©2026 蜗牛札记. 保留部分权利。

使用 Halo 主题 Chirpy