- 1.DHCPとは
- 2.DHCPを利用するメリット
- 3.DHCPサーバ サーバ側の設定
- 4.DHCPの手順
- 5.DHCP リレーエージェント
- 6.DHCPの実際のフレーム構造
- 7.DHCPのフレーム構造(詳細)
- 8.DHCPスヌーピング
1.DHCPとは
・DHCP(Dynamic Host Configuration Protocol)とは、言葉の通り、動的にホスト(Host)やPCのネットワークの設定(Configration)をするプロトコル(Protocol)です。
・過去問ではDHCP(Dynamic Host Configuration Protocol)に関して、「DHCPは、IPアドレスなどのネットワーク接続に必要な情報、IPアドレスの有効時間を示すリース期間及びサブネットマスクなどのオプション情報をDHCPサーバから自動的に取得し、PCに設定するためのプロトコル(H21春AP午後-問5)」と述べている。
・パソコンの設定は、ネットワークの設定は、図のように「IPアドレスを自動的に取得する」にします。
・UDP67番がサーバでUDP68番がクライアントで使うポート
・DHCPの前身になるのがBOOTP(BooTstrap Protocol)。DHCPはBOOTPを大幅に拡張しており、扱えるオプションなどがかなり増えている。
複数のDHCPサーバがあるとき、クライアントはどのサーバからアドレスを取得するのですか?
一般的には,最も早く応答したDHCPサーバからIPアドレスを取得する。ネットワーク的な距離が近いものから取得することになるが、そのときのタイミングにより、結果は変わると想定される。
ということは、DHCPサーバを冗長化したときに、マスターとなるDHCPサーバから払いだしたのか、バックアップ側のDHCPサーバから払い出したのかが分からないということですね。
そう。これでは、払い出しログを確認するときなど、管理する人にとっては面倒である。
そこで、バックアップ側のDHCPサーバでは、払い出しのタイミングをずらすという遅延設定を入れることがある。
2.DHCPを利用するメリット
■DHCPを利用するメリット
・全端末に設定をする必要がない。(特に変更時が便利。1000人の設定を変えるのは大変である。新しいパソコンに入れ方たときもそうだし、パソコンをフロアを移動して使う場合なども)
⇒過去問では、「IPアドレスなどを手作業で設定する煩雑さをなくす。(H21春AP午後-問5)」と述べている。
・IPアドレスの一元管理が行える(DHCPサーバのログより)
・IPアドレスの有効利用(企業ではプライベートアドレスを使うので、あまりメリットではないかも)
⇒過去問では、「リース期間を設定することによって、一定期間ごとのIPアドレスの再利用を行うので、DHCPサーバに登録するIPアドレス数の削減ができる。(H21春AP午後-問5)」と述べている。
■DHCPを利用せずに、固定IPアドレスを利用するメリット
・DHCPサーバがダウンしてもネットワークを利用できる。
(DHCPサーバのコストは結構かかる。全セグメントに1台ずつ置くのは大変なので、リレーエージェントの設定をするが、そうするとネットワークがダウンしたら使えない)
・IPアドレスと端末(ユーザ)の特定がしやすい。
・(DHCPのデメリットになるが、)持ち込みPCをつないだとしても、自動でネットワークに接続できてしまうため、セキュリティが弱くなる。とはいえ、固定でも自分で設定すれば同じなわけであるが、セキュリティの弱さという意味では、DHCPのほうが弱い。(気持ちの問題かもしれないが)
■DHCPか固定か
・サーバなど、固定IPにしないと、通信が影響がでやすいものは固定にする。
・セキュリティ上の懸念がない環境であれば、運用面を考えてDHCPとする。
3.DHCPサーバ サーバ側の設定
■1.サーバ側の設定
・サブネット/ネットマスク
・払い出すIPアドレスの範囲
・ドメインサフィックス
・デフォルトゲートウェイ
・DNSやWins
・リース時間
・払い出し除外のIP
・固定でのIP払い出し(MACアドレスと対応)
ということは、前半5つの情報が、PCに払い出されるネットワーク情報と考えていいですね。
そういうことになる。
過去問(H27春AP午後問5)をみてみよう。
PCは,(ア)DHCPサーバから,自身のIPアドレスを含むネットワーク関連の構成情報(以下,構成情報という)を取得して自動設定している。 設問2 本文中の下線(ア)について,自動設定できる構成情報を解答群の中から二つ選び,記号で答えよ。 解答群 ア DNSキャッシュ時間 イ サブネットマスク ウ デフォルトゲートウェイのIPアドレス エ プロキシサーバのIPアドレス |
↓
↓
↓
↓
↓
正解は、イとウである。DHCPにより、どんな情報が取得できるかは、しっかりと理解しておこう。
■2.CiscoのCatalystスイッチの場合の設定例
(1)設定例
Switch#configure terminal Switch(config)# ip dhcp pool seg1 ←任意の名前を付ける
Switch(dhcp-config)# network 192.168.1.0 255.255.255.0 ←払い出すネットワークとサブネットを指定
Switch(dhcp-config)# default-router 192.168.1.254 ←払い出すデフォルトゲートウェイを指定
Switch(dhcp-config)# dns-server 8.8.8.8 ←払い出すDNSサーバを指定
Switch(dhcp-config)#exit
|
※スイッチでDHCPサーバの機能を有効にしても端末にIPアドレスが払い出されない場合があります。そんな場合は、スイッチにIPアドレスを設定しているかを確認してください。
(2)払出しの状態確認
どの端末(MACアドレス)にどのIPを払い出しているかは、show ip dhcp bindingコマンドで確認できます。
Switch#sh ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
192.168.1.1 0168.f728.***.d3 Jun 30 2019 10:01 AM Automatic
192.168.1.2 01a0.b3cc.***.de Jun 30 2019 09:50 AM Automatic
上記の例だと、192.168.1.1と192.168.1.2に対して、いつ、どのMACアドレスに払出しをしたかが確認できます。
4.DHCPの手順
過去問(H21春AP午後-問5)にてDHCPメッセージのやり取り手順が述べられている。
①DHCP DISCOVER →ブロードキャスト
端末がDHCPサーバを探す(DISCOVER)フレームで、ブロードキャストでセグメント内の端末に一斉送信します。DHCPサーバを探すと同時にIPアドレスを要求します。
②DHCP OFFER →ユニキャスト
DHCPサーバから端末に対して、「このIPアドレスはどうでしょうか」と提案(OFFER)をするフレームです。このとき、IPアドレスだけでなく、サブネットマスクやDNSなどの情報も含まれます。
③DHCP REQUEST →ブロードキャスト
端末からDHCPサーバに対し、提案されたIPアドレスを使用したいという要求(REQUEST)をするフレームです。このフレームには、DHCPサーバとのやり取りの情報(Transaction ID)が含まれています。よって、DHCPサーバが2台あったとしても、このフレームによって、DHCPサーバが提案したIPアドレスが採用されたかどうかがわかります。
④DHCP ACK →ユニキャスト
DHCPサーバから、要求を確認(ACKnowledge)したので、そのIPアドレスを使ってくださいというフレームを送って、払出しが完了です。
※②と④はMircosoft社のDHCPサーバとISCのDHCPサーバによってユニキャストでは無い場合がある。
上記の1)DHCP DISCOVERでは、DHCPサーバが分からないのでブロードキャストする必要があります。
しかし、なぜ3)DHCP REQUESTもブロードキャストする必要があるのですか?
DHCPサーバが複数存在する場合があります。その場合、IPアドレスを決定したことをセグメント上に伝える意味があります。そうしないと、他のDHCPサーバは、何度もクライアントにIPを払い出そうとしてしまう。
話は変わりますが、
DHCPサーバが複数台あっても問題ないのですか?
基本的には上記のDHCP REQUESTでブロードキャストを利用していることにより問題は発生しない。クライアントはどのDHCPサーバを選択するかというと、フレームが速く到着したものを採用する。
ただ、各DHCPサーバソフトを提供している会社は推奨していない。障害が発生する可能性があるからだ。Linuxではそのための冗長化(フェールオーバ)の機能を提供している。
過去問(H27春AP午後問5)を見ましょう。
DHCPサーバによる構成情報の付与シーケンスを図2に示す。DHCPメッセージは,OSI基本参照モデル第4層の【 c 】プロトコルで送受信される。![]() 図2 DHCPサーバによる構成情報の付与シーケンス 設問3(2)図2中の④DHCP REQUESTの内容から,2台のDHCPサーバが知ることができるDHCP OFFERの結果について,20字以内で述べよ。 |
↓
↓
↓
↓
↓
解答例:自身の提案が受け入れられたかどうか
つまり、①DISCOVERと②OFFERだけで払出し処理をすると、提案が受け入れられたかがわからないので、無駄にIPアドレスを払い出してしまうことになります。
サーバ側では、払い出したつもりになっているからです。
・過去問(H28春SC午前2問19)
問19 IPv4ネットワークでIPアドレスを割り当てる際に, DHCPクライアントとDHCPサーバ間でやリ取りされるメッセージの順序として,適切なものはどれか。 ア DHCPDISCOVER, DHCPACK, DHCPREQUEST, DHCPOFFER イ DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK ウ DHCPREQUEST, DHCPACK, DHCPDISCOVER, DHCPOFFER エ DHCPREQUEST, DHCPDISCOVER, DHCPOFFER, DHCPACK |
↓
↓
↓
↓
↓
正解はイ
◆おまけ
DHCPでIPアドレスを取得できなかった場合、Mircosoft社の製品ではAPIPA(Automatic Privete IP Addres)による自動プライベートIPアドレス(169.254.X.X)が割り振られる。ただ、このIPアドレス(=リンクローカルアドレス)では他のPCと通信はできない。
5.DHCP リレーエージェント
■1.DHCP リレーエージェントとは
・DHCPの代理中継のこと。
・過去問では、「ルータは、DHCPクライアントからネットワーク接続に必要な情報などの取得要求を受け取ると、DHCPリレーエージェント機能によって、DHCPサーバにその要求を転送する。また、DHCPサーバからの応答をDHCPクライアントに転送する。(H21春AP午後-問5)」と述べている。
・Ciscoでは、IFに以下の設定を行うことで、DHCPリレーエージェントを有効にするとともに、DHCPサーバを指定している。
Router(config)#int gigabitEthernet0
Router(config-if)#ip helper-address 192.168.1.100
■2.仕組み
PC→→ルータ(代理中継)→WAN→DHCPサーバ
・ルータまではブロードキャスト
・ルータからDHCPサーバまではIPパケット
■3.なぜDHCPリレーエージェントが必要なのか
・DHCPのパケットはブロードキャストで送られるため、WANを超えられない。DHCPサーバをブロードキャスト範囲内に設置できればいいが、コスト的そうはいかない。DHCPサーバだらけになってしまう。
また、DHCPサーバを冗長化するのはコスト的に大変なので、リレーエージェントを使うことで、DHCPのスタンバイ機の設定ができる。
■4.DHCPサーバは、どうやって払いだすIPを決めるのか。
DHCPサーバは、複数のセグメントからIPの要求が来る。
払いだすIPをどうやってきめるのだろうか?
DHCPリレーエージェントには、中継元のルータのLAN側IPアドレス(覚える必要はないが、giaddr=Gateway IP Address)が入っており、そのIPアドレスと同一セグメントのIPアドレスを払いだします。
Q.では、DHCPリレーエージェントの仕組みを含めてネットワーク構成図、DHCPサーバの設定、ルータの設定、送受信されるパケットを書いてみよう。 |
↓
↓
↓
↓
↓
話が変わり、DHCPは早い者勝ちで払いだす。優先的に使わせたいDHCPサーバがある場合には、遅延設定をすることで該当するサーバへの問い合わせが早い者勝ちに負ける設定をする。
・DHCPリレーエージェントの仕組みを理解する過去問があるので、紹介する。
【H18NW午前 問44】 DHCPを用いるネットワーク構成で、リレーエージェントが必要になるのは、ネットワークにどの機器が用いられている場合か。 ア スイッチングハブ イ ブリッジ ウ リピータ エ ルータ |
↓
↓
↓
↓
↓
正解: エ
6.DHCPの実際のフレーム構造
では、実際のDHCPのパケットを見てみましょう。
❶DHCP DISCOVER
クライアントがサーバを探す(Discover)。宛先MACアドレスがFFFFFFFFFFFなので、ブロードキャストである。ブロードキャストパケットはルータでは破棄されるため、ルータを超えられない。なので、同一セグメント内でのみDHCPが利用できる。
❷DHCP OFFER
DHCPサーバからのユニキャスト。デフォルトGWなどの情報も合わせて提案される。
以下のキャプチャの上部には192.168.1.2が提案され、下の方でオプションのサブネットマスクやRouter(デフォルトGW)などが提案されている。
❸DHCP REQUEST
クライアントからの了解を送る。ブロードキャスト。
ブロードキャストで送るのは、この通信によってIPアドレスを取得したことを周りのメンバーに伝えるためですよね?
ということは、パケットの中に、取得したIPアドレス情報が入っていますね。
そう思っていたのですが、実際には入っていません。どうやら、transaction idだけで把握しているのでしょう。一連の流れは共通のtransaction idを用いられる。このidだけが埋め込まれており、どのIPアドレスを使うかは直接記載されていないようだ。(要確認)
❹DHCP ACK ユニキャスト
7.DHCPのフレーム構造(詳細)
▼DHCP Discoverの場合のフレーム構造
ちょっと汚いので、時間があれば直します。
▼フィールドの詳細
RFC http://tools.ietf.org/html/rfc2131 をもとに作成
Field | 長さ (バイト) |
意味 | 解説 |
op | 1 | メッセージタイプ | クライアントからのRequestは1、サーバからのReplyは2 |
htype | 1 | ハードウェアタイプ | 通常のイーサネットは1 |
hlen | 1 | ハードウェア長 | 通常のイーサネットは6 |
hops | 1 | hops | 通常は0 |
xid | 4 | Transaction ID | 一連の通信で共通で利用されるID |
secs | 2 | 0または、経過した秒数 | |
flags | 2 | フラグ | 回答をブロードキャストで要求する場合は、一番左のビットに1をたてる |
ciaddr | 4 | クライアントのIPアドレス | すでにIPアドレスを持っていて、Renewなどにより再取得するときなどに限定してセットされる。 |
yiaddr | 4 | your IP address | 払い出すIPアドレスがセットされる |
siaddr | 4 | 起動処理に使うための次のサーバ。DHCPサーバのIPアドレスがセットされるわけではない。 | |
giaddr | 4 | リレーエージェントのIPアドレス | |
chaddr | 16 | Client Hardware addres | ClientのMACアドレス |
sname | 64 | サーバのホスト名 | |
file | 128 | ||
options | variable | オプション | DHCPのリースタイム、サブネットマスク、デフォルトGW、DNS情報など |
8.DHCPスヌーピング
ネットワークスペシャリスト試験の過去問(H25年秋NW午後Ⅰ問2)では、以下の記述がある。
L2SW及びSWがもつDHCPスヌーピング機能を使用する。この機能によって,L2SW及びSWは,正規のDHCPサーバと端末間で通信されるDHCPメッセージを,通過するポートの場所を含めて監視する。さらに,正規のDHCPサーバからIPアドレスを割り当てられた端末だけが通信できるように,ポートのフィルタを自動制御する。 |
スヌーピングとは,「のぞき見する」という意味です。つまり、DHCPのパケットをのぞき見し、不正な通信をブロックします。具体的に、今回のDHCPスヌーピングの機能は以下です。
❶正規のDHCPサーバを接続するポートを指定する機能
指定したポート以外にDHCPサーバを接続しても、DHCPの払い出しをさせません。もし、指定したポート以外からDHCP OFFERやDHCP ACKが届いたとしても、そのフレームをSWが破棄します。
❷正規のDHCPサーバからIPアドレスを割り当てたPCだけを通信させる機能
DHCPのパケットをスヌーピングし、正規のDHCPからIPアドレスを払い出されたPCだけを通過させます。PCの特定はMACアドレスで行います。さらには,利用者が勝手に固定IPアドレスを割当てたPCの通信も拒否します。
CatalystでのDHCPスヌーピングの設定を紹介します。
SW(config)# ip dhcp snooping ←DHCPスヌーピングを有効化 SW(config)# ip dhcp snooping vlan 10 ←DHCPスヌーピングを有効にするVLANを指定 SW(config)# interface fastethernet0/24 ←上記①の設定 SW(config-if)# ip dhcp snooping trust ← 〃 SW(config)# interface fastethernet0/1 ←上記②の設定 SW(config-if)# ip verify source port-security ← 〃 |
少し補足します。
①の設定は、DHCPサーバを接続する24番ポートをtrust(信頼された)として設定します。この設定をしないポートはuntrust(信用されない)という設定になり、DHCPサーバを接続してもDHCPのフレームが破棄されます。
②の設定は、DHCPスヌーピングにIP Source Guardを付加しています。1番ポートでは、正規の端末以外からの通信を拒否します。「verify」とは「正しいかどうかを確かめる」という意味です。