Jak sprawdzić w systemie Linux, jakiego interfejsu sieciowego i źródłowego adresu IP używa się do trasy do określonego hosta docelowego?

16

Jeśli mam wiele interfejsów sieciowych (tutaj: 2) na komputerze z systemem Linux (tutaj: Debian Lenny). Jak mogę zobaczyć, przez jaki interfejs sieciowy (NIC) prowadzi trasa do określonego hosta docelowego i jaki źródłowy adres IP jest domyślnie używany?

Myślałem o użyciu

ping -I nic1 desthost.example.com
ping -I nic2 desthost.example.com

też sprawdź, czy oba sposoby są możliwe. (Tutaj: możliwe są oba sposoby)

Spojrzałem na tablicę routingu

ip route show

Ale to dość skomplikowane, więc pomyślałem, że przy pomocy małego prostego narzędzia wystarczy mi powiedzieć:

„Do docelowego hosta desthost.example.com potrzebny jest interfejs nicX i źródłowy adres IP 10.0.0.1”

Jaki jest najprostszy sposób na uzyskanie tych informacji?

(I wolałbym nie używać tcpdump i ustawiać interfejsy w trybie promis).

Dzięki.

sandoz
źródło

Odpowiedzi:

39

Zastosowanie ip route get <ip>.

weeheavy
źródło
1
Aby uzyskać tylko interfejs:ip -o route get $ipaddress | perl -nle 'if(/dev\s+(\S+)/) {print $1}'
mivk
2
lubip -o route get $ipaddress | awk '{ print $5 }'
ShadowFlame
0

co powiesz na route -C

Jure1873
źródło
trasa jest przestarzała. użyj iproute2.
madCode
0

Używam netstat -Wcatnp. Powinieneś spróbować tego polecenia.

fmysky
źródło
0

Jeszcze łatwiejsze, powiedziałbym nm-tooli jeśli chcesz tylko odpowiednią linię nm-tool | grep Device. To powinno dać:

- Device: wlan0  [My router name] -----------------------------------------------
Buzut
źródło