ネットワークエンジニアの備忘録

トラブルや気になった点をメモしておきます。

DHCP Relayについて

通常DHCPによるIPアドレス取得はDHCP ClientとDHCP Serverが同一セグメントに存在する必要があります。IPアドレス取得時にDHCP Clientからの発信する要求(DHCP Discover)がブロードキャストを使用するためです。しかしDHCPサーバをDHCP Clientと同一セグメントに設置することは稀なので、ユニキャストに変換して通信を行うDHCP Relay機能を使います。先日DHCPサーバを評価しているときに「DHCP Serverは何を元にDHCP Clientに対して払い出すセグメントを決めているんだろう」と思い、キャプチャしたパケットを確認しました。

検証構成図は以下となります。

f:id:hy0:20171115222120p:plain

 

てっきりDHCP Discoverを確認すればサブネットマスク情報が載っていて、送信元IPアドレスとの組み合わせで払い出すセグメント(プール)を決めているのかな~と思ってキャプチャを確認すると、、、サブネット情報がどこにも無い、、

f:id:hy0:20171115222410p:plain

 

もちろんDHCP Offerにはサブネットマスクデフォルトゲートウェイ載っています。これはDHCPプールで設定しているので当然ですね、、、

f:id:hy0:20171115222741p:plain

つまりDHCP Serverは自身のプールの中から送信元IPアドレスにマッチしたものを払い出すだけなんじゃないか?と仮説を立ててプールを172.16.0.0/16にしてみました。

DHCP_Server#
!
ip dhcp pool DHCP_POOL
network 172.16.0.0 255.255.0.0
default-router 172.16.0.254
DHCP_Client#
*Nov 15 22:29:42.551: %DHCP-6-ADDRESS_ASSIGN: Interface FastEthernet0/0 assigned DHCP address 172.16.0.1, mask 255.255.0.0, hostname DHCP_Client

想定どおり172.16.0.0/16のIPアドレスが払い出されました。このことからDHCP Serverが払い出すプールは送信元IPアドレスだけ見ていることがわかります。確かにサブネット情報はルーティングプロトコル以外あまりやりとりされないのですが、根拠も無くサブネットマスクも見ているものだと思い込んでいました。ちなみに送信元IPが同じでもDHCP ServerがDHCP Clientを見分けられるのはDHCP Discoverの中にClient Macが格納されているからです。

f:id:hy0:20171115223548p:plain

今まで当たり前にやってきたことも掘り下げる必要があることを痛感しました。。各機器のconfigは以下のとおりです。 

DHCP_Server#
!
ip dhcp pool DHCP_POOL
network 172.16.0.0 255.255.0.0
default-router 172.16.0.254
!
interface FastEthernet0/1
ip address 172.16.10.100 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 172.16.10.254
!
DHCP_Cient#
!
interface FastEthernet0/0
ip address dhcp
!
interface FastEthernet0/0
ip address 172.16.0.254 255.255.255.0
ip helper-address 172.16.10.100
!
interface FastEthernet0/1
ip address 172.16.10.254 255.255.255.0
!