Про вроде бы корректной настройке ftp сервера vsftpd по какой-то причине не работал пассивный режим. Аутентификация проходила успешно, а дальше таймауты и прочие ошибки. При это в iptables разрешен 21 порт и related соединения. В логах ничего интересного не было, ради эксперимента заменил vsftpd на proftpd, но результата это не дало. Однако, решение оказалось достаточно банальным 🙂
Как оказалось, iptables в стандартной конфигурации не умеет корректно отслеживать related соединения для протокола ftp и требуется его небольшая донастройка, а именно нужно добавить загрузку вспомогательного модуля ip_conntrack_ftp, что решается добавлением в файл /etc/sysconfig/iptables-config в переменную IPTABLES_MODULES имени требуемого модуля p_conntrack_ftp. Таким образом, если других модулей вам не требуется (по умолчанию тут вообще пусто), этот параметр будет выглядеть следующим образом:
IPTABLES_MODULES=»ip_conntrack_ftp»
Всё, после этого достаточно перезапустить iptables командой service iptables reload и убедиться, что соответствующий модуль загружается:
[root@server sysconfig]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
iptables: Loading additional modules: ip_conntrack_ftp [ OK ]
[root@server sysconfig]#