Detecta qual tráfego de interface para um endereço IP passa

2

Estou fazendo um script e preciso detectar em qual interface o tráfego de um IP está passando. Isso ocorre porque, no arco, um endereço IP é atendido apenas por uma das quatro NICs, mas pode ser qualquer uma dessas quatro.

A maneira manual que fiz foi executar um tcpdump: se eu vejo pacotes, então esta é a interface; se não, cancele o tcpdump e faça outro tcpdump em outra interface.

Estou executando o FreeBSD.

    
por X3MBoy 26.04.2013 / 03:24

3 respostas

3

Ligue para route get .

route get 192.0.2.42 | awk '$1 ~ /interface/ {print $2}'
    
por 27.04.2013 / 02:32
0

netstat -tau mostra o endereço local e a porta usada por um programa. Cada interface tem seu próprio endereço, exceto casos como ligação ... Essa é a informação que você precisa?

Se for isso, é fácil para grep e cut a saída usá-la em um script.

Por exemplo: %código% recupera o endereço local usado pelas conexões "firefox" estabelecidas.

    
por 26.04.2013 / 04:35
0

Não tenho certeza sobre * BSDs, mas no Linuxes route -n informa (além de outras coisas) sinalizadores (você provavelmente desejará procurar a linha marcada como rota padrão) e o nome do dispositivo:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.100.63.254   0.0.0.0         UG    0      0        0 eth0
10.100.0.0      0.0.0.0         255.255.192.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

ou:

$ ip route
default via 10.100.63.254 dev eth0 
10.100.0.0/18 dev eth0  proto kernel  scope link  src 10.100.12.38 
127.0.0.0/8 dev lo  scope link 
169.254.0.0/16 dev eth0  scope link
    
por 26.04.2013 / 13:54