Bueno pues ya está!! Conseguido. No ha sido de forma ortodoxa, pero funciona.
Primero, desactivamos las reglas propias, ya que mi experiencia me ha demostrado que son incompatibles con lo que quiero hacer.
/etc/init.d/firewall stop
/etc/init.d/firewall disable
Una vez hemos parado y desactivado sus reglas, vamos a limpiar iptables, lanzamos los siguientes comandos:
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
Ahora activamos el enmascaramiento de de paquetes y el NAT en la interfaz 3g:
iptables -t nat -A POSTROUTING -o 3g-wan -j MASQUERADE
Y ahora creamos nuestros propios nateos (como el del ejemplo de mi caso), 2222 público (WAN), al 22 local (LAN):
iptables -t nat -A PREROUTING -i 3g-wan -p tcp --dport 2222 -j DNAT --to 192.168.1.10:22
A mí me funciona muy bien, con conexiones TCP y con redirecciones UDP, si el puerto es igual en WAN y en LAN, bastará con no poner los ":puerto" al final de la IP del host de la LAN.
Por último he de recordar que, hasta donde yo sé, sólo se puede hacer con las conexiones de las 3 grandes (Movistar, Orange y Vodafone), ya que el resto no asignan una IP pública dedicada, sino que te dan una de un rango privado que está tras un NAT que hace el propio operador (hablo de Yoigo, Simyo, etc.).
Esto es todo; han sido cuatro meses, pero al final ha salido (no llevo todo este tiempo, sino que he tenido un hueco y me he puesto).
Espero que os sirva!!
Saludos!