社内ネットワーク用のルータと、インターネット用のルータと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
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コマンドで静的ルートを設定するを参照してください。