4.5. 在 ifcfg 文件中配置静态路由


如果系统关机或重启,使用 ip 命令设置的静态路由会在命令提示符下丢失。要将静态路由配置为在系统重启后永久保留,必须将其放置在 /etc/sysconfig/network-scripts/ 目录中的每个接口配置文件中。文件名应当为 route-接口的格式。配置文件中有两种命令类型:

使用 IP 命令参数格式的静态路由

如果每个接口配置文件中需要(例如 /etc/sysconfig/network-scripts/route-enp1s0),请在第一行中定义指向默认网关的路由。只有在没有通过 DHCP 设置网关且没有在 /etc/sysconfig/network 文件中全局设置时才需要此项:
default via 192.168.1.1 dev interface
其中 192.168.1.1 是默认网关的 IP 地址接口是连接到或可以访问默认网关的接口dev 选项可以省略,它是可选的。请注意,此设置优先于 /etc/sysconfig/network 文件中的设置。
如果需要路由到远程网络,可以按照如下所示指定静态路由:每行都解析为单个路由:
10.10.10.0/24 via 192.168.1.1 [dev interface]
其中 10.10.10.0/24 是远程或目标网络的网络地址和前缀长度。地址 192.168.1.1 是导致远程网络的 IP 地址最好使用下一个跃点地址,但退出接口的地址可以正常工作。下一跃点表示链路的远程末尾,如网关或路由器。dev 选项可用于指定退出接口接口,但这不是必需的。根据需要添加任意数量的静态路由。
以下是使用 ip 命令参数格式的路由接口文件示例。默认网关为 192.168.0.1,接口 enp1s0 以及租用的行或 WAN 连接位于 192.168.0.10。这两个静态路由到达 10.10.10.0/24 网络和 172.16.1.10/32 主机:
default via 192.168.0.1 dev enp1s0
10.10.10.0/24 via 192.168.0.10 dev enp1s0
172.16.1.10/32 via 192.168.0.10 dev enp1s0
在上面的示例中,进入本地 192.168.0.0/24 网络的数据包将被定向出连接到该网络的接口。进入 10.10.10.0/24 网络和 172.16.1.10/32 主机的数据包将被定向到 192.168.0.10。至未知的远程网络将使用默认网关,因此只有在默认路由不合适时,才应为远程网络或主机配置静态路由。此上下文中的 remote 表示没有直接连接到系统的任何网络或主机。
对于 IPv6 配置,ip route 格式的 route6-接口 文件示例
2001:db8:1::/48 via 2001:db8::1 metric 2048
2001:db8:2::/48
指定退出接口是可选的。如果要强制流量离开特定接口,它可以很有用。例如,对于 VPN,您可以强制到远程网络的流量通过某个网络。 tun0 接口,即使接口位于目标网络的不同子网中。
ip route 格式可用于指定源地址。例如:
10.10.10.0/24 via 192.168.0.10 src 192.168.0.2
要定义基于策略的现有路由配置,指定多个路由表,请参阅 第 4.5.1 节 “了解策略路由”
重要
如果 DHCP 已分配了默认网关,并且配置文件中指定了具有相同指标的同一网关,启动过程中或启动接口时会出现错误。可能会显示以下错误消息:"RTNETLINK 答案:"文件存在"。此错误可能会被忽略。

使用网络/网络掩码指令格式的静态路由

您还可以对路由接口文件使用 network/netmask 指令格式。以下是网络/子网掩码格式的模板,之后提供说明:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.1.1
  • ADDRESS0=10.10.10.0 是要访问的远程网络或主机的网络地址。
  • NETMASK0=255.255.255.0 是使用 ADDRESS0=10.10.10.0 定义的网络地址的子网掩码。
  • GATEWAY0=192.168.1.1 是默认网关,或者可用于访问的 IP 地址 ADDRESS0=10.10.10.0
以下是使用 network/netmask 指令格式的路由接口文件示例。默认网关为 192.168.0.1,但可通过 192.168.0.10 获得租用的行或 WAN 连接。这两个静态路由到达 10.10.10.0/24172.16.1.0/24 网络:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.10
ADDRESS1=172.16.1.10
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.10
后续静态路由必须按顺序编号,且不得跳过任何值。例如: ADDRESS0ADDRESS1ADDRESS2 等。
出于安全原因,默认禁用从一个接口将数据包转发到另一个接口,或从同一接口转发数据包。 这可以防止系统充当外部流量的路由器。如果您需要系统路由外部流量,比如在共享连接或配置 VPN 服务器时,您需要启用 IP 转发。详情请查看红帽企业 Linux 7 安全指南

4.5.1. 了解策略路由

策略路由 也称为源路由,是一种更灵活的路由配置机制。路由决策通常根据软件包的目标 IP 地址做出。策略路由 可根据其他路由属性(如源 IP 地址、源端口和协议类型)提供更多灵活性来选择路由。路由表存储关于网络的路由表信息。它们通过数值或名称标识,可在 /etc/iproute2/rt_tables 文件中配置。默认表使用 254 来标识。使用 策略路由时,您还需要规则。规则用于根据数据包的特定属性选择路由表。
对于 initscripts,路由表是路由的属性,可以通过 table 参数进行配置。ip route 格式可以用来定义基于策略的现有路由配置,该配置指定了多个路由表:
10.10.10.0/24 via 192.168.0.10 table 1
10.10.10.0/24 via 192.168.0.10 table 2
要在 initscripts 中指定路由规则,请将它们编辑到 IPv4 的 /etc/sysconfig/network-scripts/rule-enp1s0 文件,或编辑到 IPv4/etc/sysconfig/network-scripts/rule6-enp1s0 文件。
NetworkManager 支持 policy-routing,但尚不支持规则。规则必须由运行自定义脚本的用户进行配置。对于每个手动静态路由,可以选择路由表:
  • ipv4.route-table for IPv4
  • ipv6.route-table (适用于 IPv6
通过设置到特定表的路由,来自 DHCPautoconf6、DHCP6 的所有路由 放置到该特定表中。此外,已配置地址的子网的所有路由都放置在相应的路由表中。例如,如果您配置 192.168.1.10/24 地址,则 192.168.1.0/24 子网包含在 ipv4.route-table 中。
有关 policy-routing 规则 的详情,请查看 ip-rule(8)man page。有关路由表,请查看 ip-route(8)man page。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.