Hum c'est bizarre ton histoire, si tu fini en erreur 401 (acces denied) c'est que tu n'arrive pas sur la bonne machine, donc problème de routage.
Il faut bien comprendre ce qu'est le DNAT et le SNAT.
Le DNAT substitue, sur un paquet entrant, ton IP de destination par celle que tu indique dans --to-dest
Dans ton cas de figure, un paquet envoyé vers ton IP_Publique:6204 est transmis à 10.8.0.2:6204, jusque la tout va bien.
Le SNAT substitue, sur un paquet sortant, ton IP source par celle que tu indique dans --to-source, cela n'aura d'utilisé que si tu as besoin de te connecter à ton IP publique depuis ton sub VPN (10.8.0.0). Oublie ta règle SNAT pour le moment.
De plus, tes règles iptables semble mal formatées.
Je te conseillerai plutôt les règles de routage suivantes :
iptables -A PREROUTING -i interface_wan -p tcp -m tcp --dport 6204 -j DNAT --to-destination 10.8.0.2:6204
Ta règle de FORWARD est bizarre. Essaye plutot avec ça.
iptables -A FORWARD -d 10.8.0.2/32 -p tcp -m tcp --dport 6204 -j ACCEPT
Ton routage entrant devrait fonctionner juste avec ces deux règles.
Il est bien aussi d'activer les logs iptables pour savoir si ton paquet est DROP.
Change la dernière ligne de chaque type qui correspond à ta politique par défaut afin de les rediriger vers un PIPE.
exemple :
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
en :
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP2
iptables -A FORWARD -j LOG_DROP3
et ajoute les règles suivantes à ton fichier :
iptables -A LOG_DROP -m limit --limit 5/min -j LOG --log-prefix "[IPTABLES_IN_DROP] : "
iptables -A LOG_DROP -j DROP
iptables -A LOG_DROP2 -m limit --limit 1/sec -j LOG --log-prefix "[IPTABLES_OUT_DROP] : "
iptables -A LOG_DROP2 -j DROP
iptables -A LOG_DROP3 -m limit --limit 1/sec -j LOG --log-prefix "[IPTABLES_FORWARD_DROP] : "
iptables -A LOG_DROP3 -j DROP
Ensuite ajoute une règle de filtrage des logs dans /etc/rsyslog.d/iptables.conf
:msg, contains,"[IPTABLES_OUT_DROP] : " -/var/log/firewall/OUT_firewall.log
:msg, contains,"[IPTABLES_FORWARD_DROP] : " -/var/log/firewall/FW_firewall.log
:msg, contains,"[IPTABLES_IN_DROP] : " -/var/log/firewall/IN_firewall.log
:msg, contains,"[IPTABLES_OUT_DROP] : " stop
:msg, contains,"[IPTABLES_FORWARD_DROP] : " stop
:msg, contains,"[IPTABLES_IN_DROP] : " stop
& stop
Recharge la configuration rsyslog :
/etc/init.d/rsyslog restart
Tu trouveras les logs firewall dans/var/log/firewall/