これは私のip route
コマンドからの抜粋です。
192.168.1.0/24 dev enp1s0 proto kernel scope link src 192.168.1.2 metric 100
192.168.1.0/24 dev wlp2s0 proto kernel scope link src 192.168.1.14 metric 600
最初のインターフェースenp1s0
(イーサネット)のメトリック値は100(優先度が高い/ホップ数が少ない)で、2番目のインターフェースwlp2s0
(WLAN)の値は600(優先度が低い)です。 Linuxカーネル4.7.2を使用しています。
これらの値はLinuxでどのように設定されていますか?それはいつ正確に起こりますか?
IPv4ルーティングテーブルはカーネルによって作成されません。カーネルは、ルーティングテーブルを格納して操作するだけです。
メトリックは、デフォルトルートをインストールしたユーザースペースプログラムから取得されます。 DHCPを使用しているコンピューターの場合、これはDHCPデーモンからのものになります。静的なアドレス指定とルーティングを備えたコンピューターの場合、それはディストリビューションのインターフェースアドレス指定メカニズム(RedHatの/ etc/sysconfig/network、Debianのifupdownなど)からのものになります。
NetworkManagerのようなユーザースペースアプリケーションでは、有線デバイスを使用するデフォルトルートのメトリックを、ワイヤレスデバイスを使用するデフォルトルートのメトリックよりも良く(低く)設定するのが一般的です。これは、実行可能であれば、有線リンクの使用を好む一般的に予想される動作と一致します。これは、ip route show
コマンドに表示されている戦略です。