サーバーの再起動時にIPルールとパスを維持する方法は?

サーバーの再起動時にIPルールとパスを維持する方法は?

私は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ルールとパスを維持する必要があります。

答え1

見てください/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.I addedを使用します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

「UUID」のないEL 7.x/etc/sysconfig/network-scripts/ifcfg-eth0ファイルHWADDR。これにより、eth0以下を使用する代わりに静的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ファイルは、を使用せずに静的IPアドレスを構成します。HWADDRUUIDeth1ネットワーク管理者

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の次のメジャーバージョンの1つから削除される警告が生成され、NetworkManagerはifup/ifdownスクリプトも提供します。

答え2

iproute2を使用する必要がある場合

# ip rule save > /[somepath]/your-ruleset.bin

ルールが保存されます。次は必ずしなければなりません。

# ip rule restore < /[somepath]/your-ruleset.bin

答え3

コメントすることはできませんが、許可された回答に追加したかったです。 RHEL8にネットワークスクリプトパッケージをインストールする必要はありません。

NetworkManagerは引き続き次のファイルを選択します。

/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/route-eth0
/etc/sysconfig/network-scripts/route-eth1

NetworkManager は、次のファイルを選択しなくなりました。

/etc/sysconfig/network-scripts/rule-eth0
/etc/sysconfig/network-scripts/rule-eth1

ただし、次のようにifcfg-eth0スクリプトでルールを定義できます。

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
ROUTING_RULE_1="from 192.168.100.0/24 table 5"
...

ファイルの設定をNetworkManagerにロードするには、次の手順を実行します。

$ sudo nmcli connection reload

次のコマンドを実行すると、ルーティングルールが表示されます。

$ nmcli connection show eth0
$ nmcli connection show eth0 | grep rules

NetworkManager 設定をデバイスに適用して有効にするには、次の手順を実行します。

$ sudo nmcli device reapply eth0

これで、ルールとパスが表示されます。

$ ip route list all
$ ip rule list

関連情報