在折腾家庭实验室(HomeLab)、NAS 或远程办公时,我们经常面临一个痛点:如何优雅地回家?
市面上有 OpenVPN、ZeroTier、frp 等众多工具,而最近大火的 Tailscale 更是被称为“内网穿透的神器”。但是,当它遇到 iOS 系统限制,或者作为出口节点(Exit Node)使用时,往往会遇到各种“坑”。
本文将基于真实的使用场景,为你总结一套从入门到精通的避坑指南。
一、 痛点:iOS 上的“一山不容二虎”
很多 iPhone 用户发现,一旦开启 Tailscale,原本正在运行的 Shadowrocket(小火箭)就会掉线。
1. 核心原因
这是 iOS 系统层面的限制:系统只允许同时存在一个活跃的 VPN 隧道(VPN Tunnel)。Tailscale 和 Shadowrocket 都需要占用这个通道,因此无法共存。
2. 解决方案
针对不同需求,有以下三种解法:
- 方案 A:快捷指令“自动换岗”(最简单)
利用 iOS 的「快捷指令」App,制作“回家”和“出国”两个按钮。一键关闭小火箭并打开 Tailscale,反之亦然。适合大多数普通用户。 - 方案 B:服务端“桥接”(高阶玩法)
如果你必须同时使用(例如一边挂梯子一边连内网),可以在你的 VPS 上安装 Tailscale。然后在 Shadowrocket 中添加分流规则,将内网 IP 段(如100.64.0.0/10)指向 VPS。这样手机只需开小火箭,流量由 VPS 转发进 Tailscale 网络。 - 方案 C:使用 Cloudflare Tunnel(彻底绕过)
这是唯一能让两者“共存”的方法。通过 Cloudflare Tunnel 将内网 Web 服务(如 NAS 管理页、Jellyfin)映射为公网域名。你在手机上直接用 Safari 访问域名,不需要开 VPN,自然就不会冲突。
二、 选型:Tailscale, ZeroTier 还是 OpenVPN?
如果把组网工具比作车,它们的区别如下:
| 工具 | 类型 | 适用场景 | 核心优势 | 缺点 |
|---|---|---|---|---|
| Tailscale | 超级跑车 | 个人/小团队首选 | 零配置,基于 WireGuard,协议先进,省电,穿透性强。 | 官方中继在海外(极端网络下稍慢)。 |
| ZeroTier | 全能SUV | 局域网游戏/老玩家 | 支持二层网络(广播),适合联机打红警/星际。 | ID 验证略繁琐,iOS 端体验稍逊。 |
| OpenVPN | 重型卡车 | 企业/旧设备 | 极其成熟,完全可控,合规性好。 | 配置极难(证书/端口),性能较慢,手机端耗电。 |
结论: 对于 95% 的个人用户,Tailscale 是目前的版本答案。
三、 进阶:Tailscale + frp 的“黄金搭档”
成年人不做选择,最好的方案是 Tailscale 与 frp 结合使用。
- Tailscale (内网隐形斗篷):
- 用途: 核心管理。
- 场景: SSH 连接服务器、SMB 文件传输、远程桌面。
- 特点: 安全性极高,不暴露端口,但在恶劣网络下可能打洞失败。
- frp (公网传送门):
- 用途: Web 服务访问。
- 场景: 手机看 Plex/Jellyfin、分享文件给朋友、访问 HomeAssistant。
- 特点: 速度快(走 VPS 直连),不需要客户端(完美解决 iOS 冲突),但需注意端口安全。
四、 避坑:Exit Node 连上却没网?
这是最让人抓狂的问题:你在学校/公司放了一台 Windows 或 Linux 电脑做跳板(Exit Node),手机显示连上了,但完全无法上网。
90% 的原因是:操作系统默认关闭了流量转发功能。
情况 1:你的跳板机是 Windows (Win10/Win11)
Windows 消费版默认禁止路由功能。你需要修改注册表:
- 打开 PowerShell (管理员)。
- 复制并运行以下命令:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "IPEnableRouter" -Value 1
- 重启电脑!(必须重启才生效)
- 在 Tailscale 网页控制台(Admin Console)的 Route Settings 中,批准该设备 Use as exit node。
- 防掉线小贴士: 记得把电脑的“睡眠”设置为“从不”。
情况 2:你的跳板机是 Linux (Ubuntu/Debian)
Linux 出于安全考虑默认关闭转发。
- 开启 IPv4 转发:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
- 批准设备: 同样需要在 Tailscale 网页后台开启 Exit Node 权限。
情况 3:特殊的网络环境(学校/公司大内网)
如果配置了转发依然没网,通常是 DNS 冲突。
- 现象: 能 Ping 通 IP(如 8.8.8.8),但打不开网页。
- 解决: 在 Tailscale 网页后台的 DNS 设置中,添加全局 DNS(如
223.5.5.5或1.1.1.1),并开启 Override local DNS。
总结
打造个人专网的终极建议:
- 主力工具: 首选 Tailscale,简单、快速、稳定。
- iOS 用户: 习惯使用快捷指令切换,或者用 frp 映射 Web 服务来规避 VPN 冲突。
- 做跳板机: 如果用 Windows 做出口节点,务必修改注册表开启路由转发,否则它只是个“死胡同”。
希望这篇指南能帮你打通网络的任督二脉!
版权属于:soarli
本文链接:https://blog.soarli.top/archives/815.html
转载时须注明出处及本声明。