添加永久路由的最佳方法是什么?

添加永久路由的最佳方法是什么?

我需要添加一条重启后不会被删除的路由。我读了这两种方法:

添加 ip route add -net 172.X.X.0/24 gw 172.X.X.X dev ethX到文件 /etc/network/interfaces

或者

创建文件/etc/network/if-up.d/route和:

#!/bin/sh
route add -net 172.X.X.0/24 gw 172.X.X.X dev ethX

并使其可执行:

chmod +x /etc/network/if-up.d/route

所以我很困惑。最好的方法是什么?

答案1

你提到的/etc/network/interfaces,所以它是一个 Debian 系统......

创建命名路由表。作为示例,我在下面使用了名称“mgmt”。

echo '200 mgmt' >> /etc/iproute2/rt_tables

上面,内核支持许多路由表,并通过编号为 0-255 的唯一整数来引用这些路由表。还为该表定义了名称 mgmt。

下面是默认情况/etc/iproute2/rt_tables,显示一些数字被保留。这个答案中 200 的选择是任意的;人们可以使用任何尚未使用的数字,1-252。

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#

下面,Debian 7/8 接口文件定义了eth0eth1.eth1是172网络。eth0也可以使用 DHCP。172.16.100.10是要分配给 的 IP 地址eth1172.16.100.1是路由器的IP地址。

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The production network interface
auto eth0
allow-hotplug eth0
# iface eth0 inet dhcp 
# Remove the stanzas below if using DHCP.
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# The management network interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 172.16.100.10
  netmask 255.255.255.0
  post-up ip route add 172.16.100.0/24 dev eth1 src 172.16.100.10 table mgmt
  post-up ip route add default via 172.16.100.1 dev eth1 table mgmt
  post-up ip rule add from 172.16.100.10/32 table mgmt
  post-up ip rule add to 172.16.100.10/32 table mgmt

重新启动或重新启动网络。

更新 - EL 阐述

我在评论中注意到您“也想了解 RHEL”。在 Enterprise Linux(“EL”- RHEL/CentOS/等)中,创建如上所述的命名路由表。

EL/etc/sysconfig/network文件:

NETWORKING=yes
HOSTNAME=host.sld.tld
GATEWAY=10.10.10.1

下面是使用静态配置的EL/etc/sysconfig/network-scripts/ifcfg-eth0文件(没有 NetworkManager,并且没有为下面的示例指定“HWADDR”和“UUID”)。

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=10.10.10.140
NETMASK=255.255.255.0
NETWORK=10.10.10.0
BROADCAST=10.10.10.255

EL/etc/sysconfig/network-scripts/ifcfg-eth1文件(没有 NetworkManager,并且没有为下面的示例指定“HWADDR”和“UUID”)如下。

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=172.16.100.10
NETMASK=255.255.255.0
NETWORK=172.16.100.0
BROADCAST=172.16.100.255

EL/etc/sysconfig/network-scripts/route-eth1文件:

172.16.100.0/24 dev eth1 table mgmt
default via 172.16.100.1 dev eth1 table mgmt

EL/etc/sysconfig/network-scripts/rule-eth1文件:

from 172.16.100.0/24 lookup mgmt

RHEL8 更新

上述方法适用于 RHEL 6 和 RHEL 7 及其衍生产品,但对于 RHEL 8 及其衍生产品,必须先安装network-scripts才能使用上述方法。

dnf install network-scripts

安装会产生一条警告,该警告network-scripts将在 RHEL 的下一个主要版本之一中删除,并且 NetworkManager 也会提供ifup/ifdown脚本。

答案2

在基于 Debian 的发行版上,您可以永久添加静态路由,如下所示:

 echo "up route add -net 172.X.X.X/24 gw 172.X.X.X dev ethX" | sudo tee --append /etc/network/interfaces

在基于 RHEL 的发行版上:

echo "172.X.X.X/24 via 172.X.X.X" | sudo tee --append /etc/sysconfig/network-scripts/route-ethX

相关内容