如何在Linux中永久添加静态路由

时间:2020-03-05 15:27:40  来源:igfitidea点击:

静态路由是手动输入路由到路由表到达特定目的地的过程。
基本上,两个命令在Linux中使用添加路由。

第一个命令是旧的传统路由添加,第二个命令是IP路由命令。

我们早些时候我们学会了如何在本教程中录制添加在Linux中,这里将介绍如何在Linux发行版(如CentOS和Ubuntu)中添加永久静态路由。

添加临时静态路由

要临时在Linux机器上添加静态路由,可以使用任何路由或者IP命令。

我们可以按如下方式列出当前路由表。

$route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.206.1   0.0.0.0         UG    100    0        0 eno1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.206.0   0.0.0.0         255.255.255.0   U     100    0        0 eno1

路线-n命令

如果你想通过网关192.168.206.1的路由添加到网络198.161.1.0,我们可以执行以下命令。

$sudo route add -net 198.161.1.0 netmask 255.255.255.0 gw 192.168.206.1 eno1

或者,我们可以使用IP命令如下:

$sudo ip route add 198.161.1.0/24 via 198.168.206.1 dev eno1

添加永久静态路由

在上述部分中,我们看到如何在Linux中添加路由。
但系统将忘记下一次重启的路线。

所以我们必须将路由添加到配置文件以使其持久。

在RHEL或者CentOS上,我们需要在"/etc/sysconfig/network脚本"中修改接口文件。

例如,其中我们必须添加网络接口ens192路线。
因此,我们需要修改的文件将是'/etc/sysconfig/network-scripts/loute-ess192'。

此文件中的静态路由的基本语法是:

<target-address> via <gateway-address> dev <interface>

其中:

目标地址目的地网络地址。

Gateway-Address路由器地址以到达目标地址。

DEV表示要到达目的地的哪个界面,接口命名方案是eno [1-n],ENS [1-N]和OR ETH [0-N]。

因此,要在"Route-Ens192"文件中添加上面的路由,请添加以下行。

'10 .9.8.0/24通过10.9.8.100 dev ens192'

然后,我们需要重新启动网络服务。

$sudo service network restart

最后,验证使用以下命令在路由表中可见新路由。

$route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.9.8.100      0.0.0.0         UG    100    0        0 ens192
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens192
10.9.8.0        10.9.8.100      255.255.255.0   UG    100    0        0 ens192

在Ubuntu Linux上,如果要为系统添加永久静态路由,则必须将路由条目添加到"/etc/network/interfaces"。
使用我们喜欢的编辑器(Nano,Vim,...)打开网络接口文件并将以下行插入其中。

"Up Route Add-Net 10.9.7.0/24 GW 10.9.8.100 Dev Ens160'。
例如:

source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens160
iface ens160 inet static
address 10.9.8.41
netmask 255.255.255.0
gateway 10.9.8.100
up route add -net 10.9.7.0/24 gw 10.9.8.100 dev ens160

为了使更改生效,我们需要通过运行重新启动网络服务:

$sudo /etc/init.d/networking restart

验证路由是否已正确配置:

$route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.9.8.100      0.0.0.0         UG    0      0        0 ens160
10.9.7.0        10.9.8.100      255.255.255.0   UG    0      0        0 ens160
10.9.8.0        0.0.0.0         255.255.255.0   U     0      0        0 ens160
10.233.70.0     10.9.8.45       255.255.255.0   UG    0      0        0 tunl0
10.233.90.0     0.0.0.0         255.255.255.0   U     0      0        0 *

从Ubuntu的LTS 18.04及更高版本的操作系统使用它位于"的/etc/netplan"目录网络配置netplan YAML文件。
例如:

$ls /etc/netplan
01-network-manager-all.yaml

为了添加持久的静态路由,我们必须将以下行添加到Netplan配置文件'/etc/netplan/01-network-manager-all.yaml'

routes:
- to: 192.168.205.0/24
  via: 192.168.206.1

例如:

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno1: 
      dhcp4: true
      routes:
      - to: 192.168.205.0/24
        via: 192.168.206.1

通过运行应用更改:

$sudo netplan apply

我们可以通过运行命令route -n或ip route来验证路由配置。