jak znaleźć bramę używaną do routingu

45

To jest w środowisku unix. Mam wiele tras na hoście (widoczne za pomocą polecenia „ip route show”). Jeśli pinguję adres, jak mogę dowiedzieć się, która brama została użyta do przesłania trasy?

Próbowałem użyć polecenia traceroute, ale nie wyświetla ono bezpośredniej bramy.

Poniżej wyjścia 10.58.227.1 jest moją domyślną bramą.

# ip r l
10.58.227.0/24 dev front_eth1  proto kernel  scope link  src 10.58.227.231
169.254.0.0/17 dev bond0  proto kernel  scope link  src 169.254.0.4
default via 10.58.227.1 dev front_eth1  proto gated

Kiedy wykonuję traceroute na adres zewnętrzny, używana brama (brama domyślna 10.58.227.1) nie jest wyświetlana w danych wyjściowych.

# traceroute -n -I 10.63.21.118
traceroute to 10.63.21.118 (10.63.21.118), 30 hops max, 40 byte packets
 1  10.58.112.1  0.507 ms  1.008 ms  1.017 ms
 2  10.63.21.118  0.228 ms  0.233 ms  0.234 ms

Czy jest jakaś opcja, aby wyświetlić te same informacje, które podano w poleceniu traceroute, w tym bramę używaną do routingu?


źródło

Odpowiedzi:

73

Możesz użyć ip route get <address>polecenia, aby poprosić jądro o zgłoszenie trasy, której użyłby do wysłania pakietu na podany adres:

$ ip route get 4.2.2.1
4.2.2.1 via 192.168.0.1 dev eth0  src 192.168.0.121 
    cache 
$ 

192.168.0.1to moja domyślna trasa. Jeśli poproszę o adres, który nie byłby domyślną trasą:

$ ip route get 192.168.0.116
192.168.0.116 dev eth0  src 192.168.0.121 
    cache 
$ 
Sarnold
źródło
To dużo. :) To rozwiązuje problem.
Losowe pytanie poboczne - jeśli 192.168.0.1„domyślna trasa” lub „brama” ... do jakiej nazwy miałaby się odnosić 192.168.0.121? Po prostu „źródło”?
dtmland
@sarnold, proszę potwierdzić, czy potrzebuje internetu na tym serwerze.
kd12
@ kd12 wystarczy połączenie internetowe na tym serwerze, jeśli chcesz kierować pakiety do Internetu. Jeśli chcesz, możesz skonfigurować sieci IP bez połączenia z Internetem; tabele routingu nie wiedzą i nie dbają, wszystko działa tak samo. :)
sarnold