本文讨论的是在外面连接到家里的内网,比如访问内网 IP、SSH、SMB、科学上网等。如果你不需要访问完整内网,只需要访问其中一个服务,只需要配个 Nginx 就行了,本文不做讨论。
方案对比
下面是我折腾过的方案,其他方案欢迎留言讨论。
最早的时候用过 OpenConnect,默认会把本地的路由表干掉,影响日常使用,而且时间太早就不写了。
方案 | 网络环境要求 | 安装类型(server) | 连接类型 | 延迟 | 安装/维护成本 | 推荐指数 | 备注 |
---|---|---|---|---|---|---|---|
Tailscale / ZeroTier | 无 | docker | NAT | 高 | 低 | ★★☆☆☆ | 网段可能会冲突:比如你家里有一网段是 192.168.1/24(最常见的)并且添加到 tailscale 的静态路由里面了,在外面的 WiFi 网段刚好也是 192.168.1/24(它真的很常见),那你就访问不到家里的这个网段了,这一点刚好和 OpenVPN 相反。你可以把家里的网段手动修改成一个不常用的,比如 10.x.x/20 |
Tailscale + 自建中转 | 一个有公网 IPv4 的中转节点 | docker | NAT | 低 | 中 | ★★☆☆☆ | - |
Headscale | 一个有公网 IPv4 的中转节点 | docker | NAT | 低 | 中 | ★★☆☆☆ | - |
Tailscale + IPv6 | 公网 IPv6(两端) | docker | 直连 | 很低 | 低 | ★★★★★ | - |
OpenVPN + IPv6 | 公网 IPv6(两端) | 虚拟机 | 直连 | 很低 | 高 | ★★★☆☆ | - |
OpenVPN | 公网 IPv4(服务端) | 虚拟机 | 直连 | 很低 | 高 | ★★★☆☆ | 配置是真的繁琐,记得把证书的有效期设置长点 |
WireGuard | 公网 IPv4(服务端) | unRAID 内置 | 直连 | 很低 | 低 | ★★★★☆ | 可以配置多个 peer 达到多端同时连接的效果 |
补充
设置 Tailscale 的主要步骤:
- 添加静态路由
- 设置 DNS
- 【可选】设置 unraid 为 exit mode
- 【可选】在客户端(Mac/iOS)上选择 exit node。
设置 WireGuard 的文档:https://unraid.net/blog/wireguard-on-unraid
提醒:无论是哪个,苹果生态下载客户端都需要一个非中国区的 Apple ID。