Linuxでは、どのメトリックにメトリックのないルートがありますか?


11

Linuxの場合、次の2つのルートがあります。

default via 192.168.1.1 dev enp58s0f1
default via 192.168.16.1 dev wlp59s0  proto static  metric 600

最初のものが使用されることを期待しますが、そうではありません。代わりに2番目のものが使用されます。

これをこれに変更すると:

default via 192.168.1.1 dev enp58s0f1  proto static  metric 100 
default via 192.168.16.1 dev wlp59s0  proto static  metric 600

その後、期待どおりに動作します。「メトリックなし」は、メトリック0ではなく、どの数値よりも悪い(高い)メトリックのようです。

これは何が起こっているのですか?Linux固有ですか、それともネットワーキング標準ですか?

前もって感謝します。

回答:


6

初めての観察でよろしいですか?何をしないip route showか、route -nそして表示さ?proto static最初のケースを追加すると、結果は変わりますか?

0は、それがLinuxのデフォルト値であると明示的に述べている少なくとも2つのリソースを見つけました。

  • http://0pointer.de/lennart/projects/ifmetric/Linuxカーネルのルートのデフォルトのメトリックは、最も高い優先順位を意味し、0です。
  • http://www.man7.org/linux/man-pages/man8/route.8.htmlこのオプションが指定されていない場合、inet6(IPv6)アドレスファミリのメトリックはデフォルトで '1'にな​​り、inet(IPv4)の場合デフォルトは「0」です。(使用するとデフォルトが異なる可能性があることを示唆しますがiproute2、これらのソースの分析はそれが何であるかを示していません)

Linuxカーネルのハッカーは、それを整理するために確かに必要になるでしょう。

また、選択されたデフォルトは明らかにOS固有です。この記事(https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes)の例は、Windowsがデフォルトのメトリックを選択することを示していますリンクの帯域幅に基づいています。


私のコンピューターではこの動作を二度と見たことがないので、あなたの答えを正しいものとしてマークします。私は、Ubuntuが搭載されたデスクトップコンピューターで発生する奇妙なことに、少なくとも質問の時点で持っていたバージョンのせいで、それを非難しています。Ubuntu LTSを実行している他のいくつかのボックスでそれが発生するのを見たことはありません。それで、X-File(最近の参照は古すぎるですか?)ご回答有難うございます!
rsuarez

6

これらのルートは異なるサブネット上にあるため、ここでは単なるメトリックよりも複雑な部分があります。発信トラフィックは、例えば、192.168.1.1サブネット上にあり、場合、あなたのルーティングテーブルに一致するデフォルト以外のルートがある場合、そのルートは、経由一致する最長プレフィックス一致メトリックがこれまで考えられている前に。

デフォルト以外のルートが一致しないと仮定すると、メトリックがないことは、カーネルによってメトリックが0であると解釈されるため、最も優先度の高いルートになります。一部のルーティングデーモンが後でそのデフォルトメトリックを1024のような別の値に変換するため、これは単純化したビューですが、これはあなたとあなたの名前のないディストリビューションに起こっていることだと思います。

ip routeメトリックがまったく表示されない場合はroute -n、net-toolsパッケージまたはからの古いコマンドを使用して、それが実際に0であることを確認できますcat /proc/net/route。ただし、この出力は、メトリック値が0の場合、ルーティングデーモンが内部で使用するものと必ずしも一致しません。

さらに、ルートの作成方法も重要です。ip routenetlink APIをroute使用し、ioctl を使用します。2つのアプローチ間でデフォルトメトリックが作成される方法のコードは、異なるメトリック値になります。たとえば、IPv6デフォルトip routeルートビアを作成するとRHEL 7でメトリック値が1024になり、同じルートビアを作成するとrouteメトリックが1になります。

RedHatから:

  • ルートメトリックとして何もrouteコマンドに渡されない場合、1の値がコマンド自体によって使用されます。
  • ルートメトリックとして何もipコマンドに渡されない場合、属性はまったく作成されず、カーネルはそれを0として認識します。これは後でデフォルトで1024に変換されます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.