web-dev-qa-db-ja.com

Linuxルーティングテーブルからルートを削除する方法

これは思ったより難しいことがわかりました。削除したいルートは「!」拒否されたルートですが、適切な「route del」コマンドを作成してそれを引き出すようには思えません。

これがルーティングテーブルです...

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
67.40.227.206   *               255.255.255.255 UH    0      0        0 ppp0
192.168.46.79   *               255.255.255.255 UH    0      0        0 ipsec0
192.168.46.79   -               255.255.255.255 !H    2      -        0 -
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
10.1.0.0        *               255.255.0.0     U     0      0        0 ipsec0
10.1.0.0        -               255.255.0.0     !     2      -        0 -
default         *               0.0.0.0         U     3      0        0 ppp0
default         *               0.0.0.0         U     4      0        0 ppp0

192.168.46.79と1​​0.1.0.0の2つのエントリがあります。これらは、私が使用している小さなLinuxベースのルーターによって自動生成されます。シェル自体からIPSECトンネルにpingを実行できますが、LANからのトラフィックは2番目のルート(拒否された「!」または「!H」ルート)を使用します。

47
user54259

とともに route -n取得するコマンド

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG    0      0        0 eth0
0.0.0.0         160.98.123.1    0.0.0.0         UG    600    0        0 wlan0

Sudo route del -net 0.0.0.0 gw 192.168.178.1 netmask 0.0.0.0 dev eth0

上からそれぞれすべてのパラメーターを取得します

58

!フラグの付いたルートのタイプは、到達できないか禁止されています。 routeは、net-toolsの古代のユーティリティであり、2つを区別しません。 iproute2を使用します。

これらのルートを削除するnet-toolsの方法は、route delを使用することです。ただし、net-toolsは、拒否されたルートと他のルートを区別する方法を提供しません(デバイスを指定しないと到達できないルートが削除される可能性がありますが、dev引数はオプションであるため)。

iproute2を使用すると、次のように実行できます。

ip route del unreachable 10.1.0.0/24
ip route del unreachable 192.168.46.79/32

到達不可能ではないかもしれませんが、禁止されています。引数なしでip routeを使用して、どちらかを判別します。

16
Falcon Momot

これだと思います:route del -net 10.1.0.0 netmask 255.255.0.0 metric 2

100%確実ではありません。しかし、デフォルトのルートが2つあるので、他に何か間抜けなことが起こっていると思います。

10
baumgart