2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2022-04-16

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

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

調べてみると DHCP の option 121 を使って送ることができるらしい。
option 121 Classless Static Routes option
注意点としては、option 121 を配布すると option 6 のデフォルトルートを無視するのが RFC の定義らしいので、デフォルトルートも含めて指定しましょう。ただし、両方とも有効として登録してしまう端末もいるので、両方でデフォルトルートが異ならないように。
また Android は option 121 を理解しません。

この他にも DHCP オプション番号 から適当に書き出してみると

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

... と DHCP は色々と情報を送れます。option 43 なんかは、Cisco の AP に WLC (コントローラ) のアドレスを教えるのに使ったり、Aruba の AP にコントローラーのアドレスを教えるのに使ったりと、使い道は色々。
注) クラスフル (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

08 ← subnet mask (ルーティング一つ目)
0a ← 10.0.0.0 の先頭 8bit
c0a80ac8 ← 192.168.10.200
0c ← subnet mask (ルーティング二つ目)
ac10 ← 172.16.0.0 (先頭 16bit)
c0a80ac8 ← 192.168.10.200
00 ← 0/0 省略形 (デフォルトルート)
c0a80afa ← 192.168.10.250
これらを並べることになる。

実行結果

% 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 1000 へ投入!

# 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 スクリプト末尾のコメント部分を参考にどうぞ。

そのほか GUI の例

Aruba IAP WebUI の場合

192.168.16.32/32 192.168.63.128
0/0 192.168.63.254
のスタティックルートを登録する。
image.png
入力する値は HEX 値を : で区切り入力します。
ここで「OK」をクリックした後に、下にある「保存」をクリックで反映。

Aruba Airheads community
1. DHCP Option 121 Configuration

PaloAlto の場合

192.168.16.32/32 192.168.63.128
0/0 192.168.63.254
のスタティックルートを追加する
NETWORK > DHCP
DHCP サーバ から、カスタム DHCP オプションを追加 or 編集で開く
image.png
option 121 を追加する

オプションタイプは 16進数を選択
image.png

他の項目も適宜入力し保存したら commit を忘れずに。

PaloAlto knowledgebase
How to push static routes from the Palo Alto Networks DHCP Server

2
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?