Modyfikacja istniejącego wpisu trasy w systemie Linux

11

jakie jest polecenie modyfikacji metryki istniejącego wpisu trasy w systemie Linux? Jestem w stanie zmienić bramę istniejącego wpisu za pomocą polecenia „ip route change” jak poniżej, ale nie mogę zmienić metryk. Czy jest na to jakieś inne polecenie?

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
użytkownik1762571
źródło
Oto strona internetowa z poleceniami edycji adresów IP za pomocą polecenia ifconfig. Nie znam wszystkich poleceń z góry głowy, ale mam nadzieję, że ta strona ci pomoże. tecmint.com/ifconfig-command-examples
Nicholas Awesomepants
1
Usuń trasę, a następnie dodaj ją ponownie, chyba że od tego czasu naprawiono lkml.iu.edu/hypermail/linux/net/0504.3/0017.html
thrig

Odpowiedzi:

7

Jak zauważono w komentarzu do pytania, cytując wiadomość na liście mailingowej linux-net: „Metryka / priorytet nie może zostać zmieniony [...] Jest to ograniczenie obecnego protokołu [...].”
Jedynym sposobem jest usunięcie trasy i dodanie nowej.

Odbywa się to za pomocą routepolecenia, przykład:

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

Strona podręcznika Debiana dla polecenia route

Jan
źródło
4
Pytanie nie polegało na tym, jak dodać trasę z podaną charakterystyką; OP chciał zmienić metrykę na istniejącej trasie (bez usuwania i ponownego dodawania trasy).
András Korn,
4
Oczywiście nie przeczytałem komentarz w odpowiedzi na pytanie, które linki na wykazywanie e-mail nie puszka metryczny być zmieniony: The metric/priority cannot be changed [...] This is a limitation of the current protocol[...]. Jedynym sposobem jest usunięcie trasy i dodanie nowej.
Jan
7
Wiem, że danych nie można zmienić. Twoja odpowiedź wciąż nie odpowiada na pytanie - może wskazywać w odpowiedzi, że metrykę można zmienić tylko poprzez usunięcie i ponowne dodanie trasy?
András Korn,
17

(Łączenie różnych komentarzy w odpowiedź)

Obecnie nie można modyfikować metryki trasy. Jako komunikat z 2005 r. W sprawie LKML stwierdza :

[...] Nie można zmienić metryki / priorytetu, ponieważ nie mamy osobnych pól dla pól do dopasowania i nowych wartości, więc jeśli podasz metrykę, wpis po prostu nie zostanie znaleziony, a żądanie zakończy się niepowodzeniem z ENOENT, ponieważ NLM_F_CREATE nie jest określony. Jest to ograniczenie obecnego protokołu i może to być dobry pomysł, aby to zmienić, jednak nie jest to trywialne [...]

Wydaje się, że dotyczy to zarówno pierwszego, jak ip route changei ip route replacedrugiego - powoduje dla mnie błąd, podczas gdy ten drugi tworzy dodatkową trasę zgodnie z reklamą (strona man podaje, że replacezastąpi lub utworzy trasę). Jest to spójne z tym, że jądro odpowiada ENOENT i ip route replaceodpowiada na żądanie utworzenia trasy.


Tak więc rozwiązaniem jest usunięcie istniejącej trasy i dodanie nowej. na przykład

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
znak
źródło
tak, ugryzł mnie ten problem w ciągu ostatnich kilku miesięcy ... jak Brian Cantrill ciągle mówi o Linuksie: To ewolucja z syndromem NIH (nie tutaj wymyślonym) ...
Hvisage
@Hvisage czy możesz opracować? Czy jest jakieś narzędzie, które pozwala zmienić metrykę bez konieczności jej usuwania?
Braiam
@Braiam To jest negatywne, jak w: NIE istnieje takie narzędzie. jak na odpowiedź. Jeśli odwołujesz się do moich cytatów Bryana Cantrilla, to gdzieś wierzę w youtube.com/watch?v=wTVfAMRj-7E
Hvisage 24.04.2019
2

ifmetric pozwoli Ci zmienić metrykę trasy na bieżąco, biorąc pod uwagę interfejs, przez który przechodzą trasy, które chcesz zmienić.

Stosowanie

ifmetric <iface> [<metric>]

Na przykład użyj, ifmetric tun0 12aby zmienić metrykę na 12 dla wszystkich tras tun0.

AeroClassics
źródło