知识 Wiki 总览 / VPN
全隧道与分流
更新于 2026-11-07条目链接
全隧道与分流描述 VPN 的流量选择范围。全隧道将大多数默认 IP 流量送入 VPN;分流只将指定网段、域名或应用流量送入 VPN,其余流量继续使用本地网络。实际行为受操作系统、VPN 客户端、路由和服务器策略共同影响。
全隧道
全隧道通常包含 IPv4 默认前缀 0.0.0.0/0,并应明确配置 IPv6 默认流量 ::/0 或采用有验证的阻断策略。服务端还必须负责转发、回程路由、DNS、出口访问和访问控制。若只覆盖 IPv4,设备的 IPv6 流量仍可能走本地网络。
分流
分流只选择必要的内网前缀或应用,降低不相关流量对 VPN 的占用,并保留本地网络访问。组织可用分流 DNS 只把内部域名查询发往内网解析器。分流扩大了本地网络和 VPN 同时可达的范围,因此需要明确内外网边界与访问策略。
配置示例
WireGuard 通用配置片段
# 分流:仅访问组织网段
AllowedIPs = 10.20.0.0/16, 10.8.0.0/24
# 全隧道:覆盖 IPv4 与 IPv6 默认流量
AllowedIPs = 0.0.0.0/0, ::/0
WireGuard Windows、macOS 和 Linux 客户端均使用各自受支持的客户端加载服务端签发的配置。配置中的地址段必须与网关分配保持一致。
Windows 原生 VPN
Set-VpnConnection -Name "Corp-IKEv2" -SplitTunneling $true
Add-VpnConnectionRoute -ConnectionName "Corp-IKEv2" -DestinationPrefix "10.20.0.0/16"
macOS Network Extension 开发片段
let ipv4 = NEIPv4Settings(
addresses: ["10.8.0.2"],
subnetMasks: ["255.255.255.255"]
)
// 分流配置
ipv4.includedRoutes = [
NEIPv4Route(destinationAddress: "10.20.0.0", subnetMask: "255.255.0.0")
]
// 全隧道配置,用下一行替换上面的分流配置
ipv4.includedRoutes = [NEIPv4Route.default()]
上段为 API 配置片段,前两行路由表示分流;最后一行表示 IPv4 默认路由。IPv6 必须另行配置。应用还需创建并提交完整的 Network Extension 隧道设置。
Linux WireGuard
[Peer]
AllowedIPs = 10.20.0.0/16, 10.8.0.0/24
# 全隧道改为:AllowedIPs = 0.0.0.0/0, ::/0
验证
分别检查 IPv4 与 IPv6 路由、DNS 解析器和目标地址的实际出口。不要仅凭客户端界面的“已连接”状态判断策略已生效。详见DNS 与 IPv6 泄露和路由与默认网关。
参考资料
OpenVPN:通过 VPN 路由全部客户端流量;WireGuard 官方快速入门;Apple:VPN 路由;Microsoft Learn:Add-VpnConnection。
