Кажется, вы запускаете свой FTP-клиент на хосте, который подключен к серверу OpenVPN, и ваш трафик направляется внутри VPN (так что для внешнего мира ваш IP-адрес источника является одним из внешнего интерфейса вашего сервера OpenVPN ).
Это правда?
Если нет .... пожалуйста, сообщите нам детали.
Если да, то ваша проблема относится именно к "коробке" OpenVPN, которая:
правильно NAT NAT ваши "стандартные" IP-соединения (и, на самом деле, вы можете успешно подключиться к удаленному FTP-серверу)
НЕ должным образом NAT-протокол FTP (который, к сожалению, не очень NAT-дружественный и, для NAT, требует специальных процедур).
Чтобы решить вашу проблему, вы должны убедиться, что соответствующий модуль ядра загружен на ваш NAT-блок (OpenVPN). В моем Ubuntu (и, вероятно, также на CentOS 6):
# modprobe nf_conntrack_ftp
Такой модуль будет внимательно следить за всем трафиком, проходящим по "контрольному" соединению FTP (которое вы можете установить, аутентифицировать и "запускать" передачу файлов), чтобы проверить, какие клиентские порты ваш FTP-клиент объявил использовать для файла. -передача и правильное "искажение" управляющего соединения (чтобы "подделать" такие порты, навязывая порты NAT).
Другими словами:
- без вышеуказанных модулей:
- 1) FTP-клиент устанавливает FTP-соединение с удаленным сервером;
- 2) FTP-клиент хочет начать передачу файлов (простое "ls"). В качестве таких...
- 3) ...FTP-клиент "открывает" порт TCP, чтобы FTP-сервер мог подключиться к этому порту для передачи содержимого;
- 4) ...FTP-клиент "сообщает" FTP-серверу, какой порт был открыт, используя контрольное соединение, установленное в пункте 1)
- 5) к сожалению, без "специальной обработки" ваш удаленный FTP-сервер, который правильно читает / записывает данные по соединению, установленному в пункте 1), получает IP / PORT пары, указанный на шаге 4), который содержит ваш "частный" IP-адрес.
- 6) поэтому FTP-сервер видит, что управляющее соединение происходит с IP, а соединение с данными связано с другим IP. Он (правильно) не любит такой сценарий, поскольку может привести к некоторому сценарию отражения / DDOS. Таким образом, он отправляет вам сообщение об ошибке, которое вы видите.
,
- с загруженным выше модулем
- все как выше, кроме шага 5. Такой шаг стал ...
- 5) Ваш NAT-ящик, благодаря модулю conntrack_ftp, открывает собственный TCP-порт (на внешнем интерфейсе) и готовится к получению обратно данных FTP-трафика по таким портам. Получив его, ретранслируйте такой трафик обратно на FTP-клиент. Кроме того, «контрольное соединение» искажено, поэтому для замены пары IP/PORT, отправленной вашим клиентом, на IP/PORT NAT-коробки.
- ... и благодаря этому все должно работать без сбоев :-) (... или, по крайней мере, я надеюсь).