更新されたルーティングテーブルのデフォルトゲートウェイリセットの問題

更新されたルーティングテーブルのデフォルトゲートウェイリセットの問題

アドレス192.168.0.11のインターフェイスenp7s0があります。

私のルーターは192.168.0.1です。

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

Ziel            Router          Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 enp7s0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp7s0
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp7s0

すべてが正常です。 iptalbesが設定されていません。

これで、ルーティングテーブルをリセットしてデフォルトゲートウェイをリセットしようとしています。

ip route flush table main
route add default gw 192.168.0.1

ただすすぎます。しかし、追加に失敗しました。

SIOCADDRT: network is unreachable

ここで問題は何ですか? ?

答え1

Linuxでは、デフォルトで(アドレスにフラグが追加されていない場合)プレフィックスルーティングなし)、インターフェイスにアドレスを追加すると、暗黙的にLANにルートが追加されます。範囲リンク。 devを使用してアクセスできるため、ゲートウェイへのパスがあります。enpu7s0:

# ip route
default via 192.168.0.1 dev enp7s0 
192.168.0.0/24 dev enp7s0 proto kernel scope link src 192.168.0.11 
# ip route get 192.168.0.1
192.168.0.1 dev enp7s0 src 192.168.0.11 uid 0 
    cache 

パスを更新すると、暗黙的なパスも更新されます。範囲リンク路線:

# ip route flush table main
# ip route
# ip route get 192.168.0.1
RTNETLINK answers: Network is unreachable

したがって、再インポートする方法は2つあります。手動で再追加するか(ip route add 192.168.0.0/24 dev enp7s0)インターフェイスをオフにしてオンにすると、暗黙の追加が再トリガされます。範囲リンク路線:

# ip route
# ip link set enp7s0 down; ip link set enp7s0 up
# ip route
192.168.0.0/24 dev enp7s0 proto kernel scope link src 192.168.0.11 
# ip route add default via 192.168.0.1
#

唯一の違いは、proto kernelパスが手動ではなくカーネルによって追加されたという指示があることです。だから使用しない方がベストフラッシュコマンド(使用削除)または追加のフィルタを追加します(たとえば、ip route flush scope globalローカルLANパスが維持されます)。

関連情報