Copiando pacotes de uma interface para outra

8

Eu tenho um sistema Linux (seja ele A) com 2 placas ethernet, a saber eth0 e eth1 que estão conectadas a duas LANs totalmente não relacionadas.

Basicamente, eth0 é usado para o tráfego normal de aplicativos e eth1 é usado apenas para fins de depuração. Depuração significa que a eth1 é vinculada usando um cabo cruzado para outra caixa linux (seja ela B) que executa o Wireshark. Eu quero que o Wireshark seja capaz de processar pacotes de aplicativos viajando na eth0 de A.

Basicamente, eu preciso copiar pacotes de viagem da interface eth0 para a interface eth1, para que o Wireshark na caixa B possa detectá-los (por alguns motivos eu não tenho acesso físico à rede eth0). Eu também poderia precisar especificar quais pacotes copiar de eth0 para eth1 de acordo com alguma regra (baseado apenas em campos TCP / IP).

Observe também que eth0 de A não precisa ser colocado em modo promíscuo porque eu só quero copiar um subconjunto de pacotes que têm A como destino

Existe uma maneira de conseguir isso usando apenas o iptables? Ou eu preciso escrever um aplicativo para fazer isso funcionar? O que devo fazer para "copiar" os pacotes?

    
por Emiliano 21.01.2011 / 16:06

5 respostas

6

Se o seu kernel é recente o suficiente, você pode usar iptables --tee para encaminhar quadros de eth0 para a máquina de captura.

Editar: link atualizado desde o original está agora por trás de uma solicitação de senha.

    
por 21.01.2011 / 18:14
3

Você pode usar a ação tc mirred. Por exemplo: Para tráfego de entrada:

tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: \
   protocol all prio 2 u32 \
   match u32 0 0 flowid 1:1 \
   action mirred egress mirror dev eth1

Para tráfego de saída:

tc qdisc replace dev eth0 parent root handle 10: prio
tc filter add dev eth0 parent 10: \
   protocol all prio 2 u32 \
   match u32 0 0 flowid 10:1 \
   action mirred egress mirror dev eth1
    
por 30.04.2015 / 01:01
2

Pesquise na net por tcpbridge. Isso é exatamente o que faz o trabalho. Também pode ser usado para as máquinas virtuais do Tal. É assim que Inuse.

    
por 06.02.2012 / 19:48
1

Algo como rinetd pode funcionar (redirecionador / servidor para TCP somente eu acredito, então não ARP, Layer 2, etc.), mas com toda a honestidade, obtendo alguns switches gerenciados que têm recursos de espelhamento de porta ou se essa caixa é usada exclusivamente para wireshark, você poderia adicionar outro NIC para ele, ponte duas interfaces, coloque-a na frente da eth0 da máquina A e tenha uma máquina de farejamento dedicada.

    
por 21.01.2011 / 16:14
1

Um dispositivo que copia quadros Ethernet de uma interface para outra é uma ponte. Você pode configurar seu sistema Linux para atuar como uma ponte. Alguma documentação pode ser encontrada aqui:

Você pode aplicar regras de filtragem ao tráfego em ponte usando ebtables , que é um análogo de iptables para o tráfego da camada 2.

    
por 21.01.2011 / 16:26