Linuxでnmcliを使ってルーティングを追加する方法【永続化対応】

複数のネットワークに接続するサーバーを構築するとき、「特定の宛先へのパケットを別のゲートウェイに向けたい」という場面はよく出てきます。
この記事では、NetworkManagerのコマンドラインツール「nmcli」を使って、Linuxに静的ルートを追加・削除・確認する手順を解説します。
nmcliによる設定は再起動後も消えない永続的な設定になるため、ip route addコマンドによる一時設定との違いもあわせて確認しておきましょう。


スポンサーリンク

nmcliでルーティングを設定すべき理由

Linuxでスタティックルートを追加する方法は主に2つあります。

ip route addコマンドは即座に反映される反面、OSを再起動すると設定が消えます
サーバー運用では再起動後も経路を維持したいケースがほとんどなので、nmcliによる永続設定が基本になります。

方法永続性即時反映
nmcli connection modify + con up永続con up後に反映
ip route add一時(再起動で消える)即時

nmcliの全体的な使い方についてはnmcli完全ガイド:Linuxネットワーク設定の決定版も参考にしてください。


事前確認:接続プロファイル名とルーティングテーブルを確認する

まず、設定対象の接続プロファイル名(コネクション名)を確認します。

nmcli connection show

出力例:

NAME      UUID                                  TYPE      DEVICE
ens160    3419124e-3315-3ae3-a141-3b2dd6fd1da1  ethernet  ens160
lo        61275aa5-5ecb-4d10-9d27-54ea270a3c3b  loopback  lo

NAME列に表示されているのがコネクション名です(通常はデバイス名と同じ)。
デバイス名とコネクション名が異なる場合は、必ずコネクション名(NAME列)を使って設定します。

次に、現在のルーティングテーブルを確認しておきます。

ip route show

出力例:

default via 192.168.1.1 dev ens160 proto static metric 100
192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.10 metric 100

ネットワークインターフェースの確認方法の詳細はLinuxでネットワークインターフェースを確認する方法を参照してください。


スタティックルートを追加する

基本の書式

nmcli connection modify <コネクション名> +ipv4.routes "<宛先ネットワーク>/<プレフィックス> <ゲートウェイIP>"

+ipv4.routes「+」は既存ルートに追記することを意味します。
+を付けずipv4.routesのみを指定すると、既存の設定がすべて上書きされるので注意が必要です。

設定を反映させる

nmcli connection modifyを実行しただけでは、現在のルーティングテーブルにはまだ反映されません。
インターフェースのdown/upによって設定が有効になります。

nmcli connection down <コネクション名>
nmcli connection up <コネクション名>

実際の手順:ルート追加から確認まで

ステップ1:ルートを追加する

192.168.100.0/24 宛のパケットをゲートウェイ 192.168.57.254 経由に向ける例です。

nmcli connection modify ens160 +ipv4.routes "192.168.100.0/24 192.168.57.254"

コマンドは成功しても何も出力されません。

ステップ2:設定を反映させる

nmcli connection down ens160
nmcli connection up ens160

注意: リモート接続(SSH等)で作業している場合、nmcli connection downを実行するとそのまま接続が切断されます
必ず物理コンソールにアクセスできる環境か、接続維持できる別のインターフェースがある状態で実行してください。

ステップ3:ルーティングテーブルで確認する

ip route show

追加したルートが表示されれば設定完了です。

default via 192.168.1.1 dev ens160 proto static metric 100
192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.10 metric 100
192.168.100.0/24 via 192.168.57.254 dev ens160 proto static metric 100

複数のルートを一度に追加する

複数の宛先ネットワークを同時に追加するには、+ipv4.routesを複数並べて指定します。

nmcli connection modify ens160 \
  +ipv4.routes "192.168.100.0/24 192.168.57.254" \
  +ipv4.routes "10.10.0.0/16 192.168.57.254"
nmcli connection up ens160

または、カンマ区切りで1つの引数にまとめることも可能です(Red Hat系ディストリビューションで確認済み)。

nmcli connection modify ens160 \
  +ipv4.routes "192.168.100.0/24 192.168.57.254, 10.10.0.0/16 192.168.57.254"
nmcli connection up ens160

設定済みルートを確認する

現在のコネクションに設定されているスタティックルートは、以下のコマンドで確認できます。

nmcli -f ipv4.routes connection show <コネクション名>

出力例:

ipv4.routes:  { ip = 192.168.100.0/24, nh = 192.168.57.254, mt = -1 }
              { ip = 10.10.0.0/16, nh = 192.168.57.254, mt = -1 }

ipが宛先ネットワーク、nh(next hop)がゲートウェイ、mtがメトリックです。


特定のルートを削除する

1件だけ削除する

追加に使った+-に変えて指定します。
追加時と完全に同じ宛先・ゲートウェイを指定しないと削除できない点に注意してください。

nmcli connection modify ens160 -ipv4.routes "192.168.100.0/24 192.168.57.254"
nmcli connection up ens160

全件削除する

設定されているルートをすべて消したい場合は、空文字を指定します。

nmcli connection modify ens160 ipv4.routes ""
nmcli connection up ens160

IPv6のルートを追加する場合

IPv6にも同じ要領で対応できます。ipv4.routesipv6.routesに変えるだけです。

nmcli connection modify ens160 +ipv6.routes "2001:db8:2::/64 2001:db8:1::10"
nmcli connection up ens160

ip route addコマンドとの使い分け

テスト目的や即時確認が必要な場合はip route addを使う方が便利です。
この設定はOS再起動やNIC再起動で消えます。

# 一時的な追加(再起動で消える)
ip route add 192.168.100.0/24 via 192.168.57.254 dev ens160

# 一時的な削除
ip route del 192.168.100.0/24 via 192.168.57.254 dev ens160

nmcliで永続設定している場合、ip route delで一時削除してもNICのdown/upや再起動で元に戻ります
永続設定を消したい場合は必ずnmcliの-ipv4.routesで削除してください。

インターネット接続の確認方法についてはLinuxでインターネット接続を確認する方法|ping・curl・routeで原因切り分け!も参考にしてください。


まとめ

nmcliでスタティックルートを追加する基本の流れは以下の3ステップです。

  1. nmcli connection modify <コネクション名> +ipv4.routes "<宛先>/<プレフィックス> <GW>" でルートを追加
  2. nmcli connection down <コネクション名> && nmcli connection up <コネクション名> で反映
  3. ip route show でルーティングテーブルを確認

+ipv4.routesipv4.routesの違い(追記か上書きか)、およびip route delでは永続設定を消せないという2点は特に混乱しやすいので注意が必要です。

AlmaLinuxやRocky LinuxなどRed Hat系でのIP設定全般についてはAlmaLinuxでIPアドレスをコマンドで設定する方法も参考にしてみてください。


参考情報源:

コメント

タイトルとURLをコピーしました