PDA

Просмотр полной версии : [FAQ] Не выполняется команда PORT при подключении к FTP


Neto
26.10.2005, 22:56
Здравствуйте!
Возникла проблема с подключением по фтп к казахскому серверу.
При попытке подключение логин и пас принимаются, но потом, при попытке чтения каталога, выскакивает сообщение -
1:500 Illegal PORT Comman - Команда PORT не выполнена :
_http://72.36.228.3/~dewave/Error.jpg
Люди, которые мне данные по этому фтп предупредили, что :
-------------------------------------------
1. Доступ на сайт без использования firewall из интернет (dial up
соединение) проходит нормально
2. В случае применения firewall (у нас ATGUARD) его необходимо настраивать на полное разрешение прохождения
пакетов на ftp://www.наш_сайт.kz , иначе не проходит ftp - команда LIST.
-------------------------------------------
У меня на компе интернет-связь xDsl, стенка стоит Агнитум Аутпост, винда ХР SP2 (фаервол винды отключен).
Я пробoвала полностью выгружать свою стенку (Агнитум Аутпост), но все равно это ничем не помогло, все так же появляется ошибка при попытке чтения каталога в ходе подключения к фтп.
Кто-то может мне подсказать как решить данную проблему?
Заранее очень благодарна за помощь. :молись:

С наилучшими пожеланиями,
Neto

FantomIL
27.10.2005, 10:59
Neto
ты, часом, не браузером пытаешься соединиться с ФТП?
Кстати, а связь осуществляется посредством чего? Просто DSL-модема или раутера? Если раутер, то проверь, включен ли НАТ. Возможно, что у тебя адрес виртуальный, а в таком случае, в команде PORT нужно виртуальный адрес менять на реальный.
А вообще, поставь себе ФТП-клиент и отметь в настройках галку passive mode. В этом случае второе соединение тоже инициирует клиент и команда PORT не используется.

Neto
27.10.2005, 12:07
Neto
ты, часом, не браузером пытаешься соединиться с ФТП?
Нет, не браузером конечно, TotalComander-ом, ну и другими фтп-клиентами пробовала подклчючатся, тоже не получилось.

Neto
Кстати, а связь осуществляется посредством чего? Просто DSL-модема или раутера? Если раутер, то проверь, включен ли НАТ. Возможно, что у тебя адрес виртуальный, а в таком случае, в команде PORT нужно виртуальный адрес менять на реальный.
Связь осуществляется посредством просто DSL-модема.

Neto
А вообще, поставь себе ФТП-клиент и отметь в настройках галку passive mode. В этом случае второе соединение тоже инициирует клиент и команда PORT не используется.
ФТП-клиенты у меня стоят (как я писала выше), подключатся пробовала как с галкой passive mode, так и без этой галки, эффект одинаковый. :(

Еще хотела внести некоторые уточнения по поводу режима passive mode. Дело в том, все фтп-соедениения у меня работают, только с галочкой passive mode (такая картина наблюдается с того времени, как я с диалапа пересела на DSL, на диалапе этот режим работал нормально).
Сначала, когда пересела на DSL, то никак не могла понять, почему не пашут все фтп-соединения, общалась с техподдержкой провайдеров неоднократно, они мне сначала говорили, что не знают в чем дело, но потом, один более опытный человек посоветовал попробовать убрать галочку passive mode с настроек фтп-клиента, я убрала, и увидела, что фтп-соеданиения заработали. Он сказал, что б я в таком режиме и работала с фтп всеми, и все нормально тогда будет. Ну, вот я и работала так... действительно все номально было со всеми фтп (в моей практике их было великое множество), пока вот не столкнулась с этим казахским... :( тут-то и возникли проблемы... :(

Borland
26.02.2012, 17:55
Топик древний, но вопрос так и продолжает возникать, посему отвечу-таки на него.
Есть 2 режима работы ftp-сервера: активный и пассивный.
В обоих режимах сначала клиент соединяется с сервером (как правило - по порту 21, "ftp command", хотя номер порта может быть изменён).
Далее начинается разница: в активном режиме клиент даёт серверу команду port, означающую "установить соединение ftp-data на адрес W.V.X.Y на порт Z", в качестве W.V.X.Y указывая свой IP-адрес, а в качестве Z-свободный порт. И, отдав команду - ждёт пока сервер установит соединение, после чего начинается собственно передача данных. В пассивном режиме клиент даёт команду серверу "перейти в пассивный режим", после чего сервер сообщает клиенту адрес и порт по которым уже клиент организует соединение ftp-data.
Если на сервере и на клиенте присутствует реальный "белый" IP-адрес - оба режима будут работать одинаково хорошо. "Чудеса" начинаются, когда один (или оба) из них находится за файрволлом с NAT, т.е. не имеет собственного внешнего IP. Здесь возможность работы протокола ftp целиком и полностью определяется возможностями настройки сервера и клиента, а также NAT.
Если на стороне клиента "белый" IP отсутствует как класс (провайдер выдаёт "серый" адрес и выпускает в интернет через свой NAT) - клиент никак не сможет работать в active mode (похоже, это и есть случай топикстартера). Если "белый" адрес получает DSL/Ethernet-роутер клиента - для работы в active mode требуется спец. настройка NAT на роутере ("проброс портов" для соединения) и настройка клиента (дабы вместо своего внутреннего адреса он отдавал в команде port "белый" адрес роутера и номер "проброшенного" порта; это возможно не для всех клиентов).
Если за NAT находится сервер - требуются опять же настройки сервера на "белый" IP и "проброс" используемых для работы портов (не все серверы умеют работать из-за NAT вообще).
Охватить всё многообразие настроек клиентов/серверов/NAT для конкретных случаев в рамках одного поста не представляется возможным. Задавайте конкретные вопросы - ответим. :)

netluser
10.11.2016, 16:10
если дсл модем имеет на wan интерфейсе белый(реальный, маршрутизируемый,внешний) ip адрес- то проблема решаема.
1- в модеме пробросить с wan интерфейса диапазон портов, например 40100-40200 на адрес компьютера в локальной сети
2- в total commander,е указать этот диапазон в настройках ftp "режим роrt: использовать только порты:
3- там-же в настройках указать внешний ip адрес, присвоенный wan интерфейсу модема
4- если этот адрес может меняться при переподключении к инету(динамический) то вместо него указать адрес php скрипта для определения внешнего адреса, например http://ip.filezilla-project.org/ip.php