本記事では一時的にルーティングを設定する方法、そして永続的にルーティングを設定する方法を解説します。
一時的にルーティングを設定する方法としてip route
コマンドとroute
コマンドを解説します。そして永続的にルーティングを設定する方法としてnmcli
コマンドを解説します。
Contents
一時的にルーティングを追加する
コマンドラインで一時的にルーティングを追加する方法を解説します。この設定は一時的な設定なので、OSを再起動するとルーティング設定は消えてしまいます。
設定方法はip route
コマンドとroute
コマンドの2つのパターンを解説します。
routeコマンドはnet-tools
パッケージに含まれています。routeコマンドを使いたいけれどインストールされていない場合はnet-tools
パッケージをインストールしてください。
ip routeコマンドでルーティングを追加する
ip route add ネットワーク/プレフィックス via ゲートウェイ
# ip route add 10.1.2.0/24 via 192.168.0.1
ホスト指定の場合はプレフィックスを/32にします。
# ip route add 10.1.2.3/32 via 192.168.0.1
ip routeコマンドでルーティングを変更する
ネクストホップ(via)を変更するにはchage
で指定します。
# ip route change 10.1.2.0/24 via 192.168.0.2
ip routeコマンドでルーティングを削除する
ルーティングの削除はip route del
コマンドを実行します。
ルーティング削除ではviaを省略できますが、面倒でもviaを指定して削除するルーティングを明示的に指定することをおすすめします(特に業務の場合)。
ip route del ネットワーク/プレフィックス via ゲートウェイ
# ip route del 10.1.2.0/24 via 192.168.0.1
routeコマンドでルーティングを追加する
routeコマンドはnet-toolsパッケージがインストールされている必要があります。
宛先にネットワークを指定する
ネットワークを宛先にする場合は-net
オプションで宛先を指定します。
①route add -net ネットワークアドレス netmask サブネットマスク gw ゲートウェイ
②route add -net ネットワークアドレス/プレフィックス gw ゲートウェイ
①サブネットマスクで指定する場合
# route add -net 10.1.2.0 netmask 255.255.255.0 gw 192.168.0.1
②プレフィックスで指定する場合
# route add -net 10.1.2.0/24 gw 192.168.0.1
宛先にホストを指定する
ホストを宛先にする場合は-host
で宛先を指定します。
route add -host IPアドレス gw ゲートウェイ
# route add -host 10.1.2.3 gw 192.168.0.1
もしくはnetmask
に255.255.255.255
を指定します。
# route add -net 10.1.2.3 netmask 255.255.255.255 gw 192.168.0.1
routeコマンドでルーティングを削除する
routeコマンドはnet-toolsパッケージがインストールされている必要があります。
ルーティングの削除はroute del
コマンドを実行します。
ルーティング削除ではgwを省略できますが、面倒でもgwを指定して削除するルーティングを明示的に指定することをおすすめします(特に業務の場合)。
route del -net ネットワーク/プレフィックス gw ゲートウェイ
# route del -net 10.1.2.0/24 gw 192.168.0.1
route del -net ネットワーク netmask サブネットマスク gw ゲートウェイ
# route del -net 10.1.2.0 netmask 255.255.255.0 gw 192.168.0.1
宛先がホストの場合は-host
を使うか、netmask
に255.255.255.255
を指定します。
# route del -host 10.1.2.3 gw 192.168.0.1
もしくは
# route del -net 10.1.2.3 netmask 255.255.255.255 gw 192.168.0.1
ルーティングを永続的に追加する
NetworkManagerで設定する方法
従来の方法ではファイルにルーティング設定を書き込みプロセスを再起動する方法が主流でした。この方法は古くからあるため今でも使われていますが、Debian系とRedHat系で設定方法が異なるなど現代の管理方法には合いません。
可能であれば、nmcli
(NetworkManager コマンドラインインターフェイス)による設定方法をおすすめします。本記事ではnmcli
による設定方法を解説します。
nmcliはNetworkMangerで動きます。意図的にNetworkManagerを止めている場合はnmcliが使えません。また、NetworkManagerがインストールされていない場合は別途インストールが必要です。
デバイスを確認する
デバイスの確認はnmcli device
コマンドを実行します。次のコマンドの結果ではens160
が使われている事が分かります。
# nmcli device DEVICE TYPE STATE CONNECTION ens160 ethernet 接続済み ens160 lo loopback 接続済み (外部) lo #
ルーティングを追加する
nmcli connection modify デバイス名 +ipv4.routes "ネットワーク/プレフィックス ゲートウェイ"
# nmcli connection modify ens160 +ipv4.routes "10.1.2.0/24 192.168.0.1"
設定を追加したらsystemctl restart NetworkManager.service
コマンドでNetworkManagerを再起動します。
# systemctl restart NetworkManager.service #
これでOSを再起動してもルーティング設定は消えません。
ルーティングを削除する
nmcli connection modify デバイス名 -ipv4.routes "ネットワーク/プレフィックス ゲートウェイ"
# nmcli connection modify ens160 -ipv4.routes "10.1.2.0/24 192.168.0.1"
設定を削除したらsystemctl restart NetworkManager.service
コマンドでNetworkManagerを再起動します。
# systemctl restart NetworkManager.service #
まとめ
Linux環境で静的ルーティングを設定する方法を解説しました。
Linuxでルーティングを追加したり削除することはあまり無いため、コマンドを忘れてしまうエンジニアの方も多いかと思います。
そんな時に本記事が参考になれば幸いです。