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

スポンサーリンク

DHCP プロトコルとは

DHCP プロトコルとは、主に以下の設定情報を自動で設定するためのプロトコルです。
・NIC に IP アドレスの割り当て
・キャッシュ 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

EC2 で実際の動作を確認

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

EC2 では「DHCP DISCOVER」と「DHCP REQUEST」を一斉に送っており、先程紹介したフローとは少し異なりますが、やってることは同じです。

■「DHCP REQUEST」、「DHCP ACK」を意図的に実施

sudo systemctl restart network

■「DHCP DISCOVER」、「DHCP OFFER」について

ログを見る限り、cloud-init が1日1回実施してる?っぽいです。

スポンサーリンク

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

参考情報

rfc2132
DHCP Options and BOOTP Vendor Extensions (RFC )
LinuxでDHCPについて勉強してみた - Qiita
DHCPについてあんまりよく分かってない部分もあったので、手を動かしながら確認した時のメモ 環境 Amazon Linux AMI 2016.03.0 (HVM) dhclient isc-dhclient-4.1.1-P1 ...
Dynamic Host Configuration Protocol - Wikipedia

コメント