У меня есть пара интерфейсов в таблице маршрутизации, и первый перестал работать. Я хочу временно переместить его вниз, чтобы сделать один из них по умолчанию. Мне нужно удалить его и добавить снова или есть команда ip/route/ifconfig, которая может просто переместить записи вверх или вниз?
решение1
Таблица маршрутизации не используется в порядке сверху вниз. Вместо этого более конкретные маршруты (с большей длиной префикса) всегда имеют приоритет над менее конкретными – например, маршрут /24 выигрывает у маршрута /16, который выигрывает у маршрута «по умолчанию» /0.
Если у вас есть два маршрута к одному и тому же пункту назначения (например, оба к 192.168.1.0/24), они сравниваются по параметру «метрика», который по сути является стоимостью маршрута, поэтому побеждает наименьшее значение метрики (наименьшая стоимость).
Таким образом, если у вас есть несколько маршрутов «по умолчанию», вы можете приоритизировать один из них, удалив его и добавив заново с более низкой метрикой, например:
$ ip route
default via 192.168.7.1 dev eth0 proto dhcp metric 100
default via 192.168.1.1 dev wlan0 proto dhcp metric 600
$ ip route del default dev wlan0
$ ip route add default via 192.168.1.1 dev wlan0 metric 50
(На самом деле вам не нужно удалять нежелательный маршрут с высокой метрикой, особенно если изменение будет временным — достаточно добавить новый.)
Обратите внимание, что вы, вероятно, не можете использовать ip route change
или ip route replace
в этой ситуации, потому что они рассматривают указанную метрику какключ поискаи устройство в качестве параметра для обновления, хотя вы, вероятно, захотите сделать все с точностью до наоборот.