web-dev-qa-db-ja.com

/etc/dhcp/dhclient.confの「rfc3442-classless-static-routes」とは

ラップトップでDHCPをデバッグしようとしています(dhcpingdhcdumpを使用して、DHCPサーバーが送り返すものを確認しています)。以下は私の/etc/dhcp/dhclient.confです。

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send Host-name = gethostname();

request subnet-mask, broadcast-address, time-offset, routers,
domain-name-servers, interface-mtu,
rfc3442-classless-static-routes;

rfc3442-classless-static-routesを除いて、これらすべてのオプションの意味を理解しています。また、DHCP応答にrfc3442-classless-static-routesに関連するものは何もありません。

rfc3442-classless-static-routesの意味は何ですか?どのような状況でそれを利用しますか?

documentation はまったく意味がありません)

10
Thomas Keller

元のDHCP仕様(RFC 2131 および 2132 )は、DHCPサービスの管理者が必要に応じてクライアントに静的ルートを発行できるようにするオプション(33)を定義しています。

残念ながら、この元の設計は、ほとんど使用されない クラスフルネットワークアドレス を想定しているため、最近欠陥があります。

rfc3442-classless-static-routesオプションを使用すると、代わりに クラスレスネットワークアドレス (またはCIDR)を使用できます。

CIDRではサブネットマスクを明示的に指定する必要がありますが、元のDHCPオプション33にはこのためのスペースがありません。したがって、このオプション(RFC 3442で定義)は、CIDR表記を使用して静的ルートを定義する新しい置換DHCPオプション(オプション121)を有効にするだけです。

基本的に、DHCPおよびを使用してデバイスに静的ルートを発行する必要がある場合、これらの静的ルートはCIDRを使用するため、このオプションを有効にする必要があります。

ネットワークを複数の小さなネットワークに分割し、利用可能な多くの動的ルーティングプロトコルのいずれかを使用せずにトラフィックが相互にどのように流れるかを各ルーターに通知する必要がある場合は、静的ルートを使用できます。基本的に、各ルーターをの効果を持つステートメントで設定し、ネットワークa.b.c.dにアクセスし、f.g.h.iを介してトラフィックを送信します

ルーターで設定したルートがクラスフルである場合、このオプションを有効にする必要はありません。ただし、ルートがCIDRの場合は、このオプションを有効にする必要があります。幸い、多くのホーム/カフェネットワークは、192.168.0.0(または255.255.255.0)のサブネットを持つ/24ネットワークを使用しています。これは、真のClass-Cネットワークであるため、このオプションを回避できます。

一方、一部のホーム/カフェネットワークは10.0.0.0ネットワーク上で実行されます。これは、デフォルトではクラスAネットワークです。たとえば、これを多くの10.0.x.0サブネットに分割する場合、これらはすべてCIDRネットワークになるため、このオプションを有効にする必要があります。

上記は、このルーティング情報をDHCP経由でホストにも発行する必要がある場合にのみ当てはまります。これらの静的ルーティング情報をホストに発行する必要があるかどうかは、ネットワークの設計によって定義されます。静的ルートは通常ルーターで定義されているので、基本的なホーム/カフェネットワークには必要ないという推測を危険にさらします。

上記の構成では、8つの符号なし整数の配列で構成されるオプション121として、新しいオプション(dhclientがすでに理解している多くの事前定義オプションがあります)を定義しています。次に、DHCPサーバーで設定されている場合、このオプションを要求するようにクライアントを構成します。

DHCPサーバーがこのオプションの値を返す場合、dhclient出口フックスクリプト(/etc/dhclient/dhclient-exit-hooks.d/rfc3442-classless-routes)が値を読み取り、それに応じてルーティングテーブルを構成します。

19
garethTheRed