IPTABLES правило для FTP за NAT
У одного из клиентов был сервер на CentOS5, на котором среди прочего работал vsftpd для доступа к сайту по ftp.
При подключении с помощью FileZilla получаем следующее:
Status: Connection established, waiting for welcome message... Response: 220 (vsFTPd 2.1.2) Command: USER anonymous Response: 331 Please specify the password. Command: PASS ************** Response: 230 Login successful. Command: OPTS UTF8 ON Response: 200 Always in UTF8 mode. Status: Connected Status: Retrieving directory listing... Command: PWD Response: 257 "/" Command: TYPE I Response: 200 Switching to Binary mode. Command: PASV Response: 227 Entering Passive Mode (xxx,xx,xx,xxx,255,147). Command: LIST Error: Connection timed out Error: Failed to retrieve directory listing
Если из командной строки постучаться через команду ftp, то при попытки выполнить команду ls получаем 425 use PORT or PASМ first
У сервера "белый" IP адрес и все шаманства с кривыми портами, и добавлением pasv_enable=YES в конфиг результатов не дали.
Как оказалось нужно добавить модуль в ядро. Вся проблема решалась одной командой:
modprobe ip_conntrack_ftp