タグVLAN dhcp relayを利用してdnsmasqを利用したい

タグVLANで、ポートに割り当てられたネットワーク体系で、dhcp relayして、DHCPサーバにアクセスし、そのscopeのIPアドレスを払い出して欲しい時の話です。

言葉で書くとやたら難しい。

タグの話せるL3とL2を連携して、大規模なネットワークを構築した時に、DHCPサーバを一つで済ませたい時の話です。

DHCPサーバは一つがいいです。

軽快に動くdnsmasqを利用した時にはまったポイント

dhcp-range を書く時に、maskも書く事。

これにつきます。maskを書かないと、dnsmasq側ではクラスA,B,CでのIPアドレス範囲しか確認できず、思わない違うDHCPスコープのIPアドレスを払い出してしまいます。

各ネットワークアドレス体系の割り当てられたポートの先にクライアントがつながりますが、どうやってDHCPサーバ側で正しいIPアドレスを払い出すか(そのIPアドレス体系ののIPアドレスを払い出すか)は、割り当てられたポートのIPアドレスに寄ります。

|DHCPサーバ| – | L3 VLAN tag| – | L2 VLAN tag IP address | – | DHCP Client |

という構成で、L2 VLAN tag が割り当てられたaccess port のIPアドレスを元に、DHCP ClientにIPアドレスが払い出されます。この仕組みは giaddrを見てDHCPサーバが払い出すと表現しますが、ここのサイトがとっても分かりやすいです。

さて、dnsmasqをサーバとしたときに注意する点はマニュアルから、

This option may be repeated, with different addresses, to enable DHCP service to more than one network. For directly connected networks (ie, networks on which the machine running dnsmasq has an interface) the netmask is optional: dnsmasq will determine it from the interface configuration. For networks which receive DHCP service via a relay agent, dnsmasq cannot determine the netmask itself, so it should be specified, otherwise dnsmasq will have to guess, based on the class (A, B or C) of the network address. The broadcast address is always optional. It is always allowed to have more than one –dhcp-range in a single subnet.

この部分になります。平たく言うと、

dhcp relayを通してdhcpサービスにアクセスした場合、dhcp-rangeにnetmaskの設定をしておかないと、dnsmasqはネットマスク自体を決定できないためクラスA,B,Cに基づいてIPアドレス返しますよ。

という事で意図しないIPアドレスが割り当てられてしまう事になるのです。

なので、ポイントはdhcp-range に netmaskをちゃんと書く!

ってところなんです。

dhcp-range=set:vlan,開始アドレス,終了アドレス,netmask,リース期間

なんですね。vlan切って、他のIPアドレスからのDHCPリクエストが届かない時は全く気にしなくていいんです。このnetmask。

実際の設定はこんな感じです。

dhcp-range=set:vlan10,172.22.0.10,172.22.7.24,255.255.248.0,1h
dhcp-option=tag:vlan10,option:netmask,255.255.248.0
dhcp-option=tag:vlan10,option:router,172.22.7.1
dhcp-option=tag:vlan10,option:dns-server,172.31.99.10
dhcp-range=set:vlan20,172.22.40.10,172.22.43.249,
255.255.252.0,1h
dhcp-option=tag:vlan20,option:netmask,255.255.252.0
dhcp-option=tag:vlan20,option:router,172.22.43.1
dhcp-option=tag:vlan20,option:dns-server,172.31.99.10
dhcp-range=set:vlan30,172.22.32.10,172.22.35.249,255.255.252.0,1h
dhcp-option=tag:vlan30,option:netmask,255.255.252.0
dhcp-option=tag:vlan30,option:router,172.22.35.1
dhcp-option=tag:vlan30,option:dns-server,172.31.99.10
dhcp-range=set:vlan400,172.22.48.10,172.22.48.249,255.255.255.0,1h
dhcp-option=tag:vlan40,option:netmask,255.255.255.0
dhcp-option=tag:vlan40,option:router,172.22.48.1
dhcp-option=tag:vlan40,option:dns-server,172.31.99.10

私は、option:netmask,255.255.252.0 これ設定してたからnetmaskもちゃんとdnsmasqに教えてるからいいじゃないか!と思っていたのですが、こちらは払い出される時のdhcpオプションの扱いです。

これにはまって、解決するまで1日かかりましたよ。

VLAN使って複数ネットワーク体系を扱い1台のdnsmasqでdhcpの払い出しをしたかったら、dhcp-rangeには必ずnetmasqを設定するようにしましょう!

1件のコメント

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)