Você precisa usar uma regra FORWARD com PREROUTING. A razão é que a mudança para o IP de destino é feita antes que qualquer regra da tabela FILTER seja aplicada - verifique este gráfico a ordem em que as regras das diferentes tabelas de iptables são aplicadas aos pacotes.
Então, você precisaria do NAT no caminho e no encaminhamento para esse NAT. A retradução ao sair (se a conexão foi inicializada de fora enquanto endereça ppp0: 5000) será atendida pela regra DNAT.
iptables -A PREROUTING -t nat -i ppp0 -p tcp --dport 5000 -j DNAT --to 192.168.5.242:5000
iptables -A FORWARD -p tcp -d 192.168.5.242 --dport 5000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Você também precisa ativar o encaminhamento de IP, por si só; se você quiser apenas isso temporariamente (até o próximo desligamento do sistema), você pode ir com
echo 1 > /proc/sys/net/ipv4/ip_forward
Se você deseja ativar persistentemente o encaminhamento de porta, é necessário alterar o arquivo /etc/sysctl.conf
, alterando o valor de net.ipv4.ip_forward
para 1
.
Se você também quiser usar o NAT na saída, para que os computadores da sua rede privada possam alcançar o mundo externo, você pode usar
iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0
Observação: você não precisa de uma regra de encaminhamento para essa.
Para ver qual tabela contém quais regras, você pode usar
iptables -t [table] -S
para uma visão não estruturada das regras de [table] (FILTER NAT MANGLE são as tabelas de iptables; se você quiser FILTER, você não precisa de -t FILTER
já que FILTER é a tabela padrão para todas as chamadas do iptables) ou
iptables -t [table] -L
para uma visão das regras divididas nas cadeias da tabela.
Verifique as páginas man para uma visão REALMENTE detalhada do iptables - traga muito do tempo se você quiser ir mais fundo:)