3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

ルーティングテーブルを操作しゲートウェイを設定する

社内ネットワーク用のルータと、インターネット用のルータと2系統に分かれているんですが、とあるサーバのルーティングがデフォルゲートウェイをインターネット用のルータだけにしか設定されていませんでした。

なので、そのサーバの通信の全て(同一LAN内除く)がインターネット用ルータに集中し負荷がかかってしまいます。

ということで、サーバのゲートウェイをルーティングテーブルを使って設定することにしました。

まず、現在のルーティングテーブルの表示方法です。

Windowsだと下記のように route print で表示できます。

>route print

===========================================================================

Interface List

0x1 ........................... MS TCP Loopback interface

0x2 ...00 1a a0 90 19 82 ...... Intel(R) xxx 10/100 Network Connection - パ

ケット スケジューラ ミニポート

===========================================================================

===========================================================================

Active Routes:

Network Destination Netmask Gateway Interface Metric

0.0.0.0 0.0.0.0 10.0.0.1 10.0.0.108 20

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

10.0.0.0 255.255.255.0 10.0.0.108 10.0.0.108 20

10.0.0.108 255.255.255.255 127.0.0.1 127.0.0.1 20

10.0.0.255 255.255.255.255 10.0.0.108 10.0.0.108 20

224.0.0.0 240.0.0.0 10.0.0.108 10.0.0.108 20

255.255.255.255 255.255.255.255 10.0.0.108 10.0.0.108 1

Default Gateway: 10.0.0.1

===========================================================================

Persistent Routes:

None

上記の設定はPCが10.0.108のIPを持っており、デフォルトゲートウェイを10.0.0.1にしてるだけです。

ちなみに、Linuxだとルーティングテーブルの表示は route -n でOKです。(-nつけないとIPでなくホスト名で表示されます。)

# route

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.0.0.0 * 255.255.255.0 U 0 0 0 seth0

169.254.0.0 * 255.255.0.0 U 0 0 0 seth0

default 10.10.0.1 0.0.0.0 UG 0 0 0 seth0

また、ちょこっと触る Solaris だと netstat -rn で表示できるようです。(これはWindowsでも使えました。)

# netstat -rn

Routing Table: IPv4

Destination Gateway Flags Ref Use Interface

-------------------- -------------------- ----- ----- ---------- ---------

default 10.0.0.1 UG 1 263526

10.0.0.0 10.0.0.108 U 1 60500 nge0

224.0.0.0 10.0.0.108 U 1 0 nge0

127.0.0.1 127.0.0.1 UH 133 508331 lo0

Windowsで新しい静的ルートを追加するには route -p add ネットワークアドレス mask マスク GWアドレス とすると可能です。

例えばこんな感じです。

route -p add 10.0.128.0 mask 255.255.255.0 10.0.0.2

オプションで、-p を付けると再起動後も有効になります。

オプションで、-f を付けると現在のデフォルトルートを削除します。デフォルトゲートウェイを設定するときに利用します。(でもデフォルトゲートウェイGUIでやった方が安全かもですね。)

Windowsでルートを削除するには route delete ネットワークアドレス [mask マスク] とすると可能です。(マスクはなくてもいいようです。)

LAN内に複数のルータがある場合は、そのLANに属する端末であらかじめ静的ルートを設定することで、よりルータの負荷を軽減できるかもしれませんね。(じゃないとデフォルトゲートウェイになってるルータに負荷がかかりすぎるので。。)

参考:

@IT:Windows TIPS -- Tips:ルーティング・テーブルを操作する Windowsでのルーティングテーブル操作方法です。

デフォルトゲートウェイの設定 Linuxでのルーティングテーブル操作方法です。

UNIXネットワーク構築 Unix(Solaris)でのルーティングテーブル操作方法です。

netstat コマンド (Solaris のシステム管理 (第 3 巻)) - Sun Microsystems

補足:

NICが複数ある場合はインターフェイスを指定してrouteコマンドで静的ルートを設定するを参照してください。