IPアドレス設定の自動化ーDHCP
DHCP(Dynamic Host Configuration Protocol)はIPアドレスを自動的に割り当てる仕組みです。最近は多くのネットワークでDHCPを動かしています。なぜでしょうか。それはDHCPを動かすことで、ネットワークの管理が格段に改善されるためです。
貴方が今、大学生、あるいは社会人で企業に勤務しているという場合は、身近にLANがあるはずです。このような場合は、DHCPシステムが動いている可能性が高いと思います。自宅で、インターネットをしているという場合は、ブロードバンドルータという機器を使っているかも知れませんが、この場合にもDHCPが動いていると思います。もちろん、LANがあるけれども、DHCPを利用していないという場合もあるでしょう。
初めにDHCPという仕組みがない場合はどうなるか考えてみましょう。コンピュータはIPアドレスが割り当てられていないと通信ができないということは既に知っていると思っていいですね。知らない方は、テキストの読む順番が違っていると思いますので、基本の勉強をしてください。IPアドレスはインターネット上でのコンピュータの位置を識別するための識別子となるものですので、これがないと通信が成り立ちません。ではIPアドレスは他と区別できれば何でもいいのでしょうか。そういうわけにはいきません。例えば、群馬県の前橋市に住んでいる人が、自分は東京都の港区の住所にしたいので、東京都港区麻布台なんていう住所を勝手に名乗っても困ります。市役所や郵便局などは困ってしまいます。同じことがネットワークにも言えます。インターネット上で、住所の上位部分、つまり町名表示くらいまでに該当するのがサブネットワークアドレスです。同じ町内に住んでいる人の住所は町名部分までは全員共通していなくてはなりません。そうでないと郵便配達の人は郵便物を効率的に届けることができません。インターネットの通信は、郵便システムと非常によく似ていますので、インターネットにもこのことが当てはまります。つまり、同じサブネットワークにあるコンピュータは、同じサブネットワークアドレスを持っていなくてはならないのです。
大きな企業のネットワーク(社内LAN)や大学のネットワーク(キャンパスLAN)では、中にいくつものサブネットワークがあるのが普通です。ある企業のある部署に新入社員が入って来たとします。当然新入社員用のパソコンが用意されると思います。このパソコンは多分新品ですので、設定はまだ済んでいません。この設定をするのが新入社員の最初の仕事になるのではないでしょうか。この場合は、新入社員は社内ネットワークの管理部門から、配属された部署のサブネットワークと、デフォルトゲートウェイ、DNSサーバのアドレスを指定され、それを自分で設定するように指示されます。たぶん、IPアドレスのホスト部分は部署内の係りの人から指示されると思います。しかし、初心者にはこれがなかなか面倒です。アドレスを間違って指定してしまうことがあります。サブネットマスクなどというのは、門外漢には決して分かりやすい概念ではありませんので、よく設定間違いが発生します。もちろん、ネットワーク管理者が怠慢で、管理表に間違いがあったなどという場合もあります。サブネットワーク部分が違うと、他のパソコンとつながりませんし、インターネットもできません。サブネットが違うパソコン同士は同じ物理ネットワークを共有することはできないので、他のパソコンとつながらないのです。インターネットにつながらないのは、外への出口役(デフォルトゲートウエイ)を努めるルータのIPアドレスと違うサブネットになってしまったため、ルータと通信ができなくなってしまうからです。ホスト部分のアドレスを間違えると、他のコンピュータとアドレスが重複してしまうこともあります。重複してしまうと、早く立ち上げた方の勝ちになります。遅く出社した人は、昨日まで使えていたのにどうして今日はだめなのかと悩むことになります。全然、設定変更していないのに何故なんだろうと悩みます。それから、古くなって廃棄処分されたパソコンに割り当てられていたIPアドレスがそのまま使われずに放置されることもあります。会社内の部署異動ということもあります。人事課にいた人が営業に異動になり、サブネットワークアドレスが変わったという場合にもIPアドレスの変更の必要性があります。本当に困ったら社内に得意な人(あるいは専門の部署)がいますので、その人に頼むしかないのですが、なまじっかパソコンが得意だとトラブル対応の依頼がひっきりなしに来て本来の仕事ができないなどの問題も出てきます。
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サーバのアドレスを自分で設定しなくてはなりません。
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プロトコルエージェント(サーバもしくはクライアント)の設定ファイルの中の条件式などで使用されます。
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.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 作成
|