我需要添加一条重启后不会被删除的路由。我读了这两种方法:
添加
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 接口文件定义了eth0
和eth1
.eth1
是172网络。eth0
也可以使用 DHCP。172.16.100.10
是要分配给 的 IP 地址eth1
。172.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