Linuxは無効なデフォルトゲートウェイを使用します。

Linuxは無効なデフォルトゲートウェイを使用します。

2つの異なるネットワークインターフェイス(イーサネットとWiFi)を介して接続された2つのインターネット接続があります。設定されたIPアドレスは、それぞれ192.168.1.10と192.168.2.5です。ip route get 8.8.8.8システムを使用するときは、メトリックが最も低いデフォルトゲートウェイ(イーサネットパス)が使用されます。ただし、これを行うと、ip route get from 192.168.2.5 8.8.8.8システムはまだWi-Fiゲートウェイの代わりにイーサネットゲートウェイを使用しようとします。

8.8.8.8 from 192.168.2.5 via 192.168.1.1 dev eno1 uid 1000

なぜこれが起こるのですか?

私のルーティングテーブル:

default via 192.168.1.1 dev eno1 proto dhcp src 192.168.1.10 metric 100
default via 192.168.2.1 dev wlan0 proto dhcp src 192.168.2.5 metric 600
<subnet routes>

ベストアンサー1

私の考えでは、あなたが望むのは、「ソースベースのルーティング」を設定することです。通常、ルーティングは宛先ベースです。

ipこれを行うには、次のものを作成して高度な機能を利用する必要があります。第二ルーティングテーブルを作成し、テーブルを使用するタイミングをシステムに通知します。

/etc/iproute2/rt_tablesしたがって、まず次の内容で最後に行を追加します。

100 wifiroute

これで、次のコマンドでこのテーブルを使用できます。

ip rule add from 192.168.2.5 table wifiroute

テーブルに最後に追加されたデフォルトパス

ip route add default via 192.168.2.1 dev wlan0 table wifiroute

もちろん、これら2つのipコマンドは再起動時に失われるため、このコマンドが起動順序の一部であることを確認する必要があります。

これでこれをテストできます。traceroute

traceroute www.google.com
traceroute www.google.com -s 192.168.2.5

2番目のアドレスはソースアドレスを設定しているので、wlan0を通過する必要があります。

ip route show table wifiroute; を使用してルーティングテーブルを表示できます。次のコマンドを使用すると、すべてのテーブルのすべてのパスを表示できます。ip route show table all

おすすめ記事