O link na parte inferior da sua pergunta é direcionado a pessoas que têm vários IPs de saída. Desde que você está tentando enviar pacotes através de eth0 (192.168.1.5) - você não tem aliases de IP e você não tem vários IPs de saída, mas um único IP.
Então, digamos que o ppp0 tenha um intervalo de ip: 10.100.100.0/24, o pacote inicial conectado ao seu host será parecido com:
| SRC IP | DST IP |
| 10.100.100.10 | 10.100.100.1 |
Sua primeira regra está correta:
-t nat -A PREROUTING -p tcp --dport 5000 -j DNAT --to-destination 192.168.1.10:5000
Assim, sempre que uma máquina por trás do ppp0-ppp3 tentar contatar seu host (192.168.1.5) na porta 5000, os pacotes serão reencaminhados para 192.168.1.10. O pacote será parecido com:
| SRC IP | DST IP |
| 10.100.100.10 | 192.168.1.10 |
Agora, você está roteando pacotes pelo seu host, então é necessário ativar o encaminhamento de IP:
sysctl -w net.ipv4.ip_forward=1
Mas, quando o destino (192.168.1.10) receber o pacote, ele verá a origem 10.100.100.10 e retornará o pacote ao seu próprio gateway padrão. O que você pode fazer é configurar rotas estáticas em 192.168.1.10 que informarão ao host que pacotes originados de 10.100.100.0/24 são roteados via 192.168.1.5, algo como:
ip route add 10.100.100.0/24 via 192.168.1.5
Dessa forma, você não precisaria adicionar nenhuma regra de POSTROUTING, porque o destino (192.168.1.10) saberia automaticamente para onde devolver pacotes.
Mas, se essa solução não for viável por qualquer motivo (ou você pessoalmente não gostar), a próxima coisa que eu sugiro é usar o MASQUERADE no eth0:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
A solução DNAT provavelmente também funcionará. Apenas certifique-se de que sua cadeia FORWARD está configurada para ACCEPT e não filtre pacotes em seu caminho pelo seu host.