Не удается удалить маршрут с шлюзом 0.0.0.0

8

Я пытаюсь настроить свои маршруты таким образом, чтобы я мог подключиться к Vagrant box с демонстрационной версией Solum .

Моя таблица маршрутизации содержит, но не ограничивается следующими маршрутами:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
192.168.76.0    192.168.76.2    255.255.255.0   UG    0      0        0 vboxnet0
192.168.76.0    0.0.0.0         255.255.255.0   U     0      0        0 vboxnet0

Я подозреваю, что третий маршрут (автоматически генерируемый при запуске Vagrant box) мешает второму маршруту (создан вручную), поэтому я пытаюсь удалить его.

Однако, используя любую из следующих команд

$ sudo route del 192.168.76.0 gw 0.0.0.0
$ sudo route del 192.168.76.0

возвращает:

SIOCDELRT: No such process

который обычно появляется, когда routeне удается найти маршрут.

С другой стороны, используя

$ sudo route del 192.168.76.0/24 gw 0.0.0.0
$ sudo route del 192.168.76.0/24

выходы:

route: netmask 000000ff doesn't make sense with host route
Usage: route [-nNvee] [-FC] [<AF>]           List kernel routing tables
(rest of usage)

Что я делаю неправильно? Есть ли причина, по которой я не могу удалить этот маршрут? Я ошибаюсь, полагая, что это мешает тому, который я настроил?

(Я использую Ubuntu 14.04+).

Dragomok
источник
2
От макушки головы: попробуй route del -net 192.168.76.0. В противном случае он думает, что вы пытаетесь удалить маршрут к одному хосту.
Джос
Как вы добавили маршрут? Кажется, вы используете vbox, поэтому маршрутизация может быть частью конфигурации vobx, я не могу сказать, что вы опубликовали.
Пантера
Просто из любопытства, но почему вы выбрали этот маршрут? Мне кажется, что сеть 192.168.76.0/24 подключена - шлюз не нужен. Но когда вы посмотрите на инструкции по установке, которые вы связали, вы найдете маршрут, route add -net 192.168.78.0/24 192.168.76.2который имеет гораздо больше смысла.
Нефенте
2
Btw. Если два или более маршрутов соответствуют хосту, наиболее конкретный имеет приоритет, то есть тот, который имеет самый длинный префикс. Статический маршрут к хосту имеет префикс / 32 и будет предпочтительным. Следующий критерий (обычно) зависит от того, как был изучен маршрут, например, статический или через протокол маршрутизации, где маршруты по линии связи имеют наивысший приоритет, затем следуют статические, за которыми следуют динамические маршруты, изученные, например, через OSPF.
Нефенте
@ Джо, твой ответ оказался почти правильным - если я просто добавлю /24в конец команды, это сработает. Спасибо. Если вы отправите ответ, возможно, с некоторыми уточнениями в интересах людей, которые будут просматривать этот вопрос в будущем, я приму его.
Драгомок,

Ответы:

11

Чтобы удалить отдельный маршрут из таблицы маршрутов, необходимо указать достаточно параметров, чтобы можно было однозначно сопоставить один из маршрутов.

Если вы хотите удалить всю подсеть (в отличие от одного хоста), вам нужно использовать как -netфлаг, так и некоторое указание области сетевого адреса, то есть либо netmaskпараметр (например, 255.255.255.0), либо число, подобное / 24 (это означает, что первые 24 бита являются номером сети, а остальные 8 используются для хостов). В вашем случае оба

sudo route del -net 192.168.76.0/24

а также

sudo route del -net 192.168.76.0 netmask 255.255.255.0

работал бы.

(спасибо @nephente за полезные дополнения)

Jos
источник
или с последующим указанием интерфейса, например dev vboxnet0->sudo route del -net 192.168.76.0 netmask 255.255.255.0 dev vboxnet0
adadion
0

Комментарий, сделанный Йосом , почти верен:

$ sudo route del -net 192.168.76.0/24 удаляет маршрут.

Dragomok
источник