DHCPでクラスレスな静的ルートを配信する

DHCPでルーティング情報を送りたいことがある。例えば次のような場合。

ルータの向こうにサーバを立てた

デフォルトゲートウェイはブロードバンドルータにするのだけど、それとは別にルータがあって、その向こうのサーバにアクセスしたい。

こうした場合には、サーバへのルートをクライアントに設定するわけだが、マシンが多いとDHCPで配信したい。DHCPには静的ルート(static route)のオプションがあって、特定のIPアドレスへのゲートウェイについては配信できるのだけど、サーバが多いとネットワークアドレスを指定したい。

これを「クラスレスな静的ルート」といって、Windows XP以降ではDHCPのオプション249として実装されている。Windowsクライアント限定になってしまうけれども、これを利用することを考える。

Windows Serverの場合

Windows Serverに付属のDHCPサーバであれば、単に「クラスレス静的ルート」を設定すればいい。

クラスレス静的ルート

Linuxの場合

dhcpdにはstatic-routesというオプションがあるが、これはネットマスクを指定できないのでクラスレスではない。(ただし、RedHatのDHCPクライアントはこれをクラスレスに扱えるらしい・・)

オプション249はMicrosoftの独自拡張なので、これを扱うにはdhcpd.confで次のように設定する。(数値の並びはコンマで区切ることに注意)

# オプション249を定義する
option ms-static-routes code 249 = array of integer 8;

# route -net 192.168.10.0/24 gw 192.168.0.254
option ms-static-routes 24, 192,168,10, 192,168,0,254;

# route -net 10.1.0.0/16 gw 192.168.0.254
option ms-static-routes 16, 10,1, 192,168,0,254;

その他の方法

もっと手軽な方法として、DHCPを使うのではなくて、ブロードバンドルータ上でルートを設定するやり方もある。これにはブロードバンドの設定画面で次のようにルートを登録すればいい。

ネットワーク:192.168.10.0
ネットマスク:255.255.255.0
ゲートウェイ:192.168.0.254

こうするとサーバ宛のパケットはすべてブロードバンドルータを経由して社内ルータに送られる。

本来であれば、ICMPリダイレクトという機能によって、クライアント側に一時的なルートが動的に作られるはずなのだが、これはデフォルトでは無効になっているようだ。

とはいえ、Windowsクライアントに限らずあらゆるケースで有効なので、DHCPと合わせて設定しておくといいかもしれない。

カテゴリー: 調べ物   パーマリンク

DHCPでクラスレスな静的ルートを配信する への1件のコメント

  1. kssy より:

    VPN用にルーターを追加したものの、静的ルートをクライアントに設定したくないなーと悩んでいたので本当に助かりました。ありがとうございます!:-)