Eu finalmente encontrei a solução. A ideia dada por @MrMajestyk me ajudou. Aqui está a minha solução.
Primeiro, é necessário usar ebtables para modificar o endereço MAC de destino do pacote recebido para que o código da pilha IP receba o pacote. Se eu não fizer isso na camada Ethernet, a camada de rede nunca receberá os quadros, exceto o multicast, broadcast e unicast dedicado. E se a camada de rede nunca receber todos os pacotes, não será possível manipulá-los com iptables . Mas para essa regra de ebtables funcionar, é necessário criar uma interface de ponte com a interface de entrada (lado do hub) nela.
sudo ifconfig eth0 10.9.0.5
sudo brctl addbr br0
sudo brctl addif br0 eth0
sudo ifconfig br0 up
Em seguida, podemos criar as regras ebtables .
sudo ebtables -t broute -A BROUTING -i eth0 -j redirect --redirect-target DROP
Depois, posso usar o iptables para espelhar meu tráfego recebido em direção ao meu ponto remoto da VPN (10.9.0.2).
sudo iptables -t raw -A PREROUTING -i eth0 -j TEE --gateway 10.9.0.2
Por favor, note que eu uso a interface de túnel (tun) em vez da ponte ethernet (tap). Depois disso, sou capaz de farejar o ponto remoto 10.9.0.2 e posso ver todo o tráfego (exceto ARP, por exemplo).
Eu posso até filtrar meu tráfego, mas é necessário fazê-lo dentro da tabela bruta, antes de seguir antes as regras -j TEE --gateway. Procure por exemplo minhas entradas brutas e pré-formatadas do iptables.
-A PREROUTING -p vrrp -j DROP
-A PREROUTING -p ospf -j DROP
-A PREROUTING -d 255.255.255.255/32 -j DROP
-A PREROUTING -p udp --sport 53 -j DROP
-A PREROUTING -p tcp --sport 53 -j DROP
-A PREROUTING -i eth0 -j TEE --gateway 10.9.0.2
Obrigado pela sua ajuda