适用场景:NAS 在家里,人在外面(公司、咖啡厅、旅行),想安全访问 Jellyfin、Home Assistant、NPM、SSH、文件管理,绝不在公网开端口
三大方案对比:按「零配置程度、性能、适用场景」选一个即可,别全上(除非你是网络极客)
—
方案对比速查表
| 维度 | Tailscale | WireGuard(自建) | Cloudflare Tunnel |
| 零配置 | ⭐⭐⭐⭐⭐(装上登录即用) | ⭐⭐(需生成密钥、写配置、防火墙) | ⭐⭐⭐(需域名、CF 账号、cloudflared) |
| 穿透能力 | NAT/防火墙全自动打洞(DERP 中继兜底) | 需公网 IP 或端口映射 | 无需公网 IP,CF 边缘节点做入口 |
| 性能 | 直连 P2P(本地网速),中继时 50 Mbps | 线速(内核态,无中继) | 经 CF 边缘,延迟 +20-50ms,带宽受限于 CF 免费额度 |
| 访问方式 | 任意设备装客户端 → 直接访问 http://nas.tailnet.ts.net:端口 | 客户端导入配置 → 访问内网 IP | 浏览器直达 https://nas.yourdomain.com(无需客户端) |
| 适合人群 | 新手首选、多设备、跨平台、想最省事 | 有公网 IP、想完全自控、追求极致性能 | 已有域名、想给家人/朋友无客户端访问 Web 服务 |
| 成本 | 免费版 100 设备、1 用户、无流量限制 | 免费(自建 VPS/云服务器另算) | 免费(CF 免费额度足够家庭用量) |
| 对非 Web 服务(SSH/SMB/数据库) | ✅ 原生支持 | ✅ 原生支持 | ❌ 仅 HTTP/HTTPS(需配合 WARP 或 CF Zero Trust) |
—
方案 A:Tailscale(最推荐新手上手)
1. NAS 端安装(一条命令)
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
# 输出的登录链接在浏览器打开,用 GitHub / Google / Microsoft 账号登录
完成后 NAS 获得一个 100.x.y.z 尾网 IP,且自动获得 nas-name.tailnet.ts.net MagicDNS 域名。
2. 其它设备装客户端
- Windows/macOS/Linux:官网下载安装包 → 登录同一账号
- iOS/Android:App Store / Play Store 搜「Tailscale」
- 路由器(OpenWrt/梅林/Keenetic):装
tailscale 包 → 登录 → 开启子网路由,全网设备直达 NAS
3. 访问 NAS 服务(零额外配置)
| 服务 | 访问地址(示例) |
| Jellyfin | http://nas.tailnet.ts.net:8096 |
| NPM 管理面板 | http://nas.tailnet.ts.net:81 |
| qBittorrent | http://nas.tailnet.ts.net:8080 |
| Alist | http://nas.tailnet.ts.net:5244 |
| Home Assistant | http://nas.tailnet.ts.net:8123 |
| SSH | ssh user@nas.tailnet.ts.net |
| SMB | \\nas.tailnet.ts.net\media(Windows 资源管理器直接输) |
MagicDNS 自动解析,不用记 IP。想用自定义域名?Tailscale 免费版支持 *.ts.net 子域,Pro 版支持自带域名。
4. 进阶:ACL 访问控制(按需)
登录 https://login.tailscale.com/admin/acls → 编辑 JSON:
{
"groups": {
"group:family": ["alice@example.com", "bob@example.com"],
"group:admin": ["you@example.com"]
},
"acls": [
{"action": "accept", "src": ["group:family"], "dst": ["nas.tailnet.ts.net:8096","nas.tailnet.ts.net:8123"]},
{"action": "accept", "src": ["group:admin"], "dst": ["nas.tailnet.ts.net:*"]},
{"action": "accept", "src": ["*"], "dst": ["nas.tailnet.ts.net:22"]} // SSH 仅密钥登录
]
}
家人只能看 Jellyfin/HA,你拥有全权限,SSH 仅密钥。
—
方案 B:WireGuard(自建、极致性能、完全自控)
适合:手里有闲置 VPS(或云服务器)做「中转/出口」,想完全掌握密钥、不依赖第三方。
1. VPS 端(作为「弹出点」/ 入口)
# VPS 安装
apt update && apt install -y wireguard iptables
# 生成密钥对
wg genkey | tee server_private.key | wg pubkey > server_public.key
wg genkey | tee client_private.key | wg pubkey > client_public.key
/etc/wireguard/wg0.conf(VPS):
[Interface]
Address = 10.10.10.1/24
PrivateKey = <server_private.key>
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer] # NAS
PublicKey = <nas_public.key>
AllowedIPs = 10.10.10.2/32
[Peer] # 你的手机/电脑
PublicKey = <client_public.key>
AllowedIPs = 10.10.10.3/32
systemctl enable --now wg-quick@wg0
2. NAS 端(作为 Peer)
apt install -y wireguard
# 生成 NAS 密钥对
wg genkey | tee nas_private.key | wg pubkey > nas_public.key
/etc/wireguard/wg0.conf(NAS):
[Interface]
Address = 10.10.10.2/24
PrivateKey = <nas_private.key>
# 可选:把 NAS 当网关,让其它设备经 NAS 出去
# PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
[Peer] # VPS
PublicKey = <server_public.key>
Endpoint = <VPS公网IP>:51820
AllowedIPs = 10.10.10.0/24 # 只走尾网流量
PersistentKeepalive = 25 # 穿 NAT 必加
systemctl enable --now wg-quick@wg0
3. 客户端(手机/电脑)
导入配置(含 PrivateKey、Address=10.10.10.3/24、Peer=VPS公钥+Endpoint、AllowedIPs=10.10.10.0/24)。
4. 访问 NAS 服务
| 服务 | 访问地址 |
| Jellyfin | http://10.10.10.2:8096 |
| SSH | ssh user@10.10.10.2 |
| SMB | \\10.10.10.2\media |
优点:全内核态、线速、无中间商。缺点:需公网 IP VPS、手动管理密钥、跨平台客户端配置稍繁。
—
方案 C:Cloudflare Tunnel(零端口、给非技术家人用 Web 服务)
适合:已有域名、想让家人不用装任何客户端直接在浏览器打开 https://jellyfin.yourdomain.com、https://ha.yourdomain.com。
1. 前置条件
- 域名托管在 Cloudflare(NS 指向 CF)
- Cloudflare 账号(免费即可)
2. NAS 端安装 cloudflared
# Debian/Ubuntu
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cf.deb
sudo dpkg -i cf.deb
# 登录授权
cloudflared tunnel login
# 选择域名所在账号,授权完成会生成 cert.pem
3. 创建隧道 & 配置入口
# 创建隧道(名字随意)
cloudflared tunnel create nas-home
# 输出:Tunnel ID: xxxx-yyyy-zzzz + 生成 credentials 文件
# 写配置文件 /etc/cloudflared/config.yml
tunnel: xxxx-yyyy-zzzz
credentials-file: /root/.cloudflared/xxxx-yyyy-zzzz.json
ingress:
- hostname: jellyfin.yourdomain.com
service: http://localhost:8096
- hostname: ha.yourdomain.com
service: http://localhost:8123
- hostname: npm.yourdomain.com
service: http://localhost:81
- hostname: alist.yourdomain.com
service: http://localhost:5244
- service: http_status:404 # 兜底
4. 跑通 & 做系统服务
# 测试
cloudflared tunnel run nas-home
# 浏览器访问 jellyfin.yourdomain.com → 应自动签发 Let's Encrypt 证书(CF 托管 DNS 时)
# 安装为服务
sudo cloudflared service install
sudo systemctl enable --now cloudflared
4. 访问控制(CF Zero Trust,免费 50 座位)
登录 https://one.dash.cloudflare.com → Access → Applications → Add an application → Self-hosted:
- Application Domain:
jellyfin.yourdomain.com
- Policy:
Emails ending in @yourdomain.com / Specific emails: alice@gmail.com, bob@qq.com / MFA: TOTP / WebAuthn
- 保存 → 家人打开链接先登录/验证,再进 Jellyfin,零客户端、零端口暴露。
—
选哪个?(决策树)
你有域名吗?
├─ 是 → 想让家人「浏览器直达」不用装客户端?
│ ├─ 是 → **Cloudflare Tunnel**(Web 服务) + **Tailscale**(SSH/SMB/管理)
│ └─ 否 → **Tailscale** 全搞定
└─ 否 → 有公网 IP VPS / 云服务器?
├─ 是 → 想完全自控、极致性能?→ **WireGuard**
└─ 否 → **Tailscale**(免费、免公网 IP、免域名、全平台)
—
组合推荐(生产环境最稳)
| 服务类型 | 推荐入口 | 备选 |
| Web 面板(Jellyfin/NPM/Alist/HA) | Cloudflare Tunnel + Access(家人零门槛) | Tailscale MagicDNS(自己用) |
| SSH / SMB / 数据库 / 非 HTTP | Tailscale(加密、认证、审计全有) | WireGuard(若已有 VPS) |
| 管理员应急 | Tailscale(手机装客户端随时进) | SSH over Tailscale |
一句话落地:
- NAS 装 Tailscale → 解决 SSH、SMB、管理、个人访问
- 有域名 → 再装 Cloudflared → 给家人分发
https://jellyfin.yourdomain.com 等链接
- 追求极致/已有 VPS → 再加 WireGuard 作为备用/高性能通道
—
常见坑 & 一句话解决
| 现象 | 原因 | 修正 |
Tailscale 连不上、显示 relay | 双方 NAT 类型对不上、DERP 延迟高 | 确保 NAS 有 IPv6 或 UPnP;路由器开启 Tailscale 子网路由 |
| CF Tunnel 证书报错 | DNS 没托管在 CF / 域名锁定 | 域名 NS 必须指向 CF;cloudflared tunnel login 重新授权 |
| WireGuard 握手成功但 Ping 不通 | AllowedIPs 写错 / 防火墙拦截 | 双端 AllowedIPs 必须包含对端 Tunnel IP;iptables -A FORWARD -i wg0 -j ACCEPT |
| 家人打开 CF 域名进不去 | Access 策略没匹配上 | 检查邮箱大小写、策略顺序、浏览器隐私模式清 Cookie 重试 |
—
一键部署清单(按需复制)
# ===== Tailscale(必装)=====
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
# ===== Cloudflare Tunnel(有域名才装)=====
# 1. cloudflared login
# 2. cloudflared tunnel create nas-home
# 3. 写 /etc/cloudflared/config.yml(见上文)
# 4. sudo cloudflared service install && sudo systemctl enable --now cloudflared
# ===== WireGuard(有 VPS 才装)=====
# VPS 端、NAS 端、客户端三份配置对应好密钥、端口、AllowedIPs
# systemctl enable --now wg-quick@wg0