同じメトリックを持つ2つのデフォルトパス:Linuxカーネルはどのパスを使用しますか?

同じメトリックを持つ2つのデフォルトパス:Linuxカーネルはどのパスを使用しますか?

同様の質問ですが、答えはありません。

Linuxでは、2つのパスのメトリックが同じ場合、どのパスが使用されますか?私はこれを見つけました録音されたWindowsの場合(「同じ速度の複数のインターフェイスが同じ最小インターフェイスメトリックを持っている場合、バインディングの順序で最初のネットワークアダプタのデフォルトゲートウェイが使用されます。最初のネットワークアダプタが利用できない場合」)。Linuxでは見つかりません。はいこの問題をどのように処理するのですか?

私の考えに答えは次のとおりです。パスワードしかし、それは明らかではありません。

答え1

カーネルは同じように実行可能な複数のパスを許可しません。EEXISTエラーが発生して2番目のパスを拒否します。

% ip route add 192.0.2.0/24 dev eth0 metric 10
% echo $?
0
% ip route add 192.0.2.0/24 dev eth1 metric 10
RTNETLINK answers: File exists
% echo $?
2

マルチパスルーティング、つまり複数のネクストホップを持つ単一パスを使用できます。ここでは、カーネルは、次に基づいて利用可能なネクストホップ間でトラフィックを分散(ロード共有/ロードバランシング)します。fib_multipath_hash_policy:

% ip route add 192.0.2.0/24 metric 10 nexthop dev eth0 nexthop dev eth1
% ip route show to exact 192.0.2.0/24
192.0.2.0/24 metric 10
        nexthop dev eth0 weight 1
        nexthop dev eth1 weight 1

答え2

複数のデフォルトパスを使用することは避けるべきです。静的IPアドレス指定を使用すると、これは簡単です。 「ゲートウェイ」フィールドには何も入力しないでください。 DHCP割り当てアドレスを使用している場合は、1つのプライマリパスのみを宣伝するようにDHCPサーバーを再構成するか、デフォルトパスの1つを無視するようにLinuxコンピュータを設定できます。私は通常、次の単純なNetworkManagerコマンドを使用して後者を実行します。

$ nmcli connection modify "eth1" ipv4.ignore-auto-routes yes

関連情報