Зміна існуючого запису маршруту в Linux


11

яка команда для зміни метрики існуючого запису маршруту в Linux? Я можу змінити шлюз існуючої записи за допомогою команди "ip route change", як показано нижче, але не в змозі змінити показники. Чи є для цього ще якась команда?

route –n
40.2.2.0        30.1.3.2        255.255.255.0   eth2

ip route change 40.2.2.0/24 via 30.1.2.2

route -n
40.2.2.0        30.1.2.2        255.255.255.0   eth1

Ось сторінка веб-сайту, на якій є команди для редагування IP-адрес за допомогою команди ifconfig. Я не знаю всіх команд у верхній частині голови, але, сподіваюся, ця сторінка вам допоможе. tecmint.com/ifconfig-command-examples
Nicholas Awesomepants

1
Видаліть маршрут, а потім додайте його знову, якщо вони не встановили lkml.iu.edu/hypermail/linux/net/0504.3/0017.html
тридцять

Відповіді:


7

Як зазначається в коментарі до питання, цитуючи повідомлення у списку розсилки linux-net: "Метрику / пріоритет неможливо змінити [...] Це обмеження поточного протоколу [...]".
Єдиний спосіб - видалити маршрут і додати новий.

Це робиться за допомогою routeкоманди, наприклад:

sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1

Сторінка Debian для команди маршруту


4
Питання полягало не в тому, як додати маршрут із заданим показником; ОП хотів змінити показник на існуючому маршруті (без видалення та повторного додавання маршруту).
Андрас Корн

4
Очевидно , що ви не читали коментар в питанні , які посилання на адресу електронної пошти показуючи , що ні метрика може бути змінена: The metric/priority cannot be changed [...] This is a limitation of the current protocol[...]. Єдиний спосіб - видалити маршрут і додати новий.
Jan

7
Я знаю, що показник неможливо змінити. Ваша відповідь все ще не відповідає на питання - можливо, вказуйте у відповіді, що показник можна змінити лише шляхом видалення та повторного додавання маршруту?
Андраш Корн

17

(Комбінування різних коментарів у відповідь)

Наразі неможливо змінити метрику маршруту. У повідомленні 2005 року про LKML зазначено :

[...] Метрику / пріоритет неможливо змінити, оскільки у нас немає окремих полів для відповідності полів та нових значень, тому, якщо ви вкажете метрику, запис просто не знайдеться, а запит не вдасться до ENOENT, оскільки NLM_F_CREATE не вказано. Це обмеження поточного протоколу, і, можливо, було б корисно змінити це, однак це не тривіально [...]

Це, мабуть, стосується ip route changeі ip route replaceколишнього, і першого - призводить до помилки для мене, в той час як другий створює додатковий маршрут, як рекламується (його man page повідомляє, що 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

так, мене покусали цією проблемою останні кілька місяців ... як Брайан Кантрілл продовжує говорити про Linux: Це
еволюція з

@Hvisage ви можете розробити? Чи є якийсь інструмент, який дозволяє змінити показник, не виймаючи його?
Брайам

@Braiam Це мінус, як і в: НЕ існує такого інструменту. відповідно до відповіді. Якщо ви посилаєтесь на мої цитати Брайана Кантрілла, я десь вірю в youtube.com/watch?v=wTVfAMRj-7E
Hvisage,

2

ifmetric дозволить вам змінювати метрику маршруту на ходу, враховуючи інтерфейс, через який проходять маршрути, які ви хочете змінити.

Використання

ifmetric <iface> [<metric>]

Наприклад, використовуйте ifmetric tun0 12для зміни показника на 12 для всіх маршрутів, які проходять tun0.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.