Я установил сервер Vsftpd, прослушивающий порт 21 в ubuntu server. Я перенаправил порт в моем маршрутизаторе для перенаправления внешнего порта 8500 на внутренний порт 21, где мой сервер vsftpd слушает. Однако, когда я t Попытайтесь подключиться с помощью ftp-клиента, я вижу следующее сообщение в filezilla,
«Сервер отправил пассивный ответ с немаршрутизируемым адресом. Использование адреса сервера вместо "
Я читал, что это связано с нахождением за маршрутизатором. Но у меня никогда не было проблем с другими маршрутизаторами. По какой-либо причине я могу получить доступ к ftp извне при использовании одного маршрутизатора, но не другого?
FTP-протокол специфичен, так как использует два одновременных соединений, в отличие от других протоколов, таких как SSH, HTTP или SMTP, которые используют только один.
Поэтому код NAT на маршрутизаторе требует специальной обработки второго соединения в случае протокола FTP — его нельзя обрабатывать так же, как обычный другой протокол. У большинства маршрутизаторов есть эта функция (и у вас нет проблем с FTP на них), но у некоторых нет (и в этом случае у вас есть проблема).
В конфигурационном файле VSFtpd есть параметр pasv_address
, который можно использовать, чтобы сообщить VSFtpd о необходимости предоставления определенного IP-адреса для этого второго соединения, поэтому с его помощью можно обойти эту ошибку маршрутизатора.