服务器重启时如何保持ip规则和路由?

αԋɱ*_*cαη 6 linux networking iptables centos networkmanager

我正在使用 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
Run Code Online (Sandbox Code Playgroud)

一旦我重新启动服务器,提到的规则和路由就会丢失,这意味着每次服务器重新启动时我都需要运行 3 个命令。

每当服务器重新启动时,我都需要使 ip 规则和路由保持不变。

Chr*_*her 8

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

请注意,您必须运行chmod +x /etc/rc.d/rc.local以确保此脚本将在引导期间执行。

所以:

chmod +x /etc/rc.d/rc.local
Run Code Online (Sandbox Code Playgroud)

然后将您的命令放在最后一行上方

touch /var/lock/subsys/local
Run Code Online (Sandbox Code Playgroud)

有更好的方法使用相关的配置文件。可以使用相应的文件名指定规则和路由。下面给出了所有相关的配置文件。(设备名称可能不同。)

/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
Run Code Online (Sandbox Code Playgroud)

要创建命名路由表,请使用/etc/iproute2/rt_tables. 我补充说128 mynet

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
128     mynet
Run Code Online (Sandbox Code Playgroud)

EL 7.x/etc/sysconfig/network文件。默认路由是GATEWAY.

NETWORKING=yes
HOSTNAME=hostname.sld.tld
GATEWAY=10.10.10.1
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

192.168.100.0/24 dev eth1 table mynet
default via 192.168.100.1 dev eth1 table mynet
Run Code Online (Sandbox Code Playgroud)

RHEL8 更新

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

from 192.168.100.0/24 lookup mynet
Run Code Online (Sandbox Code Playgroud)

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