Debian

添加永久路線的最佳方法是什麼?

  • September 3, 2020

我需要添加一個重啟後不會被刪除的路由。我讀了這兩種方法:

添加 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

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

你提到/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/et al)中,如上所述創建一個命名路由表。

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腳本。

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