GNU/Linux >> Linux の 問題 >  >> Linux

Linux では、メトリックのないルートを持つメトリックはどれですか?

あなたの最初の観察について確信がありますか? ip route show とは または route -n 次に表示しますか? proto static を追加すると結果が変わりますか 最初のケースでは?

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

  • 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 固有です。 ) たとえば、Windows がリンクの帯域幅に基づいて既定のメトリックを選択することを示しています。


これらのルートは異なるサブネット上にあるため、メトリックだけでなく、さらに多くのことが関係しています。たとえば、発信トラフィックが 192.168.1.1 サブネット上にある場合、および ルーティング テーブルに一致するデフォルト以外のルートがある場合、メトリックが考慮される前に、そのルートは最長のプレフィックス マッチを介して一致します。

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

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

さらに、ルートの作成方法も重要です。 ip route route では netlink API を使用します。 ioctl を使用します。 2 つのアプローチ間でデフォルト メトリックを作成する方法のコードにより、異なるメトリック値が得られます。例:ip route 経由で IPv6 デフォルト ルートを作成する route 経由で同じルートを作成しながら、RHEL 7 ではメトリック値が 1024 になります。 指標は 1 になります。

RedHat から:

  • ルート メトリックとしてルート コマンドに何も渡されない場合、値 1 がコマンド自体によって使用されます。
  • ip コマンドにルート メトリックとして何も渡されない場合、属性はまったく作成されず、カーネルはそれを 0 として認識します。これは後でデフォルトとして 1024 に変換されます。

Linux
  1. rdiff-backupの新機能

  2. Linuxユーザーとは何ですか?

  3. LinuxのUmaskとは

  1. Linux上のFlatpak:それは何であり、それを使ってアプリをインストールする方法

  2. LinuxでのJQコマンドと例

  3. Linux – SuidはLinuxのディレクトリに影響を与えませんか?

  1. LVMを使用してLinuxをインストールする

  2. Linuxでduをdustに置き換えます

  3. Linux はマウント ポイント内の既存のファイルに対して何をしますか?