永続パスを追加する最良の方法は何ですか?

永続パスを追加する最良の方法は何ですか?

再起動後も削除されないパスを追加する必要があります。私は次の2つの方法を読んだ。

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.is eth1172eth1ネットワークを定義します。eth0DHCPも使用できます。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/etc.)では、上記のように名前付きルーティングテーブルを作成します。

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の次のメジャーバージョンの1つから削除される警告が生成され、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

関連情報