ip route get

Pokazuje którą trasą i interfejsem pakiet dotrze do konkretnego adresu docelowego.

ip route get to narzędzie z pakietu iproute2, które odpowiada na bardzo konkretne pytanie: „jak pakiet do tego adresu faktycznie wyjdzie z mojej maszyny?”. Zamiast wyświetlać całą tablicę routingu i kazać ci się domyślać, jądro symuluje wysłanie pakietu pod podany adres i pokazuje gotowy werdykt — przez którą bramę, którym interfejsem i z jakim adresem źródłowym. To różni je od ip route show, które tylko czyta wpisy w tablicy. Tu dostajesz realną decyzję routingu, łącznie z wyborem reguły, tablicy i adresu src.

Składnia i najważniejsze opcje

Podstawowa forma jest prosta: ip route get ADRES. Pełnia mocy wychodzi dopiero przy dodatkowych argumentach:

  • from ADRES — wymusza adres źródłowy, dla którego liczona jest trasa (przydatne przy wielu IP na hoście).
  • iif INTERFEJS — udaje, że pakiet przyszedł z tego interfejsu; jądro liczy trasę przeposłania, a nie wyjścia (test forwardingu).
  • oif INTERFEJS — wymusza interfejs wyjściowy, którym pakiet ma zostać wysłany.
  • mark MARK — ustawia firewall mark (fwmark); kluczowe, gdy masz policy routing oparty na regułach ip rule.
  • vrf NAZWA — liczy trasę w kontekście konkretnej instancji VRF.
  • tos TOS oraz ipproto, sport, dport — dokładają pola, po których mogą rozróżniać reguły routingu.

Przykłady użycia

ip route get 8.8.8.8 — pokazuje, którą bramą i interfejsem maszyna dotrze do publicznego internetu (klasyczny test domyślnej trasy).

ip route get 192.168.1.50 — sprawdza, czy adres w LAN jest osiągalny bezpośrednio (dev bez via) czy przez router.

ip route get 10.0.0.1 from 172.16.0.5 — liczy trasę tak, jakby pakiet wychodził z konkretnego adresu źródłowego; świetne przy wielu interfejsach i policy routingu.

ip route get 1.1.1.1 mark 100 — pokazuje, jak fwmark 100 zmienia decyzję, gdy masz reguły ip rule kierujące oznaczony ruch do innej tablicy.

ip route get 2001:4860:4860::8888 — to samo dla IPv6; nie musisz dodawać -6, ip rozpozna rodzinę adresu sam.

Częste błędy i pułapki

Najważniejsze: get to nie show. Jeśli chcesz tylko podejrzeć wpisy, użyj ip route showget realnie rozwiązuje trasę i może tworzyć klony wpisów w cache jądra. Druga pułapka: ludzie liczą, że get sprawdzi „czy host żyje”. Nie sprawdza — to nie ping, tu nie leci żaden pakiet po sieci, jądro tylko podejmuje decyzję routingu. Trzecia: bez from czy mark dostaniesz trasę dla najprostszego przypadku i możesz przegapić regułę policy routingu, która zadziała dopiero przy konkretnym źródle lub znaczniku. I drobiazg dla świeżaków migrujących ze starej szkoły: to iproute2, więc wysłużone route i netstat -rn tu nie pomogą — choć pokazują podobne dane, nie symulują wyboru trasy.

Powiązane komendy: ip route show, ip rule, ip route add, traceroute, mtr, ping.