LoginSignup
2
0

More than 1 year has passed since last update.

DHCP サーバで static ルートを配る

Last updated at Posted at 2022-04-16

ルーターの DHCP サーバーでルートを配る

おうちでネットワークのテストをしていたら、DHCP で default gateway 以外のルートも配ってみたくなった。

調べてみると DHCP の option 121 を使って送ることができるらしい。
option 121 Classless Static Routes option
この他にも DHCP オプション番号 から適当に書き出してみると

オプション 属性
2 協定世界時からのオフセット時間
3 Router (デフォルトルート)
6 DNS サーバ
7 ログサーバー
15 クライアントの DNS ドメイン名
26 インターフェイスの MTU サイズ
28 ブロードキャストアドレス
42 NTP サーバ
43 ベンダー固有情報
51 IP アドレスのリース期間
121 クラスレス静的ルート

... と DHCP は色々と情報を送れます。option 43 なんかは、Cisco の AP に WLC のアドレスを教えるのに使ったりと、使い道は色々。
注) クラスフル (CIDR に対応していない) ルーティングの Static Route option (option 33) は RFC 3442 で廃止。

では option 121 でルートを送ってみよう

しかしパラメータの計算が面倒くさい。ということで、perl スクリプトを書いてみた。

option121.pl

プログラムの後ろ、END 以下部がルーティングのデータになります。
プログラム中の while (<DATA>){ の部分を while (<STDIN>){ にすると標準入力から対話式に入力できます。

__END__以下をこんな感じにして、実行。

10.0.0.0/8    192.168.10.200
172.16.0.0/12 192.168.10.200
0/0           192.168.10.250
q

実行結果

% perl ./option121.pl
enter Distination net/mask and Gateway <NET>/<bit> <GW>
Default route --> 0/0 <gateway>
(ex: 10.20.30.40/16 172.31.23.5) ==>
Next or quit (q)
(ex: 10.20.30.40/16 172.31.23.5) ==>
Next or quit (q)
(ex: 10.20.30.40/16 172.31.23.5) ==>
Next or quit (q)
(ex: 10.20.30.40/16 172.31.23.5) ==>

08,0a,c0,a8,0a,c8,0c,ac,10,c0,a8,0a,c8,00,c0,a8,0a,fa

YAMAHA RTX 用のオプションの文字列を生成完了。

いざ RTX へ投入!

# dns server 8.8.4.4 8.8.8.8
# dns private address spoof on
# ip host rtx1000 192.168.10.250
# ip host ad.doubleclick.net 127.0.0.1
# ip host www.google-analytics.com 127.0.0.1
#
# dhcp service server
# dhcp server rfc2131 compliant on
# dhcp duplicate check 300 500
# dhcp scope 1 192.168.10.100-192.168.10.150/24 except 192.168.10.111 gateway 192.168.10.250 expire 1:10
# dhcp scope option 1 dns=192.168.10.250,9.9.9.9
# dhcp scope option 1 hostname=RTX1000
# dhcp scope option 1 121=08,0a,c0,a8,0a,c8,0c,ac,10,c0,a8,0a,c8
Error: Illegal keyword
#

な!、肝心な option 121 がエラーに。
調べてみると、昔の Windows は 249 だったらしい。今でも (Windows 11) 効くんだろうか?

改めて option を投入
# dhcp scope option 1 249=08,0a,c0,a8,0a,c8,0c,ac,10,c0,a8,0a,c8
#

エラーなく入ったっぽい。

RTX1000 の配る IP を Windows 11 で取得してみる

→無事、ROUTE に反映されました。

12行目のセパレータを書き換えると NEC UNIVERGE IX, YAMAHA RTX, Cisco で使えることを確認しました。
記述方法については、perl スクリプト末尾のコメント部分を参考にどうぞ。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0