(Объединение различных комментариев в ответ)
В настоящее время невозможно изменить метрику маршрута. В сообщении 2005 года о LKML говорится :
[...] Метрика / приоритет не может быть изменена, потому что у нас нет отдельных полей для полей для сопоставления и новых значений, поэтому, если вы укажете метрику, запись просто не будет найдена, и запрос завершится неудачно с ENOENT, потому что NLM_F_CREATE не указано Это ограничение текущего протокола, и это может быть хорошей идеей, чтобы изменить это, однако это не тривиально [...]
Похоже, что это применимо как к, так ip route change
и к ip route replace
- первое приводит к ошибке для меня, а второе создает дополнительный маршрут в соответствии с объявлением (на его странице руководства указано, что replace
он заменит или создаст маршрут). Это согласуется с тем, что ядро отвечает ENOENT и ip route replace
выполняет запрос на создание маршрута.
Таким образом, решение состоит в том, чтобы удалить существующий маршрут и добавить новый. например
ip route del 40.2.2.0/24 via 30.1.2.2
ip route add 40.2.2.0/24 via 30.1.2.2 metric 1234