server-memo.net

Linuxルーティング追加

      2016/01/22

一時的にルーティングを追加する方法

CentOSでは「route」コマンドや「ip」コマンドを使用することで、一時的にスタティックルートを設定することができます。ただしこの方法は一時的にルーティングを追加する方法ですので、サーバの再起動や、ネットワークサービスを再起動するとルーティングは消えていまします。

※これから示す設定方法は「CentOS 6.6」で検証を行っています。

「route」コマンドでの設定方法

ネットワーク宛ににルートを設定する場合は「route add -net」コマンドを使用します。

route add -net コマンド書式

route add -net [宛先ネットワーク] netmask [サブネット] gw [ゲートウェイIP] [NIC名]

route add -net 実行例

「192.168.200.0/24」ネットワーク宛通信のゲートウェイを「192.168.41.1」に設定してみます。

# route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.41.1 eth1

ルーティングの確認

「netstat -rn」コマンドを使用することで、現在のルーティングテーブルを確認することができるので、実行すると「192.168.200.0/24」宛のルーティングが追加されていることがわかります。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

ホスト単位(/32)でルーティングを設定する場合

「route add -net」でも、ネットマスクを「255.255.255.255」に設定すればホスト単位(/32)でルーティングを設定することができますが、「route add -host」を使用して設定することもできます。

route add -host コマンド書式
route add -host [宛先ホスト]  gw [ゲートウェイIP] [NIC名]
route add -host 実行例

まず、「192.168.210.254/32」ホスト宛通信のゲートウェイを「192.168.41.254」に設定してみます。

# route add -host 192.168.210.254 gw 192.168.41.254 eth1
ルーティングの確認

「192.168.210.254/32」宛のルーティングが追加されたことを確認してみます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.210.254 192.168.41.254  255.255.255.255 UGH       0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
「route add -net」を使用したホスト宛ルーティング追加

次に、「route add -net」を使用して「192.168.220.254/24」ホスト宛通信のゲートウェイを「192.168.41.1」に設定してみます。

ネットマスクを「255.255.255.255」とすることで、ホスト宛のルーティングを設定することが出来ます。

ホスト宛のルーティング追加
# route add -net 192.168.220.254 netmask 255.255.255.255 gw 192.168.41.1 eth1
ルーティングの確認

このように「route add -net」を使用しても「route add -host」と同じように、ホスト宛スタティックルーティングが追加できることがわかります。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.210.254 192.168.41.254  255.255.255.255 UGH       0 0          0 eth1
192.168.220.254 192.168.41.1    255.255.255.255 UGH       0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

「ip」コマンドでの設定方法

「ip route add」コマンドを使用してルーティングを追加する方法です。

「ip route add」コマンド書式

ip route add [ネットワークアドレス/サブネット] via [ゲートウェイIP] dev [NIC名]

ルーティング追加

「192.168.200.0/24」ネットワーク宛のルーティングを追加します。

# ip route add 192.168.200.0/24 via 192.168.100.1 dev eth1

ルーティング確認

「192.168.200.0/24」宛のルーティングが追加されていることが確認できます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.100.1   255.255.255.0   UG        0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

一時的なルーティングの削除方法

ルーティングの削除は「route」コマンドか「ip」コマンドを使用して削除することができます。

「route」コマンドを使用した削除方法

「route」コマンドを使用したルーティングの削除には「route del」コマンドを使用します。

「route del」コマンド書式

下記のどちらの方法でも削除ができます。

route del -net  [宛先ネットワーク] netmask [サブネット]
route del [宛先ネットワーク/サブネット]

ルーティングの削除

ルーティング削除前のルーティングテーブルを確認します。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.210.254 192.168.41.254  255.255.255.255 UGH       0 0          0 eth1
192.168.220.254 192.168.41.1    255.255.255.255 UGH       0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0
「route del -net」でのルーティング削除

「route del -net」コマンドを使用して、「192.168.200.0/24」宛のルーティングを削除します。

# route del -net 192.168.200.0 netmask 255.255.255.0
ルーティング削除の確認

「192.168.200.0/24」宛のルーティングが削除されていることを確認します。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.210.254 192.168.41.254  255.255.255.255 UGH       0 0          0 eth1
192.168.220.254 192.168.41.1    255.255.255.255 UGH       0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0
「route del」でのルーティング削除

「route del」コマンドを使用して「192.168.210.254」宛のルーティングを削除します。

# route del 192.168.210.254/32
ルーティング削除の確認

「192.168.210.254」宛のルーティングが削除されていることを確認します。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.220.254 192.168.41.1    255.255.255.255 UGH       0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0

「ip」コマンドを使用したルーティング削除方法

「ip」コマンドを使用したルーティング削除は「ip route del」というコマンドでルーティングの削除ができます。

「ip route del」 コマンド書式

ip route del [宛先ネットワーク/サブネット]
削除前のルーティング確認
# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

「192.168.200.0/24」宛ルーティングの削除

「192.168.200.0/24」宛のルーティングを「ip route del」コマンドを使用して削除します。

# ip route del 192.168.200.0/24
ルーティング確認

「192.168.200.0/24」宛のルーティングが削除されたことが確認できます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

一時的なデフォルトゲートウェイの変更

デフォルトゲートウェイも、「route」コマンド「ip」コマンドの両方で一時的に変更・設定することが可能です。

「route」コマンドでのデフォルトゲートウェイ変更

「route」コマンドを使用して一時的にデフォルトゲートウェイを変更する場合ですが、既存のデフォルトゲートウェイの設定を削除する必要がありますので、忘れずに削除してください。削除しないで追加すると、2重にルーティングが追加されてしまいます。

また、別ネットワークからSSH等で接続している場合は、設定変更後もクライアントとサーバ間の通信が問題なく可能であるか十分確認して作業を行ってください。
最悪サーバのある場所までダッシュするはめになってしまいますので・・・

デフォルトゲートウェイを「192.168.1.1」から「192.168.1.254」へ変更します。

変更前ルーティングテーブル確認

デフォルトゲートウェイ変更前のルーティングテーブルを確認し、デフォルトゲートウェイが「192.168.1.1」であることを確認します。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

デフォルトゲートウェイの削除

「route del」コマンドを使用して、既存のデフォルトゲートウェイ情報を削除します。

デフォルトゲートウェイ削除書式
# route del default gw [デフォルトゲートウェイIP]
デフォルトゲートウェイの削除

デフォルトゲートウェイを「route del」コマンドを使用して削除します。

# route del default gw 192.168.1.1

デフォルトゲートウェイの追加

「route add」コマンドでデフォルトゲートウェイの情報を追加します。

デフォルトゲートウェイ追加書式
route add default gw [デフォルトゲートウェイIP]
デフォルトゲートウェイの追加

「192.168.1.254」をデフォルトゲートウェイに設定します。

# route add default gw 192.168.1.254

変更後ルーティングテーブル

デフォルトルートが「192.168.1.254」へ変更されていることが確認できます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.210.254 192.168.41.254  255.255.255.255 UGH       0 0          0 eth1
192.168.220.254 192.168.41.1    255.255.255.255 UGH       0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0

「ip」コマンドでのデフォルトゲートウェイ変更

「ip route replace」コマンドを使用することで、デフォルトゲート上の変更ができます。

このコマンドの場合は「replace」なので既存の設定と置き換えられるため、「route add 」を使用した場合と異なり、デフォルトゲートウエィの2重登録といった状態になりません。

「ip route replace」コマンド書式

# ip route replace default via [変更後デフォルトゲートウェイIP]

変更前ルーティングテーブル確認

デフォルトゲートウェイの変更前に、現在のデフォルトゲートウェイを確認します。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

デフォルトゲートウェイ変更

デフォルトゲートウェイを「192.168.1.1」から「192.168.1.254」へ変更します。

# ip route replace default via 192.168.1.254

変更後ルーティングテーブル確認

デフォルトゲートウェイが変更されていることが確認できます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 eth0

恒久的にルーティングを追加する方法

次にサーバの再起動等を行っても消えないスタティックルートの設定方法です。

ルーティングの設定ファイルである、「/etc/sysconfig/network-scripts/route-ethx」にルーティング情報を記述することで、スタティックルートを設定することができます。

この設定ファイルですが、ルーティングを設定するNICごとに対応した設定ファイルを作成する必要があり、eth0のNIC場合は「route-eth0」eth1のNICの場合は「route-eth1」というファイル名になります。

設定ファイル書式

「ネットワークアドレス/サブネット」via [ゲートウェイIP] 

eth1のNICを使用し、「192.168.200.0/24」ネットワーク宛のゲートウェイを「192.168.41.1」に設定するというスタティクルートを設定してみます。

スタティックルート設定

「192.168.200.0/24」ネットワーク宛のゲートウェイを「192.168.41.1」に設定します。

# vi /etc/sysconfig/network-scripts/route-eth1
設定内容
192.168.200.0/24 via 192.168.41.1

設定反映

「network」サービスを再起動することで設定を反映させます。

# service network restart

ルーティングテーブル確認

「192.168.200.0/24」へのルーティングが追加されたことが確認できます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

デフォルトゲートウェイを設定する

デフォルトゲートウェイの設定は下記の設定ファイルにて行い、設定の優先順位としては、以下の通りとなります。

  1. /etc/sysconfig/network-scripts/ifcfg-ethx
  2. /etc/sysconfig/network
  3. /etc/sysconfig/network-scripts/route-ethx

「/etc/sysconfig/network-scripts/ifcfg-ethx」にデフォルトゲートウェイの設定がない場合には、「/etc/sysconfig/network」の設定が読み込まれ、「ifcfg-ethx」「network」の両方がない場合は「route-ethx」の設定が読み込まれ、デフォルトゲートウェイとして設定されます。

どの設定ファイルに設定するかは個人の好みがあるのでなんとも言えませんが、設定はどれか一つのファイルにのみしたほうが良いでしょう。複数のファイルに設定をしてしまうと後に訳が分からなくなってしまうと思いますので。

「/etc/sysconfig/network-scripts/ifcfg-ethx」での設定方法

NICの設定ファイルである「/etc/sysconfig/network-scripts/ifcfg-ethx」に下記の設定を追加することで、デフォルトゲートウェイを設定することができます。(「ifcfg-ethx」は設定するNICにより異なります。eth0のNICにデフォルトゲートウェイを設定する場合は「ifcfg-eth」0を、eth1のNICにデフォルトゲートウェイを設定する場合は「ifcfg-eth1」に設定を行います。)

設定項目
GATEWAY=[デフォルトゲートウェイIP]
DEFROUTE=yes

「DEFROUTE=yes」という設定は、このNICをデフォルトゲートウェイとして使用するという設定になります。

デフォルトゲートウェイ設定

設定ファイルのバックアップを行ってから、「vi」などのエディターで設定を行っていきます。

# cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/20150128_ifcfg-eth0
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
設定追加項目

デフォルトゲートウェイを「192.168.1.1」に設定するため下記の部分を追加していきます。

GATEWAY=192.168.1.1
DEFROUTE=yes
ifcfg-eth0設定例

下記は「192.168.1.1」をデフォルトゲートウェイとした際の設定例となります。

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.1.101
PREFIX=24
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
HWADDR=00:0C:29:07:CF:27
GATEWAY=192.168.1.1
DEFROUTE=yes

設定反映

「network」サービスを再起動してデフォルトゲートウェイの設定を反映させます。

# service network restart

ルーティングテーブル確認

デフォルトゲートウェイが「192.168.1.1」へ設定されていることが確認できます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

「/etc/sysconfig/network」での設定方法

「/etc/sysconfig/network」に下記の内容を設定することで、デフォルトゲートウェイを設定することができます。

設定項目

GATEWAY=[デフォルトゲートウェイIP]

デフォルトゲートウェイ設定

設定ファイルのバックアップを行ってから作業を行います。

# cp -p /etc/sysconfig/network /etc/sysconfig/network_20150128
# vi /etc/sysconfig/network
設定追加項目

デフォルトゲートウェイを「192.168.1.1」に設定するため下記の部分を追加していきます。

GATEWAY=192.168.1.1
設定例

「192.168.1.1」をデフォルトゲートウェイとする設定例です。

NETWORKING=yes
HOSTNAME=centos6.server-memo.net
GATEWAY=192.168.1.1

設定反映

networkサービスを再起動することで、設定を反映させることができます。

# service network restart

ルーティングテーブル確認

デフォルトゲートウェイが「192.168.1.1」へ設定されていることが確認できます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

「/etc/sysconfig/network-scripts/route-ethx」でのデフォルトゲートウェイ設定

スタティックルーティングを設定するためのファイルである「/etc/sysconfig/network-scripts/route-ethx」に下記の設定を追加することで、デフォルトゲートウェイの設定を行うことができます。

「route-ethx」はデフォルトゲートして使用するNICにより異なります。eth0のNICにデフォルトゲートウェイを設定する場合は「route-eth0」を、eth1のNICにデフォルトゲートウェイを設定する場合は「route-eth1」に設定を行います。

この設定ファイルがない場合は、新規に作成する必要があります。

設定ファイル書式

default via [デフォルトゲートウェイIP]

デフォルトゲートウェイ設定

すでにファイルがある場合は、バックアップを行ってからファイルを編集します。ファイルがない場合は新規作成となります。

# cp -p /etc/sysconfig/network-scripts/route-eth0 /etc/sysconfig/network-scripts/route-eth0_20150128
#  vi /etc/sysconfig/network-scripts/route-eth0
設定内容

デフォルトゲートウェイを「192.168.1.1」に設定するため下記の部分を追加していきます。

default via 192.168.1.1

設定反映

networkサービスを再起動することで、設定を反映させることができます。

# service network restart

設定確認

デフォルトゲートウェイが「192.168.1.1」に設定されていることが確認できます。

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.200.0   192.168.41.1    255.255.255.0   UG        0 0          0 eth1
192.168.41.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0

以上です。

 - ネットワーク設定