O --tee
flag não faz parte da cadeia DNAT, faz parte do ROUTE. Você só pode usá-lo após uma declaração de -j ROUTE
. Você pode obter ajuda específica do iptables sobre o assunto assim:
$ iptables -j ROUTE help
Eu estava olhando para o seu comando iptables, e isso não faz sentido para mim. Por que você está tentando combinar com a origem e a porta de origem de um pacote quando, na sua pergunta, você disse "packegs received on port"? Você está tentando dividir o tráfego de entrada para atingir duas portas ou obter a saída de uma porta e vinculá-la à entrada de outra?
Se o primeiro, há realmente dois passos. Você não pode usar tee para obter uma cópia do pacote E mangle o pacote para alterar os números de porta ao mesmo tempo. Você pode tentar isso em duas etapas, primeiro enviando a si mesmo uma cópia duplicada do pacote, depois combinando apenas a cópia e desconfigurando a porta de destino. AVISO: não testado, considere este pseudo-código:
$ sudo iptables -A PREROUTING -t mangle -p tcp -s !127.0.0.1/32 --dport 8001 -j ROUTE --gw 127.0.0.1 --tee
$ sudo iptables -A POSTROUTING -t nat -p tcp -s 127.0.0.1/32 --dport 8001 -j DNAT --to 127.0.0.1:8002