Tráfego de cadeia FORWARD Iptables não visto pelo tcpdump

4

Eu tenho um bare metal rodando o servidor Ubuntu 16.04 com KVM e 3 NICs que estão conectadas pelas br1, br2 e br3 a uma VM guest rodando também com o servidor Ubuntu 16.04.

A primeira NIC - br1 - está conectada à internet e seu endereço de roteador é definido como o gateway padrão para o convidado.

Eu tenho um código em execução no meu convidado que precisa ouvir os pacotes recebidos por br2 e br3, o código deve ouvir apenas 1 NIC,

Tentei encaminhar o tráfego de en2 (o nome da NIC guest com ponte via br2) para en3 (o mesmo com br3) por seguindo isto :

sudo nano /etc/sysctl.conf
uncomment net.ipv4.ip_forward = 1

sudo sysctl -p
sudo iptables -t nat -A POSTROUTING --out-interface en3 -j MASQUERADE  
sudo iptables -A FORWARD --in-interface en2 --out-interfac en3 -j ACCEPT

Ainda não há nada gravado quando usando sudo tpcdump -i en3 e enviar uma mensagem ping para NIC2 (enquanto se eu executar sudo tpcdump -i en2 eu posso ver as mensagens ping)

O que estou perdendo aqui? Existe uma maneira melhor para obter o resultado desejado (que meu código escute 1 NIC e obtenha o tráfego de ambos os NICs)?

    
por Matan Levy 29.09.2016 / 14:12

1 resposta

4

Para ouvir especificamente o tráfego encaminhado, é melhor criar uma regra / interface nflog .

Publicando despejos de tráfego no Linux

Você criará uma interface nflog :

sudo iptables -t filter -I FORWARD -j NFLOG --nflog-group 6

e depois escute:

sudo tcpdump -s 0 -n -i nflog:6

The solution to the problem is to use the nflog interface in the iptables framework to get exactly the packets we are interested in.

nflog rules log to a kernel internal multicast group, which is identified by an integer in the 0 - 2^16-1 range. Only the part of the datagram that the framework sees will be captured. For iptables that is an IPv4 packet.

Using nflog to dump packets forces you to use a special interface syntax for tcpdump and wireshark. You must use nflog:groupnumber as interface.

Because nflog rules are normal iptables rules, the rules need a proper match and target part so you get exactly the traffic you want. You also must put the rule into the correct place for it to get the packets you're interested in.

    
por 29.09.2016 / 20:27