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.

Respostas:


39

Use ip route get <ip>.


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

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


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] -----------------------------------------------
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.