【入門 DHCP プロトコル】 DHCPパケットのシーケンスを説明

スポンサーリンク

DHCP プロトコルとは

DHCP プロトコルとは、主に以下の設定情報を自動で設定するためのプロトコルです。
NICIP アドレスの割り当て
キャッシュ DNS サーバー
・NTP サーバー
デフォルトゲートウェイ(ルーター)
ホスト

手動で設定することも可能ですが、設定を自動化するために DHCP プロトコルを利用します。

なお、家庭用ルーターでは、通常 DHCP サーバー機能を持ちます。

スマホやパソコンをルーターに接続すると、勝手に IP アドレスが設定されるのはこのためです。便利ですね〜!

本記事の以降の内容は以下の書籍を参考にしています。

最もおすすめの書籍

有名な書籍

スポンサーリンク

DHCP サーバーの仕組み

DHCP サーバーは以下のように動作します。

クライアントメッセージサーバー
DHCP サーバーがいたら連絡をくれDHCP DISCOVER--->
<---DHCP OFFER俺が DHCP サーバーだ。
この IP アドレスでどう?
いいね。その IP アドレスで頼むわDHCP REQUEST --->
<--- DHCP ACKじゃあ IP アドレスオプション(後述)の情報をあげる

クライアント側は「DHCP DISCOVER」、「DHCP REQUEST」はブロードキャストで送信します。

これは「DHCP DISCOVER」、「DHCP REQUEST」を送信する時点では、自分の IP アドレスを持っていないため、IP プロトコルを利用した通信はできないからです。

DHCP ACK オプション

「DHCP ACK」で渡すオプションのうち、よく利用されるのは以下の項目です。

コード設定内容
1サブネットマスク
3ルーターの IP アドレス
4タイムサーバーの IP アドレス
6キャッシュ DNSサーバーの IP アドレス
7ログサーバーの IP アドレス
12ホスト
51IP アドレスのリース期間
期間が終わったら、延長 or DHCP サーバーに IP アドレスを返却
https://datatracker.ietf.org/doc/html/rfc2132

動作確認

DHCP サーバーに対するリクエストとレスポンスを見てみます。

sudo cat /var/log/messages|grep DHCP
dhclient[2649]: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6 (xid=0x11111111)
dhclient[1111]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x11111111)
dhclient[1111]: DHCPOFFER from 192.0.2.1
dhclient[1111]: DHCPACK from 192.0.2.1 (xid=0x11111111)
スポンサーリンク

DHCP クライアント側の設定

DHCP により IP アドレスキャッシュ DNS サーバーを自動で設定するには、以下のパラメータを指定します。

■ Linux の場合

/etc/sysconfig/network-scripts/ifcfg-eth0 で以下のパラメータを設定

パラメータ説明
BOOTPROTOdhcpDHCP サーバーで IP アドレスを設定
PEERDNSyesDHCP サーバーでキャッシュ DNS サーバー(/etc/resolve.conf)を設定
cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
DHCPV6C=yes
DHCPV6C_OPTIONS=-nw
PERSISTENT_DHCLIENT=yes
RES_OPTIONS="timeout:2 attempts:5"
DHCP_ARP_CHECK=no

■ Windows の場合

https://support.eonet.jp/connect/net/multi_bbr/eo-rt100/quick/ip_dyn_win10.html

参考情報

RFC 2132: DHCP Options and BOOTP Vendor Extensions
This document specifies the current set of DHCP options. Future options will be specified in separate RFCs. The current list of valid options is also available ...
LinuxでDHCPについて勉強してみた - Qiita
DHCPについてあんまりよく分かってない部分もあったので、手を動かしながら確認した時のメモ環境Amazon Linux AMI 2016.03.0 (HVM)dhclient isc-dhcl…
Dynamic Host Configuration Protocol - Wikipedia