FTP pasivo no funciona detrás de nat

FTP pasivo no funciona detrás de nat

Tengo un gran problema. Dejame explicar. He configurado dos máquinas, una llamada "fw" que es el firewall y la otra conectada a esta que se llama "servidor", ambas son sistemas Debian 10 buster. La máquina fw usa iptables para enmascarar la IP. "IP pública": 88.20.100.2, rango local: 192.168.150.0/24

Esta es la configuración de mi servidor FTP, vsftpd para tener modo pasivo

pasv_enable=Yes
pasv_max_port=2000
pasv_min_port=1000
pasv_address=88.20.100.2

Cualquier cosa especial. Funciona si tengo este iptables habilitado en el firewall (enp0s9 = internet, enp0s3 = LAN)

iptables -P FORWARD DROP
iptables -A FORWARD -p tcp --dport 21 -i enp0s9 -o enp0s3 -d 192.168.150.98 -j ACCEPT
iptables -A FORWARD -p tcp --sport 21 -i enp0s3 -o enp0s9 -s 192.168.150.98 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1000:2000 -d 192.168.150.98 -i enp0s9 -o enp0s3 -j ACCEPT
iptables -A FORWARD -p tcp --sport 1000:2000 -s 192.168.150.98 -i enp0s3 -o enp0s9 -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o enp0s9 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to-destination 192.168.150.98:21
iptables -t nat -A PREROUTING -p tcp --destination-port 1000:2000 -j DNAT --to-destination 192.168.150.98

Mi problema es que quiero poder abrir los puertos 1000:2000 sólo cuando la conexión esté relacionada con el servidor FTP, no siempre. Lo intenté con -m state y -m conntrack pero creo que hice algo mal. ¿Alguna idea? Gracias

información relacionada