DHCP①
DHCPについて
1. はじめに
この記事ではDHCPついて、どういったものでどういった動きをしているのかを書いていきたいと思います。書く目的としては、研修にて躓いたこと、学んだことを改めて整理し、定着させるためです。備忘録として読み返せるようにまとめていきたいと思います。
2. DHCPとは...?
DHCPとはDynamic Host Configuration Protocolの略称です。DHCPはホストをインターネットにつなげる際に、自動でIPアドレス(他にもあります、サブネットマスク、デフォルトゲートウェイ、DNSサーバーアドレス)を割り振ってくれる役割を持ったプロトコルです。
DHCPによるIPアドレス自動割り当てが完了するまでには、DHCPを使ってIPアドレスを提供する側であるDHCPサーバーと、それを受け取る側であるDHCPクライアントの間で四つのステップを経ているのです。下の図に各ステップと詳細を記載しました。
DHCPの配布過程(表)
ステップ名 | 方向 | 役割 | 方式 |
---|---|---|---|
DHCP Discover | DHCPクライアント→DHCPサーバー | IPアドレスの配布依頼 | ブロードキャスト |
DHCP Offer | DHCPサーバー→DHCPクライアント | 配布するIPアドレス候補を送信 | ユニキャストまたはブロードキャスト |
DHCP Request | DHCPクライアント→DHCPサーバー | アドレス候補を承認する旨を送信 | ブロードキャスト |
DHCP ACK | DHCPサーバー→DHCPクライアント | 承認を承認する旨を送信 | ユニキャストまたはブロードキャスト |
DHCPの配布過程(図)
このような形で、DHCPによってIPアドレスが割り振られるまでにはいくつかの通信がされています。
また、クライアント側の送信形式がブロードキャスト(同一ネットワークに属するすべての機器にパケットを送信すること)となっている理由は、まだDHCPクライアント自身が自分のIPアドレス等を獲得できておらず、またDHCPサーバーのIPアドレスも知らないからです。クライアント自身がIPアドレスを持っている場合は、この限りではありません。また、サーバーからクライアントに対して贈られる通信はユニキャストが一般的ですが、ブロードキャストで送られる場合もあります。
3.DHCPの設定法(Cisco機器使用の場合)
ここではCisco機器を使用したDHCPの設定方法について解説していきます。
L2スイッチ一台とルーター一台、パソコンが一台あり、L2スイッチとパソコンが直接つながっており、L2スイッチとルーターが直接つながっている構成を想定しています。
スイッチのポートを有効にする
SW(config-if)# spanning-tree portfast
...まずL2スイッチでの設定です。これはDHCPを使用する際、スイッチとパソコンが直接つながっている際に必要になってくる設定です。スイッチにはSTP(スパニングツリー)というネットワークのループを防ぐためにループを検証、必要に応じて一部のポートをブロックするという機能があるのですが、STPを有効にしていると、その処理に時間がかかってしまい、しかもその間はスイッチのポートが無効になってしまいます。そしてDHCPサーバーがPCにIPアドレスを振り分ける前に、PCのOSが自らにリンクローカルアドレスというアドレス(169.254.?.?)を割り当ててしまいます。このリンクローカルアドレスでは、異なるネットワーク間での通信はできないので、意味がありません。故に、その対策として上記のコマンドを入力してあげることによってSTPの処理作業をすっ飛ばして、ポートを有効にしてあげます。そのステップを踏むことによって、PCはDHCPから正しくIPアドレスをもらうことが出来るようになるのです。なので、インターフェースコンフィグレーションモードでポートを使えるようにしてください!と頼むわけです。
DHCPプールを作成する
RT (config)#ip dhcp pool <プール名>
...続いてルーターでの設定に入っていきます。DHCPプールを名前を付けて作成します。DHCPプールとはDHCPで割り当てたいアドレスの範囲のことです。
RT (dhcp-config)# network <ネットワークアドレス> <サブネットマスク>
...DHCPで割り当てたいIPアドレスのネットワークを指定します。
RT(dhcp-config)# default-router <デフォルトゲートウェイ>
...必要に応じて、ルーターのデフォルトゲートウェイを入力します。
RT(dhcp-config)# dns-server <DNSサーバーのアドレス>
必要に応じて、DNSサーバーのアドレスを入力していきます。
RT(dhcp-config)# lease <日> <時間> <分>
必要に応じて、リース(DHCPからのIPアドレスの貸出期間)を指定します。
除外アドレスの設定
RT (config)#ip dhcp excluded-address <除外開始アドレス> <除外終了アドレス>
...グローバルコンフィグレーションモードに戻り、DHCPプールの中でDHCPサーバーから配布するIPアドレス範囲の中で除外したい範囲があればこのように設定します。例えば固定でIPアドレスを使用したい機器などがある場合はこのコマンドを使用するとよいでしょう。
確認コマンド
RT# show ip dhcp sever statistics
...DHCP統計情報の確認をすることが出来ます。
RT# show ip dhcp binding
...DHCPバインディング(どのIPアドレスがどの機器に割り振られたのか)を確認することができます。
4. 終わりに
今回はDHCPについて仕組みと基礎的な設定を書きました。まだ描けていないところもあるので、次の記事でも引き続きDHCPについて書いていきたいと思います。ありがとうございました。
Discussion