227 entering passive mode как исправить
Установил сабж. Вот настройки:
Как видно со скрина порт через роутер прокинут 21-й, в брандмауэре винды есть правило разрешающее любые входящие соединения по 21 порту. 2ip.ru порт 21й видит из инета, пытается удаленно товарищ конектиться и вот что выдает. При отключении брандмауэра все работает, как сделать чтобы работало с включеным брандмауэром?
(000023)04.11.2012 23:57:42 — (not logged in) (718.327.54.11)> Connected, sending welcome message.
(000023)04.11.2012 23:57:42 — (not logged in) (718.327.54.11)> 220-FileZilla Server version 0.9.41 beta
(000023)04.11.2012 23:57:42 — (not logged in) (718.327.54.11)> 220-written by Tim Kosse (Tim.Kosse@gmx.de)
(000023)04.11.2012 23:57:42 — (not logged in) (718.327.54.11)> 220 Please visit http://sourceforge.net/projects/filezilla/
(000023)04.11.2012 23:57:42 — (not logged in) (718.327.54.11)> USER rmt
(000023)04.11.2012 23:57:42 — (not logged in) (718.327.54.11)> 331 Password required for rmt
(000023)04.11.2012 23:57:42 — (not logged in) (718.327.54.11)> PASS ******
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> 230 Logged on
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> opts utf8 on
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> 200 UTF8 mode enabled
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> PWD
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> 257 "/" is current directory.
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> CWD /drivers/
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> 250 CWD successful. "/drivers" is current directory.
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> TYPE A
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> 200 Type set to A
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> PASV
(000023)04.11.2012 23:57:42 — rmt (718.327.54.11)> 227 Entering Passive Mode (192,168,1,2,200,115)
(000023)04.11.2012 23:59:43 — rmt (718.327.54.11)> 421 Connection timed out.
(000023)04.11.2012 23:59:43 — rmt (718.327.54.11)> disconnected.
Цитата:
227 Entering Passive Mode (192,168,1,2,200,115) |
Цитата:
FTP может работать в активном или пассивном режиме, от выбора которого зависит способ установки соединения. В активном режиме клиент создаёт управляющее TCP-соединение с сервером и отправляет серверу свой IP-адрес и произвольный номер клиентского порта, после чего ждёт, пока сервер не запустит TCP-соединение с этим адресом и номером порта. В случае, если клиент находится за брандмауэром и не может принять входящее TCP-соединение, может быть использован пассивный режим. В этом режиме клиент использует поток управления, чтобы послать серверу команду PASV, и затем получает от сервера его IP-адрес и номер порта, которые затем используются клиентом для открытия потока данных с произвольного клиентского порта к полученному адресу и порту. |
В данном случае ваш сервер говорит клиенту, что надо коннектиться на 192.168.1.2 и порт 200*256 + 115 = 51315, который закрывает ваш файерволл. мало того, что выдается внутренний IP (может, конечно, его ваш умный роутер переделывает во внешний), но порт то закрыт для передачи данных, да и проброса его через роутер, скорее всего, нет (правда тут, опять же, роутер может быть умным и считать эту информацию из общения с ftp сервером).
нужно разрешать в файерволле (и проброс этого же диапазона в роутере) некий диапазон открытых портов и сказать ftp серверу ими пользоваться. либо использовать активный режим, когда сервер к вам коннектится, но возникнут проблемы в случае NAT у клиента
еще нескромный вопрос — для чего вам файерволл и NAT одновременно? боитесь чего то в локальной сети?
и почитайте, все же, как работает FTP — там не один порт используется.
Цитата:
FileZilla динамически меняет номера портов при разных подключениях |
я поэтому и сказал — диапазон портов. вы можете указать, из какого диапазона сервер должен выбирать порты
Status: Resolving address of 79.1х.х.х
Status: Connecting to 79.1х.х.х
Warning: The entered address does not resolve to an IPv6 address.
Status: Connected, waiting for welcome message.
Error: Connection timed out
порты 21-20 и диапазон в программе и NAT проброшены.
пробовал отключать фаервол в TI результат 0
TheBarmaley спасибо но там в основном вопросы по клиенту хорошо продолжим там
FTP сервер возвращает ошибку 227
при чём тут ошибка? мне же и нужно в пассивный режим зайти. ладно, едем дальше.
Опыта работы с ftp нет, нашел какие то исходники, собрал проект, выдаётся вышеупомянутое исключение. Упростил код до невозможности, ошибка осталась. Странность ещё в том, что в totalCommander соединение удаётся,
пробовал так же ставить
Получил ошибку 500, синтаксическую, мол, команда не опознана. Буду благодарен, если мне объяснят, что я делаю не так)
Ошибка «227 Переход в пассивный режим» / «В соединении отказано» при загрузке с локального FTP-сервера в эмуляторе Android.
Я пытаюсь загрузить файл со своего локального сервера FileZilla с Java FTPSClient , работающим в эмуляторе Android.
Я написал этот вспомогательный код для загрузки одного файла:
Я называю эту функцию так:
Но я продолжаю получать эту ошибку:
Я уже пробовал использовать enterLocalActivemode() вместо enterLocalPassivmode() , но это не помогло. FTP-сервер использует протокол TLS и работает на моем локальном компьютере. Подключаюсь к нему через 10.0.2.2 (шлейф Android). Как я могу это исправить?
Ответы 1
Хотя я не знаком с эмулятором Android, я предполагаю, что вам нужно подключиться к 10.0.2.2, чтобы подключиться к хост-машине эмулятора.
В пассивном режиме FTP сервер отправляет обратно IP-адрес, к которому FTP-клиент должен подключиться для передачи файла (или списка каталогов). Когда ваш FTP-сервер прослушивает 127.0.0.1, он отправляет этот IP-адрес обратно. Но 127.0.0.1 относится к (эмулированному) хосту Android в контексте вашего кода Android. Следовательно, «в соединении отказано».
Это очень похоже на обычную проблему с подключением к FTP-серверу за NAT. См. FTP-сервер, работающий на порте 2000 через NAT, не работает в пассивном режиме
И решение, следовательно, такое же:
- В интерфейсе сервера FileZilla перейдите к Правка> Настройки> Настройки пассивного режима> Для IPv4> IP-адрес внешнего сервера для передачи в пассивном режиме. И введите 10.0.2.2.
- Возможно, вам также нужно будет снять галочку с «Не используйте внешний IP для локальных подключений».
Очевидно, это, в свою очередь, делает FTP-сервер непригодным для использования обычными клиентами.
И вы правильно прокомментировали, эта проблема возникает только при подключении из эмулятора Android к FTP-серверу, работающему на хосте эмулятора.