Как удалить маршрут из таблицы маршрутизации Linux

42

Это оказывается сложнее, чем я думал. Маршруты, которые я хочу удалить, это "!" отклоненные маршруты, но я не могу сформулировать правильную команду "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 и 10.1.0.0. Они автоматически генерируются небольшим маршрутизатором на базе Linux, который я использую. Я могу пропинговать туннели IPSEC от самой оболочки, но трафик из локальной сети идет по второму маршруту (отклоненный маршрут "!" Или "! H") по причинам, которые я просто не понимаю.

Zoredache
источник
Можете ли вы быть более конкретным, когда говорите, что движение идет по «второму маршруту»?
Зоредаче
Обратите внимание на две записи таблицы для 192.168.46.79? В оболочке маршрутизатора, если я пингую ту сторону туннеля, это работает. Со стороны локальной сети трафик поступает на «вторую запись 192.168.46.79» и отклоняется / отбрасывается.
Я также не понимаю, почему SG560 генерирует две (2) записи в таблице для «по умолчанию» и пунктов назначения IPSEC. Я в замешательстве.

Ответы:

53

с помощью 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

Вы получите все параметры соответственно сверху

Филипп Гачу
источник
1
После перезагрузки снова приходит. Как я могу удалить навсегда?
Шямкхадка
1
@shyamkkhadka это зависит от того, какой процесс он был создан ... рекомендуем вам опубликовать вопрос с вашим конкретным случаем, чтобы проанализировать его. Дайте подробности о маршруте, который вы получили и хотите удалить. В основном сервер и клиент dhcp будут создавать маршруты
Филипп Гачу
15

Типы маршрутов с !флагом недоступны или запрещены. routeБудучи древней утилитой от сетевых инструментов, не делает различий между ними. Используйте 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без аргументов, чтобы определить, какие.

Сокол Момот
источник
8

Я думаю, что это так: route del -net 10.1.0.0 netmask 255.255.0.0 metric 2

Я не уверен на 100%. Но я думаю, что у вас есть еще одна глупость, потому что у вас есть 2 маршрута по умолчанию.

Баумгарт
источник
2
Маршруты по умолчанию +1: 2 всегда являются признаком неправильной настройки чего-либо (если только они не указывают на разные шлюзы и имеют разные метрики).
wolfgangsz
-1

Пожалуйста, посмотрите, есть ли "файл конфигурации устройства" в /etc/network/interfaces.d/ -> У меня был eht0 !! Действительно, это было eht0, а не eth0 там!

Андреас Брандтс
источник
Возможно, вы захотите немного расширить свой ответ, так как в настоящее время не очевидно, как он относится к задаваемому вопросу.
Уомбл