Назад | Перейти на главную страницу

VSFTP не работает через VPN

У меня есть служба FTP, работающая в течение некоторого времени с использованием vsftp, работающая в пассивном режиме без проблем.

Недавно я настроил VPN с помощью openvpn, насколько мне известно, я все настроил правильно. Я могу подключаться к серверам, используя локальный IP-адрес и т. Д. (Включая FTP-сервер), и просматривать Интернет.

По какой-то причине я не могу использовать FTP через VPN, я могу подключиться и войти в систему, но когда клиент (filezilla) выдает СПИСОК, он зависает. Я считаю, что это проблема где-то в пассивном режиме, хотя я могу подключиться к FTP с других серверов внутри сети (используя пассивный режим).

У кого-нибудь было это раньше или есть идеи о том, что я, возможно, пропустил?

К вашему сведению, это в AWS VPC с использованием Cent OS 6.5!

Спасибо!

Журнал FTP, приветственное сообщение, имя пользователя и внешний IP заменены на #;

Thu Feb 19 17:03:24 2015 [pid 29762] CONNECT: Client "10.0.0.17"
Thu Feb 19 17:03:24 2015 [pid 29762] FTP response: Client "10.0.0.17", "220 Welcome to #############."
Thu Feb 19 17:03:24 2015 [pid 29762] FTP command: Client "10.0.0.17", "AUTH TLS"
Thu Feb 19 17:03:24 2015 [pid 29762] FTP response: Client "10.0.0.17", "530 Please login with USER and PASS."
Thu Feb 19 17:03:24 2015 [pid 29762] FTP command: Client "10.0.0.17", "AUTH SSL"
Thu Feb 19 17:03:24 2015 [pid 29762] FTP response: Client "10.0.0.17", "530 Please login with USER and PASS."
Thu Feb 19 17:03:24 2015 [pid 29762] FTP command: Client "10.0.0.17", "USER ##############"
Thu Feb 19 17:03:24 2015 [pid 29762] [##############] FTP response: Client "10.0.0.17", "331 Please specify the password."
Thu Feb 19 17:03:25 2015 [pid 29762] [##############] FTP command: Client "10.0.0.17", "PASS <password>"
Thu Feb 19 17:03:25 2015 [pid 29761] [##############] OK LOGIN: Client "10.0.0.17"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "230 Login successful."
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP command: Client "10.0.0.17", "SYST"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "215 UNIX Type: L8"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP command: Client "10.0.0.17", "FEAT"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "211-Features:"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", " EPRT??"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", " EPSV??"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", " MDTM??"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", " PASV??"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", " REST STREAM??"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", " SIZE??"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", " TVFS??"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", " UTF8??"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "211 End"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP command: Client "10.0.0.17", "OPTS UTF8 ON"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "200 Always in UTF8 mode."
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP command: Client "10.0.0.17", "PWD"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "257 "/""
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP command: Client "10.0.0.17", "TYPE I"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "200 Switching to Binary mode."
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP command: Client "10.0.0.17", "PASV"
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "227 Entering Passive Mode (#############)."
Thu Feb 19 17:03:25 2015 [pid 29766] [##############] FTP command: Client "10.0.0.17", "LIST"
Thu Feb 19 17:04:25 2015 [pid 29766] [##############] FTP response: Client "10.0.0.17", "425 Failed to establish connection."

В пассивном режиме FTP сервер отправляет обратно клиенту IP-адрес и порт, к которому клиент должен подключиться для открытия соединения для передачи данных (для передачи файлов и списков каталогов).

Если это другой IP-адрес, чем тот, который вам действительно нужен для подключения к серверу (например, из-за NAT), соединение не будет установлено.

Если NAT происходит в сети на стороне сервера, FTP-сервер должен быть настроен с его внешним IP-адресом.

Как и в вашем случае NAT происходит в сети на стороне клиента (если я правильно понимаю), изменение не может быть выполнено на стороне сервера, так как это нарушит работу FTP-сервера для всех других пользователей.

Интеллектуальные NAT будут пытаться проверить FTP-трафик и преобразовать IP-адрес в PASV ответ. Но это не сработает, если FTP-трафик зашифрован (TLS / SSL), надеюсь, и ваш случай тоже!

Единственное известное мне альтернативное решение - заставить FTP-клиент игнорировать IP-адрес в PASV ответ и использовать исходный IP-адрес, используемый для подключения к FTP-серверу.

Например, с клиентом WinSCP FTP / SFTP вы делаете это, устанавливая параметр сеанса Принудительный IP-адрес для подключений в пассивном режиме к На:
https://winscp.net/eng/docs/ui_login_ftp

(Я автор WinSCP)

Еще один вариант использования FTP-клиента, поддерживающего более современные EPSV команда (вместо PASV), поскольку это позволяет серверу предоставлять только порт (а не IP-адрес), поэтому проблем не возникает. Vsftpd поддерживает это.

См. (Мою) статью о Пассивный режим FTP с точки зрения конфигурации сети.