Crie e conecte interfaces de rede virtual no Linux

2

Eu tenho uma ferramenta que reproduz o tráfego de um arquivo .pcap e outra ferramenta que interpreta esse tráfego. Para fins de teste, preciso reproduzir tráfego em uma interface e tê-la em outra. Obviamente eu poderia simplesmente conectar um cabo cruzado entre dois dos meus NICs, mas certamente há uma maneira melhor de fazer isso de dentro do Linux? Eu tentei usar uma interface de loopback (jogar tráfego fora, interpretar o tráfego de lo), mas não funcionou.

Existe uma maneira de criar interfaces virtuais e, em seguida, vincular as duas interfaces virtuais? Idealmente, eu seria capaz de reproduzir o tráfego 'virt-eth1' e ter minha outra ferramenta ouvindo no 'virt-eth2'. Quando o tráfego é enviado para o virt-eth1, ele deve ser conectado e entrar no virt-eth2. O que acontece a partir daí não tem consequências.

    
por Rauffle 01.03.2012 / 20:47

1 resposta

3

Acho que o que você precisa usar aqui são as interfaces TUN / TAP. Instale o tunctl (pacote para o CentOS) e, em seguida, você pode começar a criar interfaces de rede virtuais:

tunctl -t tap0
ifconfig tap0 up

Mais informações aqui: link

Tun/tap interfaces are a feature offered by Linux (and probably by other UNIX-like operating systems) that can do userspace networking, that is, allow userspace programs to see raw network traffic (at the ethernet or IP level) and do whatever they like with it. This document attempts to explain how tun/tap interfaces work under Linux, with some sample code to demonstrate their usage.

Pelo que me lembro, ao usar a interface de loopback, isso não funciona adequadamente com as bibliotecas PCAP porque não é realmente uma interface "real" (ou certamente não é vista como real pelo sistema). Não tem sequer um endereço MAC se você executar ifconfig nele. Mas, as interfaces TUN / TAP fazem, e para o propósito do que você está tentando fazer, pode ser apenas a solução que você está procurando (não é necessário criar máquinas virtuais extras, etc.).

Eu também suspeito que você será capaz de realizar sua tarefa com apenas uma interface de toque (sem ponte entre 2 requeridos). Basta ter seu primeiro processo ligado à interface virtual e gravar o tráfego, e depois ligar o secundário a ele, lendo o tráfego.

    
por 10.03.2012 / 21:44