Jak usunąć trasę z tabeli routingu systemu Linux

42

To okazuje się trudniejsze niż myślałem. Trasy, które chcę usunąć, to „!” odrzuciłem trasy, ale nie mogę sformułować właściwej komendy „route del”, aby ją pobrać.

Oto tabela routingu ...

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

Mam dwa wpisy dla 192.168.46.79 i 10.1.0.0. Są one generowane automatycznie przez mały router z systemem Linux, którego używam. Mogę pingować tunele IPSEC z samej powłoki, ale ruch z sieci LAN biegnie drugą drogą (odrzuconą trasą „!” Lub „! H”) z powodów, których po prostu nie rozumiem.

Zoredache
źródło
Czy możesz być bardziej precyzyjny, gdy mówisz, że ruch uliczny „prowadzi drugą trasę”?
Zoredache,
Zwróć uwagę na dwa wpisy tabeli dla 192.168.46.79? W powłoce routera, jeśli pinguję tę stronę tunelu, to działa. Od strony sieci LAN ruch przechodzi do „drugiego wpisu 192.168.46.79” i jest odrzucany / spada.
Nie rozumiem również, dlaczego SG560 generuje dwa (2) wpisy tabeli dla „domyślnych” i miejsc docelowych IPSEC. Jestem zakłopotany.

Odpowiedzi:

53

za pomocą route -npolecenia, które otrzymasz

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

otrzymasz wszystkie parametry odpowiednio z góry

Philippe Gachoud
źródło
1
Po ponownym uruchomieniu pojawia się ponownie. Jak mogę trwale usunąć?
Shyamkkhadka
1
@shyamkkhadka to zależy od tego, który proces został utworzony ... zalecamy opublikowanie pytania dotyczącego konkretnego przypadku w celu jego analizy. Podaj szczegóły dotyczące trasy, którą masz, i chcesz ją usunąć. Głównie serwer dhcp i klient utworzą trasy
Philippe Gachoud
15

Rodzaje tras z !flagą są albo nieosiągalne, albo zabronione. route, będąc starożytnym narzędziem sieciowym, nie rozróżnia między nimi. Użyj iproute2.

Metodą sieciową do usuwania tych tras byłoby użycie route delna nim. Jednak narzędzie net-tools nie pozwala na rozróżnienie odrzuconej trasy od drugiej (ponieważ argument dev jest opcjonalny, ale nieokreślenie urządzenia prawdopodobnie spowoduje usunięcie nieosiągalnej trasy).

iproute2 pozwala to zrobić w następujący sposób:

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

Może nie być nieosiągalny, ale zabrania. Użyj ip routebez argumentów, aby ustalić, który.

Falcon Momot
źródło
8

Myślę, że to jest to: route del -net 10.1.0.0 netmask 255.255.0.0 metric 2

Nie jestem w 100% pewien. Ale myślę, że masz jeszcze coś głupiego, ponieważ masz 2 domyślne trasy.

baumgart
źródło
2
Domyślne trasy +1: 2 są zawsze oznaką niewłaściwej konfiguracji (chyba że faktycznie wskazują różne bramy i mają inne parametry).
wolfgangsz
-1

Sprawdź, czy w pliku /etc/network/interfaces.d/ znajduje się „plik konfiguracji urządzenia” -> Miałem eht0 !! Naprawdę, było tam eht0, a nie eth0!

Andreas Brandts
źródło
Możesz nieco rozszerzyć swoją odpowiedź, ponieważ obecnie nie jest oczywiste, w jaki sposób ma ona związek z zadawanym pytaniem.
womble