Linux

每當伺服器重新啟動時,如何保持 ip 規則和路由?

  • January 20, 2022

我正在使用 Centos 7 伺服器,我想在伺服器重新啟動時保存 ip 規則和路由。

ip rule add from x.x.x.x table 128
ip route add table 128 to y.y.y.y/y dev eth0
ip route add table 128 default via z.z.z.z

一旦我重新啟動伺服器,提到的規則和路由就會失去,這意味著每次伺服器重新啟動時我都需要執行 3 個命令。

每當伺服器重新啟動時,我都需要使 ip 規則和路由保持不變。

看看/etc/rc.d/rc.local。該文件指出

請注意,您必須執行chmod +x /etc/rc.d/rc.local以確保此腳本將在引導期間執行。

所以:

chmod +x /etc/rc.d/rc.local

然後將您的命令放在最後一行之上

touch /var/lock/subsys/local

使用相關配置文件有更好的方法。可以使用相應的文件名指定規則和路由。下面給出了所有相關的配置文件。(設備名稱可能不同。)

/etc/iproute2/rt_tables
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/route-eth0
/etc/sysconfig/network-scripts/route-eth1
/etc/sysconfig/network-scripts/rule-eth0
/etc/sysconfig/network-scripts/rule-eth1

要創建命名路由表,請使用/etc/iproute2/rt_tables. 我補充說128 mynet

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

EL 7.x/etc/sysconfig/network文件。預設路由是GATEWAY.

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

EL 7.x/etc/sysconfig/network-scripts/ifcfg-eth0文件,沒有HWADDR和“UUID”。eth0這會在不使用NetworkManager的情況下配置靜態 IP 地址。

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 7.x/etc/sysconfig/network-scripts/ifcfg-eth1文件,沒有HWADDRUUID. eth1這會在不使用NetworkManager的情況下配置靜態 IP 地址。

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=192.168.100.140
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255

EL 7.x/etc/sysconfig/network-scripts/route-eth1文件。預設路由已在 中指定/etc/sysconfig/network

192.168.100.0/24 dev eth1 table mynet
default via 192.168.100.1 dev eth1 table mynet

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

from 192.168.100.0/24 lookup mynet

RHEL8 更新

上述方法適用於 RHEL 6 和 RHEL 7 以及衍生版本,但對於 RHEL 8 和衍生版本,必須先安裝network-scripts才能使用上述方法。

dnf install network-scripts

安裝會產生一個警告,該警告network-scripts將在 RHEL 的下一個主要版本之一中刪除,並且 NetworkManager 也提供ifup/ifdown腳本。

引用自:https://unix.stackexchange.com/questions/365380