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