O encaminhamento de porta NAT redirecionará os pacotes em vez de duplicá-los. No seu exemplo, o tráfego de chamadas não deve chegar à camada de aplicativo em B:2222 , mas ser redirecionado diretamente para C:3333 .
Provavelmente você deseja analisar a TEE target de iptables e fazer a duplicação em um host intermediário ao longo da rota de rede de A.
C
/
A - X - B
Em X , duplique os pacotes:
iptables -t mangle -A PREROUTING -d B -p udp --dport 2222 -j TEE --gateway C
Em C , redirecione o tráfego duplicado para o ouvinte local:
iptables -t nat -A PREROUTING -d B -p udp --dport 2222 -j DNAT --to-destination C:3333
A razão para o host intermediário é que normalmente o linux não permite que você mexa com a rota do tráfego destinado a uma interface local. Eu não tentei este TEE setup especificamente, mas normalmente o tráfego para uma interface local irá cortar as regras de roteamento, então nunca vai sair em --gateway C . Eu estou supondo que você iria acertar o mesmo problema com o TEE tentando encaminhar o tráfego para B out, mas ymmv.
O próximo problema pode ser o próprio aplicativo. Tem certeza de que o protocolo suporta simplesmente tocar e reproduzir o fluxo de rede duplicado?
Se o fluxo RTP puder ser captado por aplay on C , então parece que você também tem o seu caminho errado. Você deseja que nc canalize para aplay .
nc -l -u 3333 | aplay