Como ver no Linux qual interface de rede e endereço IP de origem é usado para uma rota para um host de destino específico?

16

Se eu tiver várias interfaces de rede (aqui: 2) em uma máquina Linux (aqui: Debian Lenny). Como vejo, em qual interface de rede (NIC) uma rota para um host de destino específico está indo e qual endereço IP de origem é usado por padrão?

Eu pensei em usar

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

veja também se os dois caminhos são possíveis. (Aqui: Os dois caminhos são possíveis)

Eu olhei para a mesa de roteamento

ip route show

Mas é bastante complexo, então pensei, deve haver uma pequena ferramenta simples para me dizer:

"Para o host de destino desthost.example.com, é necessário o interface nicX e o endereço IP de origem 10.0.0.1"

Qual é a maneira mais simples de obter essas informações?

(E eu prefiro não usar o tcpdump e definir as interfaces no modo promíscuo.)

Obrigado.

sandoz
fonte

Respostas:

39

Use ip route get <ip>.

pesado
fonte
1
E para obter apenas a interface:ip -o route get $ipaddress | perl -nle 'if(/dev\s+(\S+)/) {print $1}'
mivk
2
ouip -o route get $ipaddress | awk '{ print $5 }'
ShadowFlame 23/03
0

A respeito route -C

Jure1873
fonte
rota está obsoleta. use iproute2.
madCode
0

Eu uso netstat -Wcatnp. Você deve tentar este comando.

fmysky
fonte
0

Ainda mais fácil, eu diria nm-toole se você quiser apenas a linha relevante nm-tool | grep Device. Isso deve gerar:

- Device: wlan0  [My router name] -----------------------------------------------
Buzut
fonte