跳到主要内容

常规路由很简单:数据包带着目的地地址,系统在路由表里查找,选出最匹配的路由,从对应接口发出去。决定只取决于数据包要去哪里。策略路由改变了这一点:系统会先看数据包的其他信息,比如是哪台设备发的、用了哪个端口、带着什么标记,然后按规则选择一张路由表。

对 VPN 用户来说,这很重要,因为路由器或 Linux 主机正是靠它来决定“这台笔记本走 VPN,那台智能电视不走”,或者“这类流量进隧道,其他流量直接出去”。本文讲解 VPN 场景下策略路由的思路、组成部分、实用示例、可能出错的地方以及测试方法。内容只停留在路由层面。若想了解“排除某些应用”的通用概念,请阅读 什么是分流隧道;路由器上的具体规则见 路由器上的分流隧道。

常规路由解决不了的问题

装了 VPN 的设备有两条出路:物理网络和隧道接口。默认路由决定优先使用哪一条。通常 VPN 会加入一条路由,让隧道成为默认出口,于是一切流量都走隧道。

再设想一个家用路由器,上面有一条 VPN 连接,还有几台设备:

  • 工作笔记本应走 VPN。
  • 智能电视应用应走普通连接,因为它在 VPN 地址上会失灵。
  • 手机只在主人需要时才走 VPN。
  • 家中的服务器必须能从本地网络访问。

基于目的地的路由无法表达这些要求,因为这四台设备可能访问同一个目的地。真正不同的是来源,也就是设备,或者流量的用途。这正是策略路由要填补的空白。

策略路由如何工作

这个思路由三个协同工作的部分组成。

1. 匹配(Match)。 规则描述它适用于哪些数据包。常见的条件包括:

  • 源 IP 地址或地址段,通常用来标识某台设备或一组设备。
  • 目的地址或地址段。
  • 协议和端口,例如 TCP 443 或 UDP 123。
  • 入站接口,比如某个特定的 Wi-Fi 网络或 VLAN。
  • 防火墙标记(firewall mark),也就是防火墙事先打上的一个小标签。

2. 选择路由表(Select a table)。 规则匹配后,系统改用某张指定的路由表,而不是主表。一张表可能把所有流量送往 VPN 接口,另一张送往普通网关。

3. 转发(Route)。 数据包按选中的表走,匹配的流量进入 VPN,其余沿默认路径。

Linux 上的典型写法如下,仅用于说明大致形态。

# Table 100 sends traffic into the VPN interface
ip route add default dev vpn0 table 100

# Rule: traffic from the work laptop uses table 100
ip rule add from 192.168.1.20 lookup 100 priority 1000

路由器固件把同样的思路包装成界面:选设备,选“使用 VPN”或“绕过 VPN”,系统自动写出等效的规则。这些示例里的私有地址段来自 RFC 1918 所说明的保留地址集合。

规则顺序与优先级

规则按顺序检查,第一条匹配的规则生效,因此优先级是策略路由中最重要的单一概念。

家庭网络的一个简短例子:

  1. 优先级 100:访问本地网络(192.168.1.0/24)的流量使用主表,打印机和家中服务器仍可访问。
  2. 优先级 200:来自工作笔记本的流量使用 VPN 表。
  3. 优先级 300:按需使用 VPN 的手机,仅当流量带有特定标记时才使用 VPN 表。
  4. 优先级 32766:其余一切使用主表,也就是普通连接。

如果规则 2 排在规则 1 之上,工作笔记本就无法再访问家里的打印机,因为它的本地流量被送进了隧道而无处可去。如果规则 4 意外排在最前面,所有 VPN 规则都永远不会匹配。大多数“策略不起作用”或“打印机不见了”的问题,最后都归结为顺序。

匹配类型对比

匹配类型 标识的对象 适合 注意
源地址 一台设备或一组设备 按设备开关 VPN 地址必须固定,请使用地址保留
目的地址 某台服务器或地址段 只把办公室或工作目的地送进隧道 背后有多个地址的服务会随时间变化
端口与协议 一类流量 让某项服务走 VPN 很多应用共用常见端口,规则会覆盖过宽
接口或 VLAN 整个网段 访客 Wi-Fi 或“VPN 专用”Wi-Fi 需要路由器支持分段
防火墙标记 防火墙设置的标签 条件复杂的组合 更难读懂,更容易配错

基于源地址的规则最容易理解:连在“VPN Wi-Fi”上的设备走隧道,连在普通 Wi-Fi 上的不走。许多家庭选这种方式,因为不需要逐个应用去考虑。

策略路由与相近概念的区别

人们常问它与类似的想法有何不同。

  • 应用级分流隧道: 由手机或电脑上的应用来决定,通常按进程名。策略路由在网络层做决定,所以对无法安装 VPN 应用的设备(比如电视或游戏机)同样有效。
  • 静态路由: 指向某个目的地的固定路由。它可以把某个地址段送入隧道,但不能按发送设备来选择。
  • VPN 路由器与 VPN 应用: 策略路由是路由器方案灵活性的一部分。更全面的比较见 VPN 路由器与 VPN 应用。
  • 零信任或按应用访问: 它们工作在身份和应用层面,是完全不同的思路。

一个完整的例子

设想一个家庭,路由器支持策略规则,并已配置了 VPN 连接。

  • 爸爸的工作笔记本:192.168.1.20。
  • 妈妈的手机:192.168.1.30。
  • 智能电视:192.168.1.40。
  • NAS 存储:192.168.1.50。

目标是:笔记本始终在隧道内;手机仅在连接名为“Private”的 Wi-Fi 时才在隧道内;电视从不使用隧道;所有设备都能访问 NAS。

他们按顺序设置了四条规则。第一,去往 192.168.1.0/24 的流量使用主表。第二,来自 192.168.1.20 的流量使用 VPN 表。第三,从 Private Wi-Fi 进入的流量使用 VPN 表。第四,其余使用主表。他们还加了第五项:一条防火墙规则,如果 VPN 接口断开,就丢弃来自 192.168.1.20 和 Private Wi-Fi 的流量,起到断网保护的作用。

结果:笔记本始终受保护,手机按 Wi-Fi 选择,电视照常使用,NAS 仍可访问。他们的测试方法是在每台设备上打开 IP 检测页面,确认显示的地址符合预期。

策略路由哪里会出问题

多数故障是悄无声息的。网络照样能用,只是不像你想的那样。

  • 隧道断开时泄漏。 如果 VPN 接口断了,VPN 表就失去默认路由。系统可能回落到主表,流量就以明文出去。请加一条规则来阻断这些流量,而不是让它回落。
  • DNS 走错路。 设备把域名查询发给路由器,而路由器可能用普通连接。要确保走 VPN 的设备,其 DNS 也经过隧道。见 什么是 DNS 泄漏。
  • 忽略了 IPv6。 为 IPv4 写的规则不适用于 IPv6。如果网络分配了 IPv6 地址,设备可能绕过策略。要么也对 IPv6 做路由,要么对这些设备关闭它。
  • 地址变化。 如果设备重启后获得了不同的本地地址,源地址规则就不再匹配。请使用 DHCP 地址保留。
  • MTU 问题。 隧道会缩小可用的数据包大小。如果没有调整最大包长,经 VPN 表的流量在某些网站上可能会卡住。
  • 地址段重叠。 如果你所访问的网络与你家使用同一个私有地址段,本地路由会优先,部分流量会去错地方。
  • 旧标记或连接跟踪。 修改规则后,已有连接可能继续沿用旧路径,让测试变得混乱。请重新建立连接,或清除已跟踪的状态。

如何测试一套策略

  1. 检查规则列表。 按顺序阅读当前生效的规则和路由表,确认与你的意图一致。
  2. 逐台设备测试。 在每台设备上打开 IP 检测页面,与预期对照。
  3. 测试 DNS。 对应当在隧道内的设备做 DNS 泄漏测试。
  4. 测试 IPv6。 使用能报告 IPv6 的网站,确认没有意外的地址。
  5. 主动断开隧道。 有意断开 VPN,确认受保护的设备会失去网络,而不是改用普通连接。
  6. 测试本地访问。 在策略生效时打印、打开 NAS、向电视投屏。
  7. 重启路由器。 确认规则和隧道按正确顺序恢复。

限制与良好习惯

策略路由功能强大,也很容易过度设计。请遵循几条原则。

  • 优先使用基于源地址的规则,它们最容易阅读和审查。
  • 规则够用就好,并在每条规则旁写一行说明。
  • 修改前备份配置,以便恢复到可用状态。
  • 不要把路由器上的规则当作针对同一网络中蓄意用户的安全边界。设备的拥有者通常可以修改自己的网络设置。
  • 记住:策略路由不会让 VPN 更私密,它只决定哪些流量进入隧道。
  • 在路由器上逐步设置时,请使用设备厂商自己的说明,并参考 路由器设置指南。

总结

策略路由让路由器或电脑按来源、端口、接口或标记等规则,而不仅是目的地,来选择数据包的路径。对 VPN 而言,它是让部分设备或流量进入隧道、而其余走普通连接的底层机制。关键在于规则顺序、隧道断开时的兜底措施、一致的 DNS 与 IPv6 行为,以及逐台设备的测试。规则要少而易读,并且要亲自验证,而不是想当然地相信它有效。

如果一张预付的 VPN 通行证能帮你测试这样的设置,可在 价格页面 查看目前的选择。

常见问题

用最简单的话说,策略路由是什么?

它是路由器或电脑根据数据包本身的规则来选择路径的方法,比如是哪台设备发出的、用了哪个端口、被打上了什么标记,而不是只看目的地地址。

策略路由与分流隧道有什么区别?

分流隧道是目标:一部分流量走 VPN,一部分不走。策略路由是实现该目标的一种技术手段,通常在路由器或 Linux 主机上,通过匹配发送设备、端口或防火墙标记的规则来完成。

普通家用路由器能用策略路由吗?

只有固件支持才行。许多消费级路由器提供简单的“按设备开关 VPN”,其实就是藏在友好界面背后的策略路由。更高级的规则通常需要能暴露路由表和防火墙标记的固件。

策略路由生效期间 VPN 断开会怎样?

取决于配置。如果没有兜底规则,本应走 VPN 的流量可能通过普通连接泄漏。设计良好的策略会包含一条规则,在隧道断开时阻止或丢弃这些流量。

使用它必须懂路由表吗?

在界面友好的路由器上做基本的按设备设置,不需要。若要在 Linux 或高级固件上自写规则,在依赖它之前,应当先理解路由、规则优先级,以及 DNS 如何跟随流量。

关于作者

Bob Kanokphon Thongdee,XPASS VPN 创始人

Bob Kanokphon Thongdee

  • XPASS VPN 创始人
  • eSIMonline.asia 联合创始人
  • 7 年以上网络营销经验
  • Cojourney Visa 与 Cojourney Travel 创始人

短途出行或忙碌的一个月,需要 VPN?

XPASS 提供按天数计算的预付通行证。一次付款,不会自动续费。

查看通行证

继续阅读

设备指南

路由器 VPN 策略路由与分流设置

策略路由能让同一台路由器把一部分设备送进 VPN,另一部分走普通线路。本文讲解选择方法、规则写法和常见陷阱。

阅读约 10 分钟

设备指南

Linux 上 VPN 路由表详解

Linux 上的 VPN 本质上是一组路由决策。学会读 ip route,理解半默认路由和策略表,并排查流量为何走错方向。

阅读约 9 分钟

VPN 基础

路由器 VPN 还是 VPN 应用:哪种方式适合你的家?

VPN 应该装在路由器上,还是装在每台设备上?本文从速度、智能家居设备、Mesh Wi-Fi、分流和日常便利性几个方面比较两种做法。

阅读约 10 分钟

VPN 安全

什么是分流隧道(Split Tunneling)?

分流隧道让你选择哪些应用或网站走 VPN,哪些直接访问互联网。它很灵活,但也会改变被保护的范围。

阅读约 9 分钟

设备指南

路由器 VPN 断开时如何防止泄露

手机 App 能在隧道断开时提醒你,路由器却不会。本文讲解如何让路由器在 VPN 掉线时直接断网而不是悄悄走普通线路,并教你测试。

阅读约 10 分钟