Como forçar o ping a realmente enviar pacotes para fora da NIC?

0

Estou trabalhando em um dispositivo de captura de timbres e captura de pacotes baseado em FPGA. Para testá-lo, quero tentar fazer o ping através dele. Meu computador tem duas NICs 10G de porta dupla instaladas e eu tenho 3 portas conectadas - uma é a porta 'monitorada' onde os pacotes são capturados em ambas as direções, uma é a porta 'através' que é conectada à porta 'monitorada' e a terceira é a porta 'dump' onde os pacotes capturados e com registro de data e hora são enviados.

Saída do ip addr com informações irrelevantes removidas:

3: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 00:60:dd:xx:xx:f8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.99.1/24 scope global enp4s0
       valid_lft forever preferred_lft forever
    inet6 fe80::260:ddff:fexx:xxf8/64 scope link 
       valid_lft forever preferred_lft forever
5: enp6s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 90:e2:ba:xx:xx:e0 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::92e2:baff:fexx:xxe0/64 scope link 
       valid_lft forever preferred_lft forever
6: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
    link/ether 00:60:dd:xx:xx:f9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.99.2/24 scope global enp5s0
       valid_lft forever preferred_lft forever
    inet6 fe80::260:ddff:fexx:xxf9/64 scope link 
       valid_lft forever preferred_lft forever
7: enp6s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 90:e2:ba:xx:xx:e1 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::92e2:baff:fexx:xxe1/64 scope link 
       valid_lft forever preferred_lft forever

enp4s0 e enp5s0 são as portas monitoradas e através de portas, enp6s0f1 é a porta de captura. Eu atribuí endereços 192.168.99.1/24 e 192.168.99.2/24 às interfaces enp4s0 e enp5s0. Eu tenho 3 instâncias do Wireshark rodando, uma em cada interface.

Se eu abrir um soquete bruto em Python e enviar alguns dados, eu o vejo como esperado em todas as instâncias de 3 wireshark. No entanto, quando eu executo ping (ping -I enp4s0 192.168.99.2), ele 'funciona' (nenhum pacote perdido), mas nada aparece em nenhuma instância do wireshark. Eu tentei adicionar os endereços para a tabela ARP com as interfaces corretas, mas ainda não há dados. Minha suposição é que, uma vez que o kernel pode ver o endereço de destino em outra interface, os pacotes nunca são realmente enviados para o NIC para sair na rede. Existe alguma maneira simples de forçar os pacotes a realmente saírem do fio sem ter que pular 500 aros e se movimentar com o iptables, NAT, etc.?

    
por alex.forencich 28.08.2015 / 22:10

0 respostas