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łachip rule.vrf NAZWA— liczy trasę w kontekście konkretnej instancji VRF.tos TOSorazipproto,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 show — get 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.