У меня большая проблема. Позволь мне объяснить. Я настроил две машины, одну под названием «fw», которая является брандмауэром, а другую, подключенную к этой машине, называемую «сервером», обе системы Debian 10 buster. Машина fw использует iptables для маскировки IP. "Общественный IP": 88.20.100.2, локальный диапазон: 192.168.150.0/24
Это конфигурация моего FTP-сервера, vsftpd для пассивного режима.
pasv_enable = Да
pasv_max_port=2000
pasv_min_port=1000
pasv_address=88.20.100.2
Ничего особенного. Это работает, если в брандмауэре включен этот iptables (enp0s9 = интернет, enp0s3 = локальная сеть)
iptables -P УДАЛЕНИЕ ВПЕРЕД
iptables -A FORWARD -p tcp --dport 21 -i enp0s9 -o enp0s3 -d 192.168.150.98 -j ПРИНЯТЬ
iptables -A FORWARD -p tcp --sport 21 -i enp0s3 -o enp0s9 -s 192.168.150.98 -j ПРИНЯТЬ
iptables -A FORWARD -p tcp --dport 1000:2000 -d 192.168.150.98 -i enp0s9 -o enp0s3 -j ПРИНЯТЬ
iptables -A FORWARD -p tcp --sport 1000:2000 -s 192.168.150.98 -i enp0s3 -o enp0s9 -j ПРИНЯТЬ
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 --назначение 192.168.150.98:21
iptables -t nat -A PREROUTING -p tcp --destination-port 1000:2000 -j DNAT --to-destination 192.168.150.98
Моя проблема в том, что я хочу иметь возможность открывать порты 1000:2000 только тогда, когда соединение связано с FTP-сервером, а не всегда. Я пробовал с -m state и -m conntrack, но думаю, что сделал что-то не так. Есть идеи? Спасибо