web-dev-qa-db-ja.com

「スコープ」はIPルートで何をしますか?Linuxで静的ルートを設定する必要があるのはなぜですか?

デフォルトのdhcpルートルールを静的ルールに置き換えたい場合は、ルールを追加する必要がありますip route add scope link dev eth0。または、「Nexthopに無効なゲートウェイがあります」というエラーが表示されます。

ここに私の質問があります:
Q1:IPルートでの「スコープリンク」とはどういう意味ですか?
Q2:なぜdhcpルールから静的ルールに変更する必要があるのですか?

1
user762750

これらのルートは、Linuxカーネルに現在のサブネットを通知する方法です。

IPアドレスを追加するときに、この情報は非表示の「現在のサブネット」フィールドに保存されません。代わりに、ゲートウェイが指定されていない「スコープリンク」ルート(「デバイスルート」または「インターフェイスルート」とも呼ばれます)に常に変換され、カーネルがアドレスに直接到達できるかどうかを判断する必要がある場合は常に、ルーティングテーブルチェックを実行します。 。

通常、これらのルートは、IPアドレスを構成するとすぐに自動的に追加されます。たとえば、ip addr add 192.168.1.5/24を実行すると、IPアドレス192.168.1.5が割り当てられますandは、192.168.1.0/24のサブネットルートを作成します。したがって、通常の使用法ではこれらのルートを追加する必要はありません。

しかし、やみくもに「すべてのルートを削除」すると、これらの自動的に作成されたルートも削除され、カーネルの「サブネット内のこのアドレスですか」チェックは機能しなくなります。そのため、ルートを手動で再追加する必要があります。

(ルートゲートウェイ(ネクストホップ)必須直接同じL2接続で到達可能であるため、カーネルはip route add中にこのチェックを実行する必要があります-別のゲートウェイの背後にあることはできませんつまり、ゲートウェイはサブネット内にある必要があります。

ルートスコープは、この制限を表現するための一般的なメカニズムです。新しいルートのネクストホップは、スコープの低い既存のルートを介して到達可能である必要があります。つまり、リモートホスト(グローバルスコープ)に到達する前に、ローカルホスト(リンクスコープ)を経由する必要があります。)

4
user1686