
私のラップトップでDHCPをデバッグしようとしています(DHCPサーバーが送信したものを使用して確認していますdhcping
)。dhcdump
次は私のものです/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
、...また、rfc3442-classless-static-routes
DHCP応答にはこれについては何も表示されません。
どういう意味ですかrfc3442-classless-static-routes
?どのような状況で使用しますか?
(これ文書無意味)
答え1
オリジナルDHCP仕様(RFC2131そして2132)は、DHCPサービスマネージャが必要に応じてクライアントに固定パスを公開できるようにするオプション(33)を定義します。
残念ながら、元のデザインは今仮定しているので、欠陥があります。クラスプールネットワークアドレス、ほとんど使用しません。
このrfc3442-classless-static-routes
オプションを使用すると、次のことができます。クラスレスネットワークアドレス(またはCIDR)。
CIDRではサブネットマスクを明示的に指定する必要がありますが、raw DHCPオプション33にはそのためのスペースはありません。したがって、このオプション(RFC 3442で定義)は、CIDR表記を使用して静的パスを定義する最新の代替DHCPオプション(オプション121)のみを有効にします。
デフォルトでは、DHCPを使用してデバイスに固定ルートを宣伝する必要がある場合そしてこれらの静的パスはCIDRを使用するため、このオプションを有効にする必要があります。
ネットワークを複数の小さなネットワークに分割し、利用可能な多くの動的ルーティングプロトコルの1つを使用せずにトラフィックがあるネットワークから別のネットワークに移動する方法を各ルーターに通知する必要がある場合は、静的ルーティングを使用できます。デフォルトでは、単一の文を使用して各ルータを設定すると、次のような効果があります。「ネットワーク abcd にアクセスするには、fghi 経由でトラフィックを送信してください。」。
ルーターに設定したルーティングがクラスタイプの場合、このオプションを有効にする必要はありません。ただし、パスがCIDRの場合は、このオプションを有効にする必要があります。幸いなことに、多くのホーム/カフェネットワークは真のクラスCネットワークであるサブネット192.168.0.0
(255.255.255.0
またはサブネット)を使用しているため、このオプションを回避できます。/24
一方、一部のホーム/カフェネットワークは10.0.0.0
このネットワークで実行されます。デフォルトでは、これはクラスAネットワークです。たとえば、複数のサブネットに分割したい場合、10.0.x.0
そのサブネットはすべてCIDRネットワークになります。つまり、このオプションを有効にする必要があります。
このルーティング情報を次に公開する必要がある場合にのみあなたのマスターDHCP経由。この静的ルーティング情報をホストに知らせる必要があるかどうかは、ネットワーク設計によって決まります。スタティックルートは通常ルータで定義されているため、基本的なホーム/カフェネットワークにはこのルートが必要ないと推測できます。
上記の構成は、単に新しいオプション(すでに理解されている事前定義されたオプションがたくさんありますdhclient
)をオプション121として定義します。このオプションは、8ビット符号なし整数配列で構成されています。次に、DHCPサーバーにオプションが設定されている場合は、そのオプションを要求するようにクライアントを構成します。
DHCPサーバーがこのオプションの値を返すと、dhclient
終了フックスクリプト(/etc/dhclient/dhclient-exit-hooks.d/rfc3442-classless-routes
)は値を読み取り、それに応じてルーティングテーブルを設定します。
答え2
次のように使用dhclient.conf
できます。
supersede rfc3442-classless-static-routes 25,1,2,3,0,192,168,240,1;
192.168.240.1 経由でパス 1.2.3.0/25 を追加するために使用されます。
rfc3442-classless-static-routes
上書きするrouters
ので、デフォルトパスがある場合は、ネットマスクとしてゼロから始まるデフォルトパスを追加する必要があります。
フックスクリプトでは、次のように使用できます。
if [ "$reason" = 'BOUND' ]; then
new_routers_rfc=$( echo "$new_routers" | tr '.' ' ' )
# new_rfc3442_classless_static_routes="16 192 168 192 168 240 1 8 10 192 168 240 1 0 192 168 241 120"
new_rfc3442_classless_static_routes="16 192 168 $new_routers_rfc 8 10 $new_routers_rfc 0 192 168 241 120"
fi
ルートを追加する
default via 192.168.241.120
10.0.0.0/8 via 192.168.240.1
192.168.0.0/16 via 192.168.240.1
このスクリプトはデフォルトパスを置き換え、dhcpのデフォルトパスを使用してローカルネットワークにアクセスします。