查看路由表

有几种方法可以查看路由表,使用较旧的“route”命令或者较新的“ip route”命令,如下所示。

[jack@onitroad ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.254   0.0.0.0         UG    100    0        0 eno16777736
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno16777736
[jack@onitroad ~]# ip route
default via 192.168.1.254 dev eno16777736  proto static  metric 100
192.168.1.0/24 dev eno16777736  proto kernel  scope link  src 192.168.1.10  metric 100

基本上这个输出显示这里的默认路由是 192.168.1.254 并且所有流量 (0.0.0.0/0) 都在这里发送,这是标准和默认配置。
如果我们想将流量发送到其他地方的特定网络范围,可以使用静态路由。
流量将被发送到路由表中最具体的路由。

如何创建静态路由

默认情况下,所有网络流量通常会配置为通过默认网关路由,即连接到网络接口的路由器。
我们可能并不总是希望所有流量都采用相同的路径,在这些情况下,我们可以设置另外的静态路由,将特定流量转发出不同的接口而不是默认网关。
如果我们需要能够访问默认网关路由器不知道的特定网络,则可能需要这样做。

在这里,我们将介绍如何在 Linux 中配置静态路由。

请注意,此示例是在 CentOS 7 中完成的,因此根据 Linux 发行版,某些信息可能略有不同。

应用更改

在对网络配置进行更改后,我们需要重新启动网络使更改生效:

systemctl restart network

我们还可以使用 nmcli 或者 ifdown/ifup 关闭和备份接口,将 eno0 替换为接口名称。
如果我们不确定接口名称,我们可以使用“ip addr”命令。

nmcli con down eno0; nmcli con up eno0

或者

ifdown eno0; ifup eno0

注意 ;在第一个命令之后,这基本上会在接口关闭后直接运行 nmcli con up 或者 ifup 命令。
如果我们通过控制台工作,这并不重要,但如果我们通过 SSH 执行此操作,例如,如果我们关闭接口,我们将断开连接并且无法将其恢复。
以这种方式同时运行这两个命令可确保接口恢复正常,当然前提是网络配置更改没有问题。

设置静态路由

要设置静态路由,我们需要知道有关我们尝试路由到的网络的一些信息,例如 IP 地址范围和网络掩码、网关的 IP 地址以及可能的指标。
在我们的示例中,我们将创建一个静态路由,将发往 10.0.0.0/8 网络的流量发送到 10.0.0.1

在我们的特定网络配置中,假设位于 192.168.1.254 的路由器根本不了解 10.0.0.0/8 网络并且无法与其通信。
当位于 192.168.1.10 的 CentOS 7 服务器尝试访问 10.0.0.0/8 网络中的某些内容时,路由表会将流量转发到位于默认网关 192.168.1.254 的路由器,但是在我们的示例中,该路由器不知道在哪里接下来转发此流量,根据配置,如果没有其他可用路由或者丢弃它,它可能会尝试使用其默认网关。

为了防止这种行为,我们可以在 CentOS 7 服务器上配置一个静态路由,这将允许我们手动指定我们要将流量发送到 10.0.0.0/8 网络的位置。

使用 nmcli 命令

nmcli 命令可用于管理网络,下面显示了使用此工具设置静态路由的快速示例。

[jack@onitroad ~]# nmcli con edit type ethernet con-name eno16777736
===| nmcli interactive connection editor |===
Adding a new '802-3-ethernet' connection
Type 'help' or '?' for available commands.
Type 'describe [.]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
nmcli> set ipv4.routes 10.0.0.0/8 10.0.0.1
nmcli> save persistent
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? (yes/no) [yes] yes
Connection 'eno16777736' (e4f5af01-1c77-4240-ac9c-1bfa4b8a1d3c) successfully saved.
nmcli> quit

手动编辑配置文件

在 /etc/sysconfig/network-scripts/route-<InterfaceName> 中编辑或者创建一个文件

[jack@onitroad ~]# cat /etc/sysconfig/network-scripts/route-eno0
ADDRESS0=10.0.0.0
NETMASK0=255.0.0.0
GATEWAY0=10.0.0.1
METRIC0=10
日期:2020-07-07 20:56:15 来源:oir作者:oir