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