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 | ホスト名 |
51 | IP アドレスのリース期間 期間が終わったら、延長 or DHCP サーバーに IP アドレスを返却 |
動作確認
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 で以下のパラメータを設定
パラメータ | 値 | 説明 |
---|---|---|
BOOTPROTO | dhcp | DHCP サーバーで IP アドレスを設定 |
PEERDNS | yes | DHCP サーバーでキャッシュ 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 の場合

参考情報

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 ...

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