IPアドレス設定の自動化ーDHCP

 DHCP(Dynamic Host Configuration Protocol)はIPアドレスを自動的に割り当てる仕組みです。最近は多くのネットワークでDHCPを動かしています。なぜでしょうか。それはDHCPを動かすことで、ネットワークの管理が格段に改善されるためです。
 貴方が今、大学生、あるいは社会人で企業に勤務しているという場合は、身近にLANがあるはずです。このような場合は、DHCPシステムが動いている可能性が高いと思います。自宅で、インターネットをしているという場合は、ブロードバンドルータという機器を使っているかも知れませんが、この場合にもDHCPが動いていると思います。もちろん、LANがあるけれども、DHCPを利用していないという場合もあるでしょう。




1 DHCPシステムがないとどうなるのか?

 初めにDHCPという仕組みがない場合はどうなるか考えてみましょう。コンピュータはIPアドレスが割り当てられていないと通信ができないということは既に知っていると思っていいですね。知らない方は、テキストの読む順番が違っていると思いますので、基本の勉強をしてください。IPアドレスはインターネット上でのコンピュータの位置を識別するための識別子となるものですので、これがないと通信が成り立ちません。ではIPアドレスは他と区別できれば何でもいいのでしょうか。そういうわけにはいきません。例えば、群馬県の前橋市に住んでいる人が、自分は東京都の港区の住所にしたいので、東京都港区麻布台なんていう住所を勝手に名乗っても困ります。市役所や郵便局などは困ってしまいます。同じことがネットワークにも言えます。インターネット上で、住所の上位部分、つまり町名表示くらいまでに該当するのがサブネットワークアドレスです。同じ町内に住んでいる人の住所は町名部分までは全員共通していなくてはなりません。そうでないと郵便配達の人は郵便物を効率的に届けることができません。インターネットの通信は、郵便システムと非常によく似ていますので、インターネットにもこのことが当てはまります。つまり、同じサブネットワークにあるコンピュータは、同じサブネットワークアドレスを持っていなくてはならないのです。

 大きな企業のネットワーク(社内LAN)や大学のネットワーク(キャンパスLAN)では、中にいくつものサブネットワークがあるのが普通です。ある企業のある部署に新入社員が入って来たとします。当然新入社員用のパソコンが用意されると思います。このパソコンは多分新品ですので、設定はまだ済んでいません。この設定をするのが新入社員の最初の仕事になるのではないでしょうか。この場合は、新入社員は社内ネットワークの管理部門から、配属された部署のサブネットワークと、デフォルトゲートウェイ、DNSサーバのアドレスを指定され、それを自分で設定するように指示されます。たぶん、IPアドレスのホスト部分は部署内の係りの人から指示されると思います。しかし、初心者にはこれがなかなか面倒です。アドレスを間違って指定してしまうことがあります。サブネットマスクなどというのは、門外漢には決して分かりやすい概念ではありませんので、よく設定間違いが発生します。もちろん、ネットワーク管理者が怠慢で、管理表に間違いがあったなどという場合もあります。サブネットワーク部分が違うと、他のパソコンとつながりませんし、インターネットもできません。サブネットが違うパソコン同士は同じ物理ネットワークを共有することはできないので、他のパソコンとつながらないのです。インターネットにつながらないのは、外への出口役(デフォルトゲートウエイ)を努めるルータのIPアドレスと違うサブネットになってしまったため、ルータと通信ができなくなってしまうからです。ホスト部分のアドレスを間違えると、他のコンピュータとアドレスが重複してしまうこともあります。重複してしまうと、早く立ち上げた方の勝ちになります。遅く出社した人は、昨日まで使えていたのにどうして今日はだめなのかと悩むことになります。全然、設定変更していないのに何故なんだろうと悩みます。それから、古くなって廃棄処分されたパソコンに割り当てられていたIPアドレスがそのまま使われずに放置されることもあります。会社内の部署異動ということもあります。人事課にいた人が営業に異動になり、サブネットワークアドレスが変わったという場合にもIPアドレスの変更の必要性があります。本当に困ったら社内に得意な人(あるいは専門の部署)がいますので、その人に頼むしかないのですが、なまじっかパソコンが得意だとトラブル対応の依頼がひっきりなしに来て本来の仕事ができないなどの問題も出てきます。





2 DHCPがあるととっても便利

 IPアドレスの管理はTCP/IPの初期のころからネットワーク管理者を悩ませていたようです。当初はBOOTP(Boot Strap Protocol)というプロトコルが使われていました(1985年のRFC951)。

 BOOTPでは、MACアドレスとIPアドレスの対応関係を予め決めておき、これをBOOTPサーバの定義ファイルに記述しておく必要があります。クライアントからBOOTPサーバにアドレス要求があるとサーバはテーブルからクライアントのMACアドレスに関連付けられているIPアドレスを返信するという形で機能します。このIPアドレスの割り当ては恒久的なものでテーブルを修正しない限り変えることができません。

 これでもかなり便利だと思います。予めMACアドレスとIPアドレスを対応付けておくことができるので、IPアドレスの重複割り当てとか、割り当て間違いなどがなくなります。しかし、まだまだ少し不便です。ネットワーク管理部門は社内に新人が来て、新しいパソコンが配布されるという場合は、予めそのパソコンのMACアドレスを調べて、サーバの管理ファイルに記述する必要があります。新人社員にMACアドレスを調べさせ、それを電話で聞き出して、管理表を作るというようなことは少し難しいかもしれません。何も知らない人が自分のパソコンのMACアドレスを調べるのはちょっと大変だからです(といいましたが、実は皆さんはもう大変ではありません。おなじみのpowershellで"ipconfig /all"を打つだけです。「イーサネットアダプターローカルエリア接続」という表示の部分に物理アドレスとして表示されます)。また、一度管理テーブルを作ると、そのままいつまでも適用されるというのも面倒です。一度設定すると、たとえそのパソコンが古くなって廃棄処分をするというときでもまだ設定は生きています。

 DHCPはBOOTPを改良したものです(RFC2131、2132)。改良点の第1は、MACアドレスとIPアドレスの対応関係を流動的にしたことです。BOOTPの割り当てを静的割り当てというのに対して、DHCPの割り当て方法は動的(ダイナミック)割り当てといいます。ダイナミック割り当てでは予めプールした(設定した)IPアドレスの集合の中から、適切に割り当てることができます。2番目の改良点は、DHCPのIPアドレスの割り当ては恒久的ではないということです。予め決めた期間がすぎれば、別のクライアントマシンにIPアドレスを割り当てることができます。3つ目の改良点は設定パラメータが格段に増えたことです。BOOTPは、IPアドレス、サブネットマスク、ゲートウェイ(外のネットワークに出て行くときに使用するルータのインターフェース)、オプションとしてホスト名だけです。これに対して、DHCPでは、BOOTPで認められているパラメータに加えて、更にドメイン名、DNSサーバなど数多くのパラメータを設定できるようになっています。

 DHCPを使うとパソコンやネットワークについて何も知らない人でもパソコンをネットワークに接続するだけですぐにネットワークや、インターネットが利用できるようになります。また、間違いも発生しませんし、IPアドレスの無駄遣いということもありません。

 下の例は、Windows7でスタート>コントロールパネル>ネットワークの状態とタスクの表示>ローカルエリア接続>プロパティと進んで、「インターネットプロトコルバージョン4(TCP/IPv4)」を選択して、更にプロパティを選択したときの表示です。

IPアドレス設定のウィンドウ
DHCPサーバを使っているネットワークでは、「IPアドレスの自動取得」と「DNSサーバのアドレスを自動取得」にチェックを入れる。DHCPサーバを使わない場合は、ユーザが自分で、IPアドレス、サブネットワークマスク、デフォルトゲートウェイ、DNSサーバを設定する


 DHCPサーバを起動させている場合は、「IPアドレス自動取得」と「DNSサーバ自動取得」にチェックを入れます。DHCPサーバのIPアドレスは、Powershellで確認できます。プロンプトに対して、"ipconfig /all"というコマンドを実行すると、イーサネットアダプターローカルエリア接続というブロックに表示されます。IPアドレスを控えておいて、DHCPサーバが不調かなという場合(うまくIPアドレスをもらえていない場合など)は、そのIPアドレスに対して、powershellからpingコマンドを実行してみてください(>ping <ターゲットのIPアドレス>)。DHCPサーバを使っていない場合は、ネットワークの管理者から聞いて、IPアドレス、サブネットマスク、デフォルトゲートウェイ、DNSサーバのアドレスを自分で設定しなくてはなりません。


3 DHCPはどうやって動作するのか

 DHCPはクライアントサーバシステムを採用していますので、DHCPクライアントからDHCPサーバに対して設定情報を要求します。DHCPクライアントは最初自分のIPアドレスもDHCPサーバのIPアドレスも知らないので、ブロードキャストを使ってネットワーク内にDHCP Discoveryメッセージを送信します。

クライアントからDiscoverメッセージをブロードキャスト



 DHCPサーバがDHCP Discoverメッセージを受信すると、クライアントに割り当て可能なIPアドレスをアドレスプール(管理者の設定)から選択し、DHCP Offerメッセージで通知してあげます。ネットワーク内にDHCPサーバが複数台稼動している場合は、何台かのサーバが同時に回答をしますが、クライアントは通常、最初に受信したOfferを選択します。DHCPサーバがOfferをブロードキャストで回答するか、ユニキャストで回答するかについては後で説明します。

サーバはIPアドレスの候補を提案

 DHCPクライアントはDHCPサーバに提示されたIPアドレスが現在使用されていないかARP等で確認し、問題がなければ、DHCP Requestメッセージで正式にIPアドレスを要求します。

クライアントは提案のアドレスでよければRequest

 DHCPクライアントがDHCP Ackメッセージを受信すると、その内容に従いIPアドレスを設定します。

サーバからクライアントにAckあるいはNack


 DHCP OfferとDHCP Ackメッセージをブロードキャストで回答するか、ユニキャストで回答するかについてはRFC2131には、「もし、ゲートウェイIPアドレスクライアントのIPアドレスが共にゼロ(「0.0.0.0」)で、ブロードキャストビットがセットされていたら、DHCP OfferとDHCP Ackメッセージは0xFF.FF.FF.FF.FF.FF宛てに送信し、もし、ブロードキャストビットがセットされていないで、ゲートウエイIPアドレス(giaddr)とクライアントIPアドレス(ciaddr)がゼロなら、DHCPサーバは、OfferとAckをクライアントのハードウェアアドレス(MACアドレス)とIPアドレス(yiaddr)にユニキャストで送信する」と規定しています。

 上記のDHCPプロトコルのシーケンスは、IPアドレスを取得する場合の一般的なフローですが、IPアドレスのリースの延長や、リリース、また上記シーケンスに異常が発生した場合などには、上記のメッセージとは違うメッセージも利用されます。次にDHCPメッセージの一覧表を示します。

DHCPメッセージタイプ
メッセージ名 メッセージの送信者 説明
1 Discover クライアント DHCPサーバを探すためのメッセージ
2 Offer サーバ クライアントへIP設定情報の候補を提案するメッセージ
3 Request クライアント サーバへのIP設定情報の取得要求メッセージ
4 Decline クライアント サーバへのIP設定情報の拒否メッセージ
5 Ack サーバ クライアントへのIP設定情報の提供メッセージ
6 Nack サーバ クライアントへのIP設定情報の提供拒否メッセージ
7 Release クライアント サーバへのIP設定情報のリリース(返却)要求メッセージ
8 Inform クライアント サーバへのIP以外の設定情報の要求メッセージ




 DHCPクライアントとDHCPサーバの通信はブロードキャストが使われますので、もしDHCPサーバとDHCPクライアントが異なるサブネットワークにあると通信できません。異なるサブネットワーク同士は、ルータで接続されますが、基本的にルータはブロードキャストフレームをブロックするように設定されているからです。こうなると、DHCP環境を構築するには、各サブネット毎にDHCPサーバを稼働させなくてはなりません。最近のネットワークはセキュリティ上の理由、あるいは通信効率などの理由で、サブネットを小さく設計する傾向にありますので、小さいサブネットのそれぞれでDHCPサーバを稼動させるのは、コスト的に大変です。なにか解決策が欲しい所です。そこで、提案されたのがDHCPリレーエージェント(DHCPヘルパー)という考え方です。リレーエージェントは、DHCPクライアントのブロードキャストパケットをユニキャストに変換して、DHCPサーバに届けることが出来ます。この場合は、サブネットを分割しているルータやL3スイッチにDHCPリレーエージェントの機能を持たせるのが一般的です。サブネットを越えてDHCPサーバにアクセスすることが出来るなら、コスト的にも助かりますし、1つのDHCPサーバで集中的に複数サブネットのIPアドレス管理することができれば管理面でのメリットも出てきます。

DHCPリレーエージェントはブロードキャストを受信して、それをユニキャストに変換して、隣のサブネットワークに送信


 DHCPサーバでは、IPアドレスの設定だけでなく、サブネットマスク、デフォルトゲートウェイ、DNSサーバなどの設定もできるという話をしたのですが、一向にその話が出ないのでどうしたのかなと思った人が多いのではないでしょうか?実はIPアドレスの設定以外はオプションで設定するのです。

 オプションというとそれほど重要ではないと思う人がほとんどではないかと思いますが、DHCPでは大切な情報はほとんどオプションフィールドに収納されています。どうしてでしょうか。それはパケットヘッダ(本体)の最初のフィールドのオペレーションコード(Opcode)を見るとわかると思います。このフィールドでは"1"が要求で、"2"が、応答を表します。たぶん多くの方は、DHCP Discoverが"1"で、Offerが"2"で、Requestが"3"でなどと思ったことでしょうが、そうではなく要求(Request)と応答(Replay)しかありません。これはBOOTP用のフォーマットをそのままDHCPに流用しているためです。したがって、クライアントからサーバに要求するタイプのDiscover、Request、Decline、Release、InformではOpコードフィールドが"1"にセットされ、サーバからクライアントへの応答である、Offer、Ack、Nakでは"2"となります。つまり、DHCPのメッセージタイプ番号を示すフィールドがヘッダの本体には確保されていないということになります。それでは、どうやってメッセージタイプを伝えるのかというとこれがオプションなのです。こうなると、オプションでもなんでもなく、DHCPにとっては必須のフィールドだろうと思わず突っ込みを入れたくなってしまいますが、やはりBOOTPとのフォーマットの共用を貫くとこうならざるを得ないということになります。DHCPのメッセージタイプはオプションコード53で指定します。オプションコード53のDHCP Message Typeでは、"1=DHCP Discover、2=DHCP Offer、3=DHCP Request、4=DHCP Decline、5=DHCP Ack、6=DHCP Nak、7=DHCP Release、8=DHCP Inform"と決められています。

 Windowsクライアントで、よく使われるオプションはサブネットマスク、デフォルトゲートウエイのIPアドレス、DNSサーバのIPアドレス、リース期間などです。
 
 DHCPサーバを動かす方法としてはWindows Server OS上で動かす方法、Linux等のUNIX系のOS上で動かす方法、ルータ上で動かす方法などがありますが、大規模ネットワークではアプライアンス製品を導入することもあります。

※アプライアンス製品:特定の機能や用途に特化した専用機器

 Windows Server OSでDHCPサーバを動かす場合は、Windows Server OSに付属のDHCP管理ツールがありますので、それを使うことができます。DHCP管理ツールではデフォルトで70種位のオプションが既に定義されています。ここでは、<コード番号> <オプション名>に対して値を設定するという方法がとられます。新しいオプションを定義することもできます。この場合はツールから、オプション名、データ型(配列を使うこともできます)、コード番号、説明などを入力します。

 LinuxでDHCPサーバを動かす場合の設定は、"option <オプション名> <expression>; "となります
 DHCPオプションの文は、キーワードOptionで開始し、単一のオプション名が続き、オプションデータが続きます。オプションは正式に定義されているものだけでも100種類以上あります。これらのうち、必要なオプションだけを指定します。オプションデータはip-address(IPアドレス、あるいはドメイン名でも可)、int32(符号付32ビット整数)、uint32(符号なし32ビット整数)(その他にint16、uint16、int8、uint8など;符号なし8ビット整数はオクテットと呼ばれることあり)、text(データタイプはNVT ASCII文字で指定;文字列はダブルクオートで括る)、domain-name(文字列はダブルコートで括ってはいけません)、flag(ブール値)、string(ダブルコートで括られたNVT ASCIIか、あるいはコロン区切りの16進数で指定されるオクテットの連続)です。

※NVT(Network Virtual Terminal)はRFC854(Telnet)で定義された仮想デバイス。キーボードとプリンターを装備し、ネットワークにおいて標準的なインターフェースを提供します。NVTで使われる文字列をNVT-ASCIIと呼ぶことがあります。NVTはTelnetを応用したSMTP、POP、FTPなどでも使われます。

※ブール値:trueまたはfalse(あるいは、onまたはoff)のいずれかです。


 CiscoのルータやL3スイッチはDHCPサーバとして動作することができます。Cisco IOSではデフォルトでDHCPサーバが有効になっていますが、無効になっている場合は次のコマンドで有効化します。
(config)# service dhcp

DHCPクライアントには、ルータやスイッチ等のネットワーク機器のIPアドレス、サーバ等のIPアドレスを配布しないように除外アドレスを設定します。アドレスを除外する場合は、除外するアドレス範囲の最初のアドレスと、最後のアドレスを指定します。次の設定は、192.168.0.250~192.168.0.254の5つのアドレスを除外する場合の例です。
(config)# ip dhcp excluded-address 192.168.0.250 192.168.0.254

CiscoルータをDHCPサーバとして稼動させるには、DHCPプール(PCなどに配布するIPアドレスを蓄える場所)の設定を行います。
(config)# ip dhcp pool example-u.eng

DHCPプールのコマンドを入力すると、次にDHCPコンフィグレーションモード(dhcp-config)が開始され、プールの各種設定が始まります。初めにネットワークの設定例を示します。サブネットの指定をすることができます。また、プレフィックス長でマスクの指定をすることもできます。
(dhcp-config)# network 192.168.1.0 255.255.255.0

次はデフォルトゲートウェイの設定です。
(dhcp-config)# default-router 192.168.1.254

次はDNSサーバの設定です。最大8つのIPアドレスを設定することができます。
(dhcp-config)# dns-server 172.16.1.10 172.16.1.11

次はドメイン名の指定です。
(dhcp-config)# domain-name example-u.ac.jp

次はリース期間の設定です。値はdays hours minutes | infiniteのうちのいずれかです。7日の場合は7となります。12時間なら、0 12となります。12時間30分なら、0 12 30です。次はリース期間を7日にする場合です。
(dhcp-config)# lease 7

Cisco CLIのコマンドはプロトコルで定義されているオプション名とは若干異なりますが、DHCPコンフィグレーションで「?」や省略表記などを使えば間違えることはないと思います。

 オプションのうちのいくつかはDHCPサーバもしくはDHCPクライアントによって自動的に生成されるもので、ユーザには設定できません。そのようなオプション値は受信側のDHCPプロトコルエージェント(サーバもしくはクライアント)の設定ファイルの中の条件式などで使用されます。




4 うっかりするとトラブル発生の元になることも

 DHCPサーバは設置が容易なためにしばしば混乱を引き起こします。最もよくあるトラブルは家庭のLANをインターネットに接続する際に利用するブロードバンドルータによって引き起こされます。ブロードバンドルータには通常DHCP(これをDHCPサーバBとします)機能がついていますが、それが有効になっているのに気付かずに、既に他のDHCPサーバ(既存のDHCPをDHCPサーバAとします)が有効になっているサブネットにつないでしまうと、同じIPアドレスが重複して割り当てられてしまう可能性があります。

 次にブロードバンドルータを示します。ブロードバンドルータは通常のローカルルータとは異なり、2つのポートを持つルータと、スイッチングハブを組み合わせた構造をしています。スイッチングハブを構成するポートはLANポートと書いてあり、ルータのポートはWANポートと書いてあるはずです。よくある間違いはLANポートに異なるサブネットを接続してしまうことです。LANポートと書いてあるポートは全部1つのスイッチングハブのポートですので、同じサブネットワークに所属するパソコンしか接続することが出来ないはずですが、少し大きめのLANではよくある間違いです。例えば、大学のキャンパスLANで、サブネットがいくつかある場合、あるサブネットを1つのLANポートに、外のサブネットを他のLANポートに接続してしまうと、全く通信ができません。これは、異なるサブネットワークアドレスを持つ端末が、同じスイッチングハブに接続されてしまったためです。しかし、何回かパソコンの起動を繰り返すうちに本来異なったサブネットに属していたパソコンに同じサブネットが割り当てられてしまうこともあります。こうなると、本来できなかったWindowsのファイル共有やプリンター共有ができてしまったりします。しかし、本来のDHCP(DHCPサーバA)も依然として動いていますので、DHCPサーバAからIPアドレスをもらってしまうものもありますので、ネットワークは大混乱に陥ります。

ブロードバンドルータはルータとスイッチングハブが一体化したもので純然たるルータとは働きが異なる

 また、DHCPサーバの管理が厳格でない場合は、許可されていないPCがネットワークに簡単に接続できるという問題点があります。企業内は出入りが厳密にチェックされますから、簡単に外部の人間がネットワークに接続することは難しいかもしれませんが、不特定多数の人が出入りできる大学のキャンパスLANでは、セキュリティ上のリスクを伴います。特定の端末だけを選んで接続を許可するようなシステムを導入する必要があるかもしれません。例としては、認証スイッチネットワークの導入などが考えられます。認証スイッチはMACアドレスなどを事前に登録しておき、事前に登録された端末以外はネットワークに接続させないシステムです。




5 DHCPパケットのフォーマット

5.1 DHCPパケットヘッダ

 DHCPメッセージはUDPのペイロードとして送信されます。クライアントからサーバへの要求(Discover、Request等)は送信元ポート68、宛先ポート67で、サーバからクライアントへの回答(Offer、Ack、Nack等)は送信元ポート67、宛先ポート68が使用されます。

 DHCPメッセージのフォーマットは次の通りです。

DHCPメッセージ
オペコード hwアドレスタイプ ハードアドレス長 ホップカウント
トランザクションID(4)
秒数(2) フラグ(2)
クライアントIPアドレス(4)
割り当てるIPアドレス(4)
サーバIPアドレス(4)
ゲートウェイIPアドレス(4)

クライアントMACアドレス(16)




サーバホスト名(64)






ブートファイル名(128)





オプション(可変長)


メッセージのオペレーションコード(op)はパケットが要求か応答のいずれであるかを識別するものです。"1"が要求(リクエスト)(discover、requestなど)、"2"が応答(リプライ)(offer、ack、nackなど)です。

 ハードウェアアドレスタイプ(htype)は、標準イーサネットが"1"となります。

 ハードウェアアドレス長(hlen)、ハードウェアのアドレスの長さです。標準イーサネット(6バイト)は"6"です。

 ホップカウント(hops)は、クライアントがゼロにセットし、要求がルートを経由するたびに値がインクリメントされます。

 トランザクションID(xid)は、クライアントによって無作為に選択されるランダムな値(32ビット符号なし整数)です。クライアント・サーバ間の要求と応答を対応付けるために、クライアントとサーバによって同じ値(xid)が使用されます。

 秒数(secs)はクライアントがアドレスの取得または更新のプロセスを開始してからの秒数です。

 フラグ(flags)の最上位ビット(もっとも左のビット)はブロードキャストビットとして定義され("1"の場合はブロードキャスト、"0"の場合はユニキャスト)、残りの15ビットは将来のために予約されています。

 クライアントのIPアドレス(ciaddr)は、クライアントがIPアドレスを既に持っている場合にセットされます(bound、renew、rebinding)。通常は0.0.0.0にセットされます。

 クライアントIPアドレスが、「0.0.0.0」の場合、DHCPサーバはofferするIPアドレスを「割り当てIPアドレス(yiaddr、your ip address)」フィールドにセットします。その後の、request、ack、nackでも同様に使用されます。discoverでは「0.0.0.0」がセットされます。

 クライアントがDHCPサーバのIPアドレスを知っている場合は、サーバIPアドレス(siaddr)フィールドにセットします。それ以外では、DHCPサーバからのoffer、ackで使用されます。

 ゲートウェイIPアドレス(giaddr)は、DHCP/BOOTPリレーエージェントによって設定されます。

 クライアントのMACアドレス(chaddr)は、クライアントの「MACアドレス+00を10バイト」です。

 サーバホスト名(sname)はオプションです。BOOTPとの互換性のために用意されています。DHCPサーバでは意味を持ちません。

 ブートファイル名(file)もBOOTPとの互換性のためです。DHCPサーバでは意味を持ちません。

 オプションフィールドはDHCPサーバが提供するオプションのパラメータです。DHCPサーバからDHCPクライアントに配布されるデフォルトゲートウエイやDNSサーバのIPアドレスはオプションで伝えられます。オプションには標準のものだけでなく、ベンダ固有のものもあります。また、新たに定義することもできます。IANAから新たなオプション番号をもらって定義をし、インターネットDraftとしてIANAに提出してください。インターネットDraftは承認を経て、新たなインターネットStandardとなります。新しいオプションがインターネット標準となれなかった場合は、番号はIANAに返さなくてはなりません。





5.2 DHCPオプションフィールド

 RFC1497で定義されたベンダ拡張機能が、完全性のためにRFC2132で再度定義されています。RFC2132で定義されているオプションは次の通りです。


5.2.1 RFC1497で定義されるベンダー拡張機能

 

コード オプション名 expression 説明
0 Pad 後に続くフィールドをワードの境界に揃える
1 Subnet Mask uint32 クライアントのサブネットマスク。Subnet MaskオプションとRouterオプションの両方がDHCP応答に指定されている場合は、Subnet Maskオプションを先にする
2 Time Offset int32 世界時(UT)からの、クライアントサブネットのオフセット(秒)。オフセットは、2の補数の32ビット整数で表現。東経は正のオフセット、西経は負のオフセット
3 Router ip-address クライアントのサブネット上にあるルータのIPアドレスのリスト(優先順)
4 Time Server ip-address クライアントが使用できるRFC868準拠のタイムサーバのリスト(優先順)
5 Name Server ip-address クライアントに使用できるIEN116ネームサーバのリスト(優先順)
6 Domain Name Server ip-address クライアントに使用できるDNSサーバのリスト(優先順)
7 Log Server ip-address クライアントに使用できるMIT-LCS UDPログサーバのリスト(優先順)
8 Cookie Server ip-address クライアントに使用できるRFC865準拠のクッキーサーバのリスト(優先順)
9 LPR Server ip-address クライアントで使用できるRFC1179準拠のラインプリンタサーバのリスト(優先順)
10 Impress Server ip-address クライアントに使用できるImagen Impressサーバのリスト(優先順)
11 Resource Location Server ip-address クライアントが使用できるRFC887準拠のリソースロケーションサーバのリスト(優先順)
12 Host Name string クライアントの名前。クライアントはローカルドメイン名で修飾しても、しなくてもよい。
13 Boot Size uint16 デフォルトブートファイル内になる512オクテットブロックの数
14 Merit Dump text クライアントがクラッシュしたときに、クライアントのコアイメージが置かれるファイルのパス名(NVT ASCIIキャラクタセット)
15 Domain Name text DNSを使用してホスト名を解決することができるときにクライアントが使用するドメイン名
16 Swap Server ip-address クライアントのスワップサーバのIPアドレス
17 Root Path string クライアントのルートディスクが含まれるパス名(NVT ASCIIキャラクタセット)
18 Extensions Path text ストリングを使用してファイルを指定し、TFTPにより取得。ファイルには、BOOTP応答内の64オクテットベンダ拡張フィールドと同じ方法で解釈できる情報が含まれる。
255 End ベンダーフィールドの有効情報の最後。後に続くオクテットをPadオプションで埋める


5.2.2 ホストごとのIP層パラメータ


コード オプション名 expression 説明
19 Ip Forwarding Enable/Disable flag クライアントがIP層をパケット転送するように設定するか指定:"0"=Disable、"1"=Enable
20 Non-Local Source Routing Enable/Disable flag クライアントが非ローカルのソースルートでデータグラム転送を許可するようにIP層を構成するかどうかの指定:"0"=Disable、"1"=Enable
21 Policy Filter uint32 非ローカルのソースルーティングのポリシーフィルタ。フィルタはIPアドレスとマスクで構成され、着信ソースルートをフィルタリングするための宛先およびマスクのペアを指定する。
22 MaximumDatagram Reassembly Size uint16 クライアントで再構成の準備をするデータグラムの最大サイズ:値=最小 576
23 Default Ip Time-to-Live uint8 クライアントが発信データグラムで費やすべきデフォルト時間:値=1~255
24 Path MTU Aging Timeout uint32 RFC1191で定義されているメカニズによって検出されたPath MTU値をエージングするときに使用するタイムアウト(秒)
25 Path MTU Plateau Table uint16 RFC1191に定義されているPath MTU Discoveryの実行時に使用するMTUサイズのテーブル。テーブルは最小から最大の順に、16ビット符号なし整数のリストとしてフォーマットされる:値=最小68

5.2.3 インターフェースごとのIP層パラメータ


コード オプション名 expression 説明
26 Interface MTU uint16 このインターフェースで使用する際の最大存続可能時間
27 All Subnets are Local flags クライアントの接続先IPネットワークのすべてのサブネットが、クライアントの直接接続先IPネットワークのサブネットと同じMTUを使用していることを、クライアントが想定できるかどうかを指定する:"0"=一部の直接接続サブネットはMTUを短くできる。"1"=全てのサブネットが同じMTUを共有
28 Broadcast Address ip-address クライアントのサブネットで使用されるブロードキャストアドレス
29 Perform Mask Discovery flag クライアントがICMPを使用してサブネットマスク発見を実行するかどうかを指定:"0"=Disable、"1"=Enable
30 Mask Supplier flag クライアントがICMPを使ってサブネットマスク要求に応答するかどうかを指定:"0"=応答しない、"1"=応答する
31 Perform Router Discovery flag クライアントがRFC1256で定義されるルータ探索(Router Discovery)機構を使ってルータ要請をするかどうかを指定:"0"=Disable、"1"=Enable
32 Router Solicitation Address ip address クライアントからのルータ送信要求の転送先アドレス
33 Static Route ip-address ip-address クライアントがルーティングキャッシュにインストールするスタティックルートのリスト。同一の宛先に対して複数のルートを指定する場合は優先度順に。ルートはIPアドレスの組み合わせのリストで、最初のアドレスは宛先アドレス、2つ目のアドレスは宛先用ルータ(nexthop)。

5.2.4 インターフェースごとのリンク層パラメータ


コード オプション名 expression 説明
34 Trailer Encapsulation frag ARPプロトコルを使用する場合に、クライアントがトレーラ(RFC893)の使用を交渉するかどうかを指定する:"0"=使用しない、"1"=使用する
35 ARP Cache Timeout uint32 ARPキャッシュエントリのタイムアウト(秒)
36 Ethernet Encapsulation flag インターフェースがイーサネットである場合、クライアントがイーサネットバージョン2(RFC894)またはIEEE802.3(RFC1042)カプセル化を使用するかどうかを指定する:"0"=RFC894のカプセル化を使用する、"1"=RFC1042カプセル化を使用する


5.2.5 TCPパラメータ

 

コード オプション名 expression 説明
37 TTL default TTL uint8 TCPセグメントの送信時にクライアントが使用するデフォルトのTTL値:最低1
38 TCP Keepalive Interval uint32 TCP接続でキープアライブメッセージを送信する前にクライアントTCPが待機する時間間隔(秒)
39 TCP Keepalive Garbage flag 以前の実装との互換性を保つためにクライアントが1オクテットの不要データと一緒にTCPキープアライブメッセージを送信するかどうかを指定する:"0"=送信しない、"1"=送信する


5.2.6 アプリケーションとサービスのパラメータ

コード オプション名 expression 説明
40 Network Information Service Domain text クライアントのNIS(Network Information Service)ドメインの名前
41 Network Information Servers ip-address クライアントが使用できるNISサーバのIPアドレスのリスト(優先順)
42 Network Time Protocol Servers ip-address クライアントが使用できるNTP(Network Time Protocol)サーバのIPアドレスのリスト(優先順)
43 Vendor Specific Information ベンダー固有の情報を交換するためにクライアントサーバによって使用される。この情報の定義はベンダ固有。ベンダーはdhcp-class-identifierオプション(ベンダクラスID、コード番号60)で示される。
ベンダがこの項目を2項目以上エンコードする可能性がある場合には、ベンダがカプセル化されたベンダ固有のオプションを使用して、オプションをエンコードしなくてはならない。カプセル化されたベンダ固有のオプションフィールドは、一連のコード/長さ/値フィールドとしてエンコードする。コード255がある場合は、ベンダ拡張フィールドの最後ではなく、カプセル化されたベンダ拡張機能の最後を示す。コード255がない場合は、格納しているベンダ固有情報フィールドの最後が、カプセル化固有拡張フィールドの最後と解釈される。
44 NetBIOS over TCP/IP Name Server ip-address RFC1001/1002 NBNSネームサーバのリスト(優先順)
45 NetBIOS over TCP/IP Datagram Distribution Server ip-address RFC1001/1002 NBDDサーバのリスト(優先順)
46 NetBIOS over TCP/IP Node Type uint8 NetBIOS over TCP/IPクライアント(RFC1001/1002)を許可する:値でクライアントタイプを識別;0x01=Bノード(ブロードキャスト-WINSなし)、0x02=Pノード(ポイントツーポイントノード、WINSのみ)、0x03=Mノード(混合ノード、ブロードキャスト後にWINS)、0x04=Hノード(ハイブリッド、WINS後にブロードキャスト)
47 NetBIOS over TCP/IP Scope string クライアント用のNetBIOS over TCP/IP scope パラメータ(RFC1001/1002)
48 X Window System Font Server ip-address クライアントが利用できるX Window System Fontサーバのリスト(優先順)
49 X Window System Display Manager ip-address クライアントが利用できる X Window System Display Managerを実行しているシステムのIPアドレスのリスト(優先順)
64 Network Information Server+ Domain text クライアントNIS+ドメインの名前
65 Network Information Server+ Servers ip-address クライアントが利用できるNIS+サーバのリスト(優先順)
68 Mobile IP Home Agent ip-address クライアントが使用できるモバイルIPホームエージェントを示すIPアドレスのリスト(優先順)
69 Simple Mail Transport Protocol Server ip-address クライアントが使用できるSMTP(Simple Mail Transport Protoco)サーバのリスト(優先順)
70 Post Office Protocol Server ip-address クライアントが使用できるPOP3サーバのリスト(優先順)
71 Network News Transport Server ip-address クライアントが使用できるNNTP(Network News Transfer Protocol)サーバのリスト(優先順)
72 Default World Wide Web (WWW) Server ip-address クライアントが使用できるワールドワイドウェブサーバのリスト(優先順)
73 Default Finger Server ip-address クライアントが利用できるFingerサーバのリスト(優先順)
74 Default Internet Relay Chat Server ip-address クライアントが利用できるIRC(Internet Relay Chat)サーバのリスト(優先順)
75 Streettalk Server ip-address クライアントが利用できるStreetTalkサーバのリスト(優先順)
76 Street Talk Directory Assistance Server ip-address クライアントが利用できるSTDAサーバのリスト(優先順)

5.2.7 DHCPv4拡張機能

コード オプション名 expression 説明
50 Requested IP Address ip-address DHCP Discoverで使用され、クライアントからサーバに対して、特定のIPアドレスを割り当てることを要求する。本オプションはユーザは使用できない。
51 IP Address Lease Time uint32 クライアントからの要求(DHCP Discover、あるいはDHCP Request)で使用される。クライアントはIPアドレスのリース時間を要求できる。DHCP Offerでは、DHCPサーバがこのオプションを使用して、提供するリース時間を指定する:値=秒単位(32ビット符号なし整数)
52 Option Overload uint8 DHCPヘッダのsnameまたはfileフィールドを使ってDHCPオプションを保持しているために、これらのフィールドが過負荷になっていることを示す。
53 DHCP Message Type uint8 DHCPメッセージのタイプを知らせるために使用:1=DHCPDISCOVER、2=DHCPOFFER、3=DHCPREQUEST、4=DHCPDECLINE、5=DHCPACK、6=DHCPNAK、7=DHCPRELEASE、8=DHCPINFORM
このオプションはユーザが指定することはできません。
54 Server Identifier ip-address DHCP Offer、DHCP Requestメッセージで使用され、オプションでDHCP Ack、DHCP NAKメッセージにも含めることができる。DHCPサーバはこのIDをDHCP Offerに含めることで、クライアントがOfferとReleaseの区別ができるようにしている。クライアントはDHCPメッセージをサーバにユニキャストするときの宛先IPアドレスとしてこれを使う。また、DHCPクライアントは、RequestにこのIDを使うことで、どのOfferを受け取るかを示すことができる。
55 Parameter Request List uint16 指定された設定パラメータ値を要求するため、DHCPクライアントによって使用される。要求パラメータのリストはn個のオクテットとして指定される。各オクテットはDHCPオプションコードで、クライアントは優先順にこれを示す。DHCPサーバは要求された順にオプションを挿入しようと試みる(場合によっては返せないこともある)。
56 Message text DHCPサーバがクライアントにNAKを返す場合に使用する。DHCPクライアントはDHCP Declineメッセージでこのオプションを使用して、サーバ提示したパラメータを拒否する際の理由を示すことができる。メッセージはnオクテットのNVT ASCIIテキストからなる。
57 Maximum DHCP Message Size uint16 サーバが受け入れるDHCPメッセージの最大長。このオプションはDiscover、Requestメッセージで使用するが、Declineメッセージでは使用しない。
58 Renewal Time uint32 アドレス割り当てからクライアントがRenewing状態に移行するまでの時間間隔
59 Rebinding Time uint32 アドレス割り当てからクライアントがRebinding状態に移行するまでの時間
60 Vendor class identifier string DHCPクライアントが、オプションでベンダタイプおよびDHCPクライアントの設定を識別するときに使用する。ベンダが特定のベンダクラスを定義するために選択して、クライアントに関する特定の設定やその他の識別情報を伝えることができる。
61 client identifier string DHCPクライアントが固有識別子を指定するときにしよう。DHCPサーバはこの値を使用して、アドレスバインディングのデータベースをインデックス付けする。
66 TFTP Server Name text DHCPヘッダのsnameフィールドがDHCPオプションに使用されている場合に、TFTPサーバを識別
67 Bootfile Name text DHCPヘッダでfileフィールドがDHCPオプションに使用されている場合には、bootfileを識別


※以上はRFC2132で定義されているものですが、62、63、77~254についてもほどんどの番号がRFC2132以降のRFCによって定義済みです。





更新履歴

2016/02/04 作成



























 ページの先頭