这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
基于策略的路由 [2019/02/07 06:56] whr [有状态回复策略] |
基于策略的路由 [2019/02/09 08:37] (当前版本) whr Format |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | 在默认情况下,操作系统使用路由表决定某个IP数据包的下一跳。而使用路由表只能基于数据包的目的地址来决定路由。 | + | 在默认情况下,操作系统使用路由表决定某个 IP 数据包的下一跳。而使用路由表只能基于数据包的目的地址来决定路由。 |
| - | 一些防火墙实现支持将匹配到的数据包置于指定的路由,而不遵循系统的路由表。由于防火墙软件支持十分详尽的规则来匹配数据包,这样相比使用路由表更加灵活。这种路由方式称为**基于策略的路由**(Policy Based Routing)。 | + | 一些防火墙实现支持将匹配到的数据包置于指定的路由,而不遵循系统的路由表。由于防火墙软件支持十分详尽的规则来匹配数据包,这样相比使用路由表更加灵活。这种路由方式称为**基于策略的路由**([[wp>Policy-based routing]])。 |
| ===== 使用 IP Filter 实现基于策略的路由 ===== | ===== 使用 IP Filter 实现基于策略的路由 ===== | ||
| 考虑以下场景 | 考虑以下场景 | ||
| - | 某个路由器有一个内网( LAN)接口 rl0,IP 地址为 192.168.120.1/24,以及两个用作外网(WAN)用途的网络接口 bge0 和 bge1,其IP地址分别为 10.1.101.12/24 和 172.18.10.220/20。访问私有和公开网络资源都通过接口 bge0 使用路由器 10.1.101.1 作为默认路由。 | + | 某个路由器有一个内网(LAN)接口 rl0,IP 地址为 192.168.120.1/24,以及两个用作外网(WAN)用途的网络接口 bge0 和 bge1,其IP地址分别为 10.1.101.12/24 和 172.18.10.220/20。访问私有和公开网络资源都通过接口 bge0 使用路由器 10.1.101.1 作为默认路由。 |
| ==== 无状态正向策略 ==== | ==== 无状态正向策略 ==== | ||
| 行 23: | 行 23: | ||
| 因为该路由器的默认路由是 10.1.101.1,接口 rge0;可以期待从此接口传入的请求将能够正常建立 TCP 连接。然而从 rge1 传入的请求通常将不能工作。因为当有来自外部的客户端,例如 116.62.123.0,发出了 TCP 请求(例如 TCP SYN),192.168.120.6 上的服务将正常对这个来源地址进行回复(例如 TCP ACK),而这个回复将被路由器 192.168.120.1 路由到 rge0 上的 10.1.101.1。由于此回复数据包的来源地址与当初发送请求的目的地址不同,客户端操作系统将会丢弃这个回复。 | 因为该路由器的默认路由是 10.1.101.1,接口 rge0;可以期待从此接口传入的请求将能够正常建立 TCP 连接。然而从 rge1 传入的请求通常将不能工作。因为当有来自外部的客户端,例如 116.62.123.0,发出了 TCP 请求(例如 TCP SYN),192.168.120.6 上的服务将正常对这个来源地址进行回复(例如 TCP ACK),而这个回复将被路由器 192.168.120.1 路由到 rge0 上的 10.1.101.1。由于此回复数据包的来源地址与当初发送请求的目的地址不同,客户端操作系统将会丢弃这个回复。 | ||
| - | 使用一个 SNAT 规则将从 rge1 传入 192.168.120.6:80 的数据包的来源地址更改为路由器自己在 LAN 接口的地址 192.168.120.1,就可以使相应的 TCP 通信正常工作。但是这样做将会使原始的来源地址丢失———— 192.168.120.6 上的 HTTP 守护进程将会看到相应请求来自 192.168.120.1,而不是真实的来源 IP 地址。 | + | 使用一个 SNAT 规则将从 rge1 传入 192.168.120.6:80 的数据包的来源地址更改为路由器自己在 LAN 接口的地址 192.168.120.1,就可以使相应的 TCP 通信正常工作。但是这样做将会使原始的来源地址丢失—— 192.168.120.6 上的 HTTP 守护进程将会看到相应请求来自 192.168.120.1,而不是真实的来源 IP 地址。 |
| 根据此需求,当路由器遇到来自 rge1 往 192.168.120.6:80 的 TCP SYN 请求时,需要将这个连接的所有回复数据包都路由到 rge1,而不走路由表。 | 根据此需求,当路由器遇到来自 rge1 往 192.168.120.6:80 的 TCP SYN 请求时,需要将这个连接的所有回复数据包都路由到 rge1,而不走路由表。 | ||