第 26 章 配置静态路由
路由可确保您可以在相互连接的网络间发送和接收流量。在较大环境中,管理员通常配置服务以便路由器可以动态地了解其他路由器。在较小的环境中,管理员通常会配置静态路由,以确保流量可以从一个网络到下一个网络访问。
如果适用所有这些条件,您需要静态路由以在多个网络间获得正常运行的通信:
- 流量必须通过多个网络。
- 通过默认网关的独占流量流不足。
需要静态路由的网络示例 部分描述了没有配置静态路由时的场景,以及流量如何在不同网络之间流动。
26.1. 需要静态路由的网络示例
您需要在这个示例中的静态路由,因为并非所有 IP 网络都通过一个路由器直接连接。如果没有静态路由,一些网络无法相互通信。此外,某些网络流的流量仅有一个方向。
本例中的网络拓扑是假设的,仅用于解释静态路由的概念。在生产环境中并不推荐使用这个拓扑。
对于本示例中所有网络中的一个正常运行的通信,请将静态路由配置为 Raleigh (198.51.100.0/24
),下一个越点(hop)路由器 2 (203.0.113.10
)。下一个跃点的 IP 地址是数据中心网络中的一个路由器 2 (203.0.113.0/24
)。
您可以配置静态路由,如下所示:
-
对于简化的配置,仅在路由器 1 上设置此静态路由。但是,这会增加路由器 1 上的流量,因为来自数据中心(
203.0.113.0/24
)的主机将流量发送到 Raleigh (198.51.100.0/24
),始终通过路由器 1 到路由器 2。 -
对于更复杂的配置,请在数据中心的所有主机上配置此静态路由 (
203.0.113.0/24
)。然后,此子网中的所有主机直接向路由器 2 (203.0.113.10
)发送更接近 Raleigh 的主机 (198.51.100.0/24
)。
有关网络流量流或不符的更多详情,请参见以下示意图中的说明。
在所需的静态路由没有配置的情况下 ,如下是通信可以正常工作和不能正常工作的情况:
Berlin 网络中的主机 (
192.0.2.0/24
):- 可以与同一子网中的其他主机通信,因为它们是直接连接的。
-
可以与互联网通信,因为路由器 1 位于 Berlin 网络(
192.0.2.0/24
)中,并且有一个通向互联网的默认网关。 -
可以与数据中心网络 (
203.0.113.0/24
)通信 ,因为路由器 1 在 Berlin (192.0.2.0/24
) 和数据中心(203.0.113.0/24
) 网络中都有接口。 -
无法与 Raleigh 网络 (
198.51.100.0/24
) 通信,因为路由器 1 在此网络中没有接口。因此,路由器 1 将流量发送到自己的默认网关(互联网)。
数据中心网络中的主机 (
203.0.113.0/24
):- 可以与同一子网中的其他主机通信,因为它们是直接连接的。
-
可以与互联网通信,因为它们的默认网关设为 Router 1,Router 1 在数据中心(
203.0.113.0/24
)和互联网两个网络中有接口。 -
可以与 Berlin 网络 (
192.0.2.0/24
) 通信,因为它们的默认网关设置为路由器 1,并且路由器 1 在数据中心 (203.0.113.0/24
) 和 Berlin (192.0.2.0/24
) 网络中都存在接口。 -
无法与 Raleigh 网络 (
198.51.100.0/24
) 通信,因为该网络中没有接口。因此,数据中心中的主机 (203.0.113.0/24
) 将流量发送到其默认网关 (路由器 1)。Router 1 在 Raleigh 网络(198.51.100.0/24
)中没有接口,因此 Router 1 会将此流量发送到自己的默认网关(互联网)。
Raleigh 网络中的主机 (
198.51.100.0/24
):- 可以与同一子网中的其他主机通信,因为它们是直接连接的。
-
无法与互联网上的主机进行通信。因为默认的网关设置,路由器 2 将流量发送到路由器 1。路由器 1 的实际行为取决于反向路径过滤器 (
rp_filter
) 系统控制 (sysctl
) 设置。默认情况下,在 RHEL 上,Router 1 会丢弃传出的流量,而不是将其路由到互联网。但是,无论配置的行为如何,都无法在没有静态路由的情况下进行通信。 -
无法与数据中心网络通信(
203.0.113.0/24
)。由于默认网关设置,传出流量通过路由器 2 到达目的地。但是,对数据包的回复不会到达发送者,因为数据中心网络中的主机(203.0.113.0/24
)将回复发送到其默认网关(Router 1)。然后,Router 1 将流量发送到互联网。 -
无法与 Berlin 网络通信(
192.0.2.0/24
)。因为默认的网关设置,路由器 2 将流量发送到路由器 1。路由器 1 的实际行为取决于rp_filter
sysctl
设置。默认情况下,在 RHEL 中,路由器 1 会丢弃传出流量,而不是将其发送到 Berlin 网络(192.0.2.0/24
)。但是,无论配置的行为如何,都无法在没有静态路由的情况下进行通信。
除了配置静态路由外,还必须在两个路由器上启用 IP 转发。
其他资源
- 如果在服务器上设置了 net.ipv4.conf.all.rp_filter,为什么无法 ping 服务器?(红帽知识库)
- 启用 IP 转发 (红帽知识库)