背景 链接到标题
已有 NetBird 自建网络覆盖办公室、家里、云服务器等多个节点,日常用 macOS/Linux 客户端体验很好。现在想让 iPhone 也能访问办公室内网资源(如内部服务、开发环境)。
第一选择:NetBird 链接到标题
NetBird 有官方 iOS App,支持自建服务器(Private Setup),配置很简单:
- 在管理面板生成 Setup Key
- iPhone App 输入服务器 URL 和 Key
- 授权 VPN 权限即可
遇到的问题 链接到标题
问题一:iOS DNS 限制
办公室内网域名走 *.lan 后缀,由内网 dnsmasq 解析。NetBird 的 Nameserver Group 虽然配置了 lan 域指向内网 DNS,但 iOS 客户端对自定义 DNS 解析器支持有限——蜂窝网络下根本无法配置 DNS,WiFi 下手动改 DNS 为内网地址后,流量走隧道出去 DNS 查询却不一定走隧道。
问题二:网络封锁
在办公室集团 WiFi 下,NetBird 一开始能连通,也能通过 IP 访问内网服务。但几分钟后连接中断,反复重连都失败。切换到 5G 则一切正常。判断是企业 WiFi 的 DPI 检测到 VPN 特征后进行了限流或阻断。
这两个问题在 NetBird 层面难以绕过,决定换方案。
回归 WireGuard 链接到标题
之前已经有一条 WireGuard 备份网络,拓扑很简单:
- 中心 Hub:一台公网服务器(
10.99.99.10) - 办公室跳板:
10.99.99.40 - 家庭节点:
10.99.99.41 - 笔记本:
10.99.99.5
只需要把 iPhone 加进去即可。
添加 iPhone 节点 链接到标题
在 Hub 上生成密钥对,添加 Peer:
# 生成密钥
priv=$(wg genkey)
pub=$(echo "$priv" | wg pubkey)
# 添加到运行中的 WG 接口
wg set wg0 peer <PUBKEY> allowed-ips 10.99.99.60/32 persistent-keepalive 25
持久化到配置文件,在 [Peer] 段添加:
[Peer]
PublicKey = <PUBKEY>
AllowedIPs = 10.99.99.60/32
PersistentKeepalive = 25
关键:添加路由 链接到标题
Hub 上需要添加 iPhone IP 的路由,否则回包走公网:
ip route add 10.99.99.60/32 dev wg0
同时修改跳板机的 AllowedIPs,从单 IP 改为整个办公室子网:
wg set wg0 peer <WASP_PUBKEY> allowed-ips 10.99.99.40/32,192.168.99.0/24
Hub 上还需要添加办公室子网的路由指向 wg0:
ip route replace 192.168.99.0/24 dev wg0
跳板机 iptables 链接到标题
跳板机上开启转发和 MASQUERADE:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -A FORWARD -o wg0 -j ACCEPT
iPhone 配置 链接到标题
WireGuard iOS App 支持导入配置文件或扫描二维码。配置内容:
[Interface]
PrivateKey = <iPhone 私钥>
Address = 10.99.99.60/32
DNS = 内网 DNS
[Peer]
PublicKey = <Hub 公钥>
Endpoint = <Hub 公网 IP>:51820
AllowedIPs = 10.99.99.0/24, 192.168.99.0/24
PersistentKeepalive = 25
DNS 设为办公室内网的 dnsmasq 地址,这样 *.lan 域名和短名(如 http://内网服务)都能解析。
二维码用 qrencode 生成:
qrencode -t ANSIUTF8 < iphone.conf
最终拓扑 链接到标题
iPhone -> Hub(公网)-> 跳板机 -> 办公室内网 192.168.99.0/24
对比 链接到标题
| 特性 | NetBird | WireGuard |
|---|---|---|
| 配置复杂度 | 低(自动 Mesh) | 中(手动配 Peer) |
| iOS DNS 支持 | 有限 | 好(直接在配置中指定) |
| 抗封锁能力 | 弱(WebSocket 特征明显) | 强(纯 UDP,特征简单) |
| 蜂窝网络 | 稳定 | 稳定 |
| 短名访问 | 依赖 NetBird DNS | 直接配内网 DNS |
总结 链接到标题
NetBird 在桌面端和服务器端体验很好,Mesh 网络自动管理 Peer 非常方便。但在 iOS 上遇到 DNS 和网络封锁两个硬伤。回归 WireGuard 虽然需要手动管理,但胜在稳定可控,配置一次后 iPhone 上基本不用再管。
WireGuard iOS App 支持按需连接(检测到特定 WiFi 自动触发),日常使用几乎无感。