Ответ 1
Проблема, я думаю, не в том, что FTP-сервер не поддерживает команду PORT
(она поддерживает), а в том, что ему не нравится IP-адрес/порт, который ваш FTP-клиент отправляет в команде PORT
.
PORT 172,16,133,11,146,168
... сообщает серверу подключиться по адресу 172.16.133.11, порт 37544 *. Интересной частью здесь является IP-адрес: это адрес RFC 1918 (т.е. адрес частной сети). Это, в свою очередь, говорит о том, что ваш FTP-клиент находится где-то в локальной сети и подключается к FTP-серверу с использованием публичного IP-адреса.
Этот удаленный FTP-сервер не может подключиться к частному сетевому адресу; по определению, RFC 1918 адрес не является общедоступным.
Таким образом, вполне возможно, что FTP-сервер пытается установить соединение с адресом/портом, указанным в вашей команде PORT
, происходит сбой, поэтому FTP-сервер не выполняет команду, говоря:
500 Illegal PORT command
Чтобы команда PORT
работала с этим FTP-сервером, вам необходимо определить публичный IP-адрес, к которому может подключиться этот сервер, чтобы получить доступ к вашему клиентскому компьютеру. Допустим, это адрес 1.2.3.4
. Затем вам нужно будет указать lftp
использовать этот адрес в команде PORT
, используя опцию ftp:port-ipv4
.
Однако есть вероятность, что общедоступный IP-адрес является адресом NAT/маршрутизатора/брандмауэра и что этот NAT/маршрутизатор/брандмауэр не позволяет маршрутизировать соединения из внешнего мира с портом с высоким номером (например, 37544) к машине в локальной сети. Это одна из проблем, связанных с активной передачей данных по FTP, т.е. С передачей данных по FTP, в которой используются команды PORT
(или EPRT
): они не считаются "дружественными к брандмауэру".
Надеюсь это поможет!
* - почему 146,168
переводятся в порт 37544?
Согласно FTP RFC959 эти параметры:
(...) 16-битный адрес порта TCP. Эта адресная информация разбита на 8-битные поля, и значение каждого поля передается в виде десятичного числа (в символьном строковом представлении).
146 dec = 10010010 bin = A
168 dec = 10101000 bin = B
A B
10010010 10101000 bin = 37544 dec