Dynamic Host Configuration Protocol
作成 : 2002/11/03
Dynamic Host Configuration Protocol
Dynamic Host Configuratin Protocolは、RFC2131で定義されている。 DHCP Optionについては、RFC2132あたり。
DHCPメッセージフォーマット
DHCPメッセージフォーマットは下図を参照。
OP:8bits
メッセージタイプ。
1 = BOOTREQUEST(要求) 2 = BOOTREPLY(応答)
htype(Hardware Address Type):8bits
ハードウェアアドレスタイプで、10Mb Ethernetなら「1」。 IANA.ORG/Protocol Number Assignment Service/ARP Parametersを参照。
hlen(Hardware Address Length):8bits
ハードウェアアドレス長。 htypeが「1」(10Mb Ethernet)ならば、hlenは「6」。
hops:8bits
クライアントは「0」にセットする。 リレーエージェントが使用する。
xid:32bits
クライアント - サーバ間のメッセージ/レスポンスを関連づけるために使用されるID。 クライアントによって、ランダムに選ばれる。
secs:16bits
クライアントがアドレス獲得/更新処理を開始してから何秒経過したか、クライアントによって記入される。
flags:16bits
TCP/IPソフトウェアが初期化されるまでIPユニキャストを受け取れないクライアントは、DHCPDISCOVER/DHCPREQUESTメッセージを送信するとき、BROADCASTビットを「1」にセットするべき。
ciaddr(Client IP Address):32bits
クライアントIPアドレス。 クライアントがBNOUND/RENEW/REBINDING状態で、ARPリクエストに応答することができる場合のみ、記入される。
yiaddr('Your' IP Address):32bits
クライアントに割り当てるIPアドレス。
siaddr(Server IP Address):32bits
サーバIPアドレス。 サーバによって、DHCPOFFER/DHCPACKメッセージで返される。
giaddr:32bits
リレーエージェントIPアドレス。
chaddr(Client Hardware Address):128bits(16octets)
クライアントのハードウェアアドレス。
sname(Server Host Name):512bits(64octets)
サーバホスト名。
file:2048bits(128octets)
ブートファイル名。
options:variable
DHCPオプション。 Magic-Cookieと呼ばれる、「0x63 82 53 63」32ビットのデータで始まる。
たくさんあるので、WindowsクライアントからDHCP要求した場合に使用されるオプションを下に示す。
Code 0:Pad Option(1octet)
Code 255:End Option(1octet)
Code 1:Subnet Mask(4 octets)
クライアントのサブネットマスクを指定する。 DHCP返答にSubnet MaskオプションとRouter Optionの両方を指定する場合は、Subnet Maskオプションを先にしなければならない。
Code 3:Router Option(4n octets)
クライアントサブネットのルータIPアドレスを指定する。 ルータは、優先する順にリストされるべき。
Code 6:Domain Name Server Option(4n octets)
利用可能なDNSサーバのリストを指定する。 サーバは、優先する順にリストされるべき。
Code 12:Host Name Option(n octets)
クライアントのホスト名を指定する。
Code 15:Domain Name(n octets)
DNSによってホスト名を解決するとき、クライアントが使用すべきドメイン名を指定する。
Code 50:Requested IP Address(4 octets)
クライアントに特別なIPアドレスが割り当てられることを可能にするため、DHCPDISCOVERメッセージで使用される。 以前、リースされたことのあるIPアドレスとか?
Code 51:IP Address Lease Time(4 octets)
IPアドレスのリース時間で、単位はsec。
Code 53:DHCP Message Type(1octet)
1 - DHCPDISCOVER 2 - DHCPOFFER 3 - DHCPREQUEST 4 - DHCPDECLINE 5 - DHCPACK 6 - DHCPNAK 7 - DHCPRELEASE 8 - DHCPINFORM
Code 54:Server Identifier(4 octets)
DHCPサーバのIPアドレス。 DHCPサーバは、クライアントがリースオファーを識別できるよう、DHCPOFFERメッセージにこのオプションを含める。 DHCPクライアントは、DHCPREQUESTメッセージにこのオプションを含めることで、どのリースオファーを受け入れたかを示す。
Code 55:Parameter Request List(n octets)
設定パラメータに対する値を要求するため、DHCPクライアントによって使用される。
Code 60:Vender Class Identifier(n octets)
ベンダークラス識別子(どこで定義されてるの?)。
Code 61:Client-Identifier(n octets)
ユニークな識別子を指定するため、DHCPクライアントによって使用される。 クライアント識別子は、htype(Hardware Address Type)/chaddr(Client Hardware Address)フィールドで定義された値のペアに似ているかもしれない(Windowsクライアントではそうだった)。 FQDNのようなハードウェアアドレス以外の識別子が含まれている場合、ハードウェアタイプ値は「0」が使われるべき。
Code 81:FQDN Option - Internet Draft: The DHCP Client FQDN(n octets)
DNSのRR(Resource Record)をアップデートするために指定する(らしい)。
Code 116:Auto-Configure Option - RFC2563(1octet)
0 - DoNotAutoConfigure 1 - AutoConfigure
DHCPメッセージを見る
「tcpdump -X」を実行すると、16進ダンプとASCII変換されたパケットをキャプチャすることができる。 青い字で表示した部分が、DHCPメッセージ(DHCPDISCOVER)。
# tcpdump -X port 53 19:13:14.999902 0.0.0.0.68 > 255.255.255.255.67: xid:0xe0074f25 vend-rfc1048 DHCP:DISCOVER \ NOAUTO:Y CID:01:AA:BB:CC:DD:EE:FF RQ:192.168.X.X HN:"windows" VC:77.83.70.84.32.53.46.48 \ PR:SM+DN+DG+NS+WNS+WNT+WSC+RD+SR+T-7+VO 0x0000 4500 0148 ebef 0000 8011 4db6 0000 0000 E..H......M..... 0x0010 ffff ffff 0044 0043 0134 de7f 0101 0600 .....D.C.4...... 0x0020 e007 4f25 0000 0000 0000 0000 0000 0000 ..O%............ 0x0030 0000 0000 0000 0000 AABB CCDD EEFF 0000 .............'.. 0x0040 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x0050 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x0060 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x0070 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x0080 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x0090 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x00a0 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x00b0 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x00c0 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x00d0 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x00e0 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x00f0 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0x0100 0000 0000 0000 0000 6382 5363 3501 0174 ........c.Sc5..t 0x0110 0101 3d07 0100 0296 02e9 2732 04c0 a8XX ..=.......'2.... 0x0120 XX0c 0777 696e 646f 7773 3c08 4d53 4654 ...windows<.MSFT 0x0130 2035 2e30 370b 010f 0306 2c2e 2f1f 21f9 .5.07.....,./.!. 0x0140 2bff 0000 0000 0000 +.......