web-dev-qa-db-ja.com

ネットプランルート構成がインターフェイスの一部である理由

netplan examples のこの例

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
     addresses:
       - 9.0.0.9/24
       - 10.0.0.10/24
       - 11.0.0.11/24
     #gateway4:    # unset, since we configure routes below
     routes:
       - to: 0.0.0.0/0
         via: 9.0.0.1
         metric: 100
       - to: 0.0.0.0/0
         via: 10.0.0.1
         metric: 100
       - to: 0.0.0.0/0
         via: 11.0.0.1
         metric: 100

ルートがインターフェース構成の一部であるのはなぜですか?
ルーティングはグローバルではありませんか?
これらは、ルートとインターフェースの2つの異なるものです。

1
hudac

ルートには、Linuxルーティングテーブルに関連するインターフェイスがあります。これは、システムのdev列のip route showの出力で確認できます。この情報により、カーネルは、各パケットのルート依存関係を計算する必要なく、トラフィックを送信する必要のあるインターフェイスを知ることができます。また、特定のインターフェイスが「ダウン」状態の場合、カーネルはルーティングで正しいことを実行できます。

ネットプランの観点からは、デバイスが同時に起動しないため、ルートとデバイス間の関連付けが重要であり、対応するゲートウェイへのルートが利用可能な場合にのみ、システムはカーネルへのルートの追加を試みる必要があります。

1
slangasek

ルートがインターフェースに固有であるのは珍しいことではありませんが、それらは通常グローバルです。

たとえば、VPNインターフェイスがある場合、VPNのもう一方の端にあるすべてのサブネットをそのリンク経由でルーティングする必要があるでしょう。これらはプライベート/予約済みサブネットである可能性があります。つまり、VPNがアクティブな場合にのみ使用できるため、ルートテーブルに常に存在させることは意味がありませんが、おそらくまだ機能します。

提供した例では、おそらく冗長性のために、複数のデフォルトルートがあります。

おそらく、ルーティングで理解する最も重要なルールは、「最も具体的なルートが最初」のルールです。つまり、_10.0.0.1_にアクセスしようとすると、_10.0.0.0/25_のルートを通過してから、 _10.0.0.0/24_のルート。これは明らかに_0.0.0.0/0_の前に移動します。

2
Balls