Имя: Пароль:
IT
 
FTP.EXE и UserGate. Консольный FTP клиент работающий через proxy.
0 twilight5023
 
02.11.06
15:19
Итак, имеется задача, отправить из bat'ника файл по ftp на ftp.narod.ru, проблема в том, что соединение с интернетом происходит через proxy UserGate (установлен на машине с ip 192.168.0.39). Итак, если в ftp.exe соединяться с 192.168.0.39:21, то он соединяется с самим UserGate'ом:

ftp> open 192.168.0.39
Connected to 192.168.0.39.
220 Hi! Welcome on UserGate!
User (192.168.0.39:(none)):

Как ему сказать что я хочу на ftp.narod.ru - непонятно, в мануале тоже ничего не нашел.

Решил пойти другим путем создал portmap между 192.168.0.39:1121 <-> ftp.narod.ru:21 ... соединяемся и пробуем залить файл / посмотреть список файлов, что в данной ситуации все равно:

D:\>ftp
ftp> open 192.168.0.39 1121
Connected to 192.168.0.39.
220 ftp.narod.ru (Libra FTP daemon 0.17 20050906)
User (192.168.0.39:(none)): twilight5023
331 Password required
Password:
230 Logged in, proceed
ftp> ls
200 PORT command OK
150 Opening data connection
> ftp: get :Connection reset by peer

Пробуем использовать пассивный режим:

D:\>ftp
ftp> open 192.168.0.39 1121
Connected to 192.168.0.39.
220 ftp.narod.ru (Libra FTP daemon 0.17 20050906)
User (192.168.0.39:(none)): twilight5023
331 Password required
Password:
230 Logged in, proceed
ftp> literal pasv
227 Entering passive mode (213,180,199,126,203,6)
ftp> ls
200 PORT command OK
150 Opening data connection
> ftp: get :Connection reset by peer

Тоже не работает, data connection не открывается. В чем причина не пойму... Помогите разобраться либо с этим, либо посоветуйте консольный ftp клиент, который умеет работать через http proxy. Тот же плагин к Far'у - FarNavigator (ProxyFTP) у меня замечательно работает через UserGate, но нужно что-нибудь консольное...
1 demonas001
 
02.11.06
15:23
Не знаю - юзергейтом никогда не пользовался - а там что нет режима "прозрачного прокси"?
2 twilight5023
 
02.11.06
15:23
(1) Нет.
3 twilight5023
 
02.11.06
15:24
+2 По-крайней мере в UserGate 2.8
4 twilight5023
 
02.11.06
15:25
Здесь даже дело не в UserGate'е, нужен либо консольный FTP клиент умеющий работать через HTTP proxy, либо нужно разобраться почему он даже через portmap не хочет работать с ftp.narod.ru, потому что в случае portmap'а соединение все равно как бы прозрачным получается. А вот из логов видно, что data connection открывать он почему-то не хочет.
5 Obed
 
02.11.06
15:27
эта, поиском тут поищи, было как-то, я спрашивал... там что-то есть типа коннекта через прокси, если не найдешь, завтра гляну на работе, пиши в аську/мыло
6 twilight5023
 
02.11.06
15:28
(5) Да я смотрел уже... тут в основном обсуждали использование пассивного режима в ftp.exe, кто-то убежденно доказывал что его в нем нет (хотя literal pasv еще никто не отменял), вообщем ничего толкового я пока не нашел.
7 demonas001
 
02.11.06
15:36
а там нет опции в этом юзергейте типа перенаправлять все соединения на 21 порт на самого себя на 3128 (или какой там у тебя порт)? (ну типа прозрачного прокси только руками сделать). Так не работает?
8 Obed
 
02.11.06
15:36
(6) ща РАдмином гляну на работе
9 Obed
 
02.11.06
15:36
(7) 2.8 оч старая версия, там даже НАТа нету
10 demonas001
 
02.11.06
15:36
(9) я просто не юзал ни одной :)
11 Obed
 
02.11.06
15:38
тхтлист=СоздатьОбъект("Текст");
   тхтлист.Очистить();
   тхтлист.ДобавитьСтроку("open 192.168.0.2");
   тхтлист.ДобавитьСтроку("u17563@u17563.ftp.masterhost.ru");
   тхтлист.ДобавитьСтроку("не скажу :)");
   тхтлист.ДобавитьСтроку("cd /moonlight.ru/www/catalog_files/gfx");
   тхтлист.ДобавитьСтроку("ls /moonlight.ru/www/catalog_files/gfx """+КаталогВременныхФайлов()+"ftpFilelist.txt""");
   тхтлист.ДобавитьСтроку("quit");
   тхтлист.Записать(КаталогВременныхФайлов()+"ftpscr.tmp");
   тхтлист=СоздатьОбъект("Текст");
   тхтлист.Очистить();
   тхтлист.ДобавитьСтроку("@cls");
   тхтлист.ДобавитьСтроку("@echo off");
   тхтлист.ДобавитьСтроку("echo Подождите, идет загрузка списка картинок...");
   тхтлист.ДобавитьСтроку("ftp -s:"""+КаталогВременныхФайлов()+"ftpscr.tmp"">nul");
   тхтлист.ДобавитьСтроку("echo Загрузка завершена");
   тхтлист.Записать(КаталогВременныхФайлов()+"ftpscr.cmd");
12 Obed
 
02.11.06
15:39
вот есть у меня такая шняга.... ща гляну почему она работает :)
13 demonas001
 
02.11.06
15:42
(12) наверно потому что без прокси ftp -s:"""+КаталогВременныхФайлов()+"ftpscr.tmp"">nul")
14 Obed
 
02.11.06
15:44
+(12) точне работала на UG 2.8 или 2.6 не помню
15 twilight5023
 
02.11.06
15:46
(7) Так я же говорю... поднял portmap, 192.168.0.39:1121 <-> ftp.narod.ru:21, т.е. при коннекте на 192.168.0.39:1121 он соединяется напрямую с ftp.narod.ru - это же и видно по логам (читаем выше), даже pwd работает, показывается что мы в root'е, но data connection не устанавливает, просто скидывает соденение, т.е. закачать что-либо, скачать, просмотреть список файлов - не удается :(
16 Obed
 
02.11.06
15:47
(15) логи давай UG
17 gr13
 
02.11.06
15:47
насколько я знаю, narod использует только пассивный режим
поищи ссылки на темы, где я принимал участие, там не раз уже обсуждалась эта тема
18 Obed
 
02.11.06
15:49
(17) ты не прав, не только пассивный..... у меня ща актив работает
19 gr13
 
02.11.06
15:49
а ftp.exe не поддерживает пассивный режим)
точнее поддерживает, но как-то никто в это не верит)
20 demonas001
 
02.11.06
15:49
(17) -> (0)
230 Logged in, proceed
ftp> literal pasv
227 Entering passive mode (213,180,199,126,203,6)
21 twilight5023
 
02.11.06
15:49
(17) Читай внимательно кусок:

ftp> literal pasv
227 Entering passive mode (213,180,199,126,203,6)
ftp> ls
200 PORT command OK
150 Opening data connection
> ftp: get :Connection reset by peer

Пассивный режим устанавливается (по-крайней мере сервер говорит про это).
22 gr13
 
02.11.06
15:50
да?
23 twilight5023
 
02.11.06
15:50
(19) Ладно, черт с ним с ftp.exe ... кто что посоветует в качестве консольного ftp-клиента на замену ftp.exe?
24 gr13
 
02.11.06
15:50
угу) он у меня не заработал( сам помню, но сделай поиск, там был пример использования эксплорера для этого, а у него больше возможностей
25 gr13
 
02.11.06
15:52
(23) читай 24
26 Obed
 
02.11.06
15:53
(23) dialmail
27 Obed
 
02.11.06
15:54
+(26) для 1С
28 vde69
 
02.11.06
16:13
может 22 порт закрыт?

а по поводу настроек UG

FTP по http - на UG2.8 не работает в принцепе
кроме того необходимо включить FTP прокси,
может работать и в активном и в пассивном режиме а вот по поводу режима входа по моему SITE надо использовать
29 twilight5023
 
02.11.06
16:37
Хех... я вроде бы понял... ftp.exe все равно продолжает работу в активном режиме, дело в том, что при работе с ftp используется управляющее соединение FTP_COMM, а также канал передачи данных FTP_DATA, так вот, сейчас вычитал что управляющее соединение действительно происходит по 21-му порту, а вот передача FTP_DATA устанавливается по-умолчанию на 20-м порту TCP ... Вот что говорится про FTP_DATA:

Оно также относится к TCP-типу и устанавливается на 20-ом порту сервера, т.е. на единицу меньшем, чем порт управляющего соединения. Номер порта со своей стороны клиент выбирает самостоятельно и передает его серверу с помощью команды PORT. Эта команда имеет шесть параметров в виде десятичных чисел, которые разделены между собой запятыми.

Так что ответ сервера на pasv (227 Entering passive mode (213,180,199,126,203,6)) видимо следует воспринимать как IP и номера портов 203, 6 (?) по которым он хочет установить data соединение. Наверное их можно как-то переназначить с помощью port... нет, я сейчас заставлю этот ftp.exe пассивом быть ;))
30 twilight5023
 
02.11.06
16:40
+29:

В пассивном режиме клиент локально открывает два так называемых непривилегированных порта (N>1024 и N+1). Первый из них как обычно используется для организации информационного канала с 21-м портом сервера. Однако после соединения и авторизации на сервере клиент не посылает команду PORT, а вместо нее передает команду PASV (переход в пассивный режим работы). В результате, сервер сам открывает произвольный порт (P>1024) и передает информацию о нем с помощью команды PORT. Клиенту в этом случае остается только установить на него TCP-соединение, со своей стороны используя заведомо открытый локальный порт N+1.

Наверное все-таки не получится... сервер сообщает мне номер порта, но вот открыть его для usergate'а я видимо не смогу...
31 Fynjy
 
02.11.06
16:40
ИМХО: UserGate и FTP не совместимы.
Поставить паралельную проксю (winroute например и открыть на ней FTP)
32 twilight5023
 
02.11.06
16:47
Мдя... через port forwarding проблему точно не решить:

Your FTP client probably needs to run in passive mode (execute the passive command). FTP data connections carry the files being transferred. These connections occur on randomly selected TCP ports and can't be forwarded in general, unless you enjoy pain.

Я никак не enjoy pain, будем другие пути искать...
33 twilight5023
 
02.11.06
18:03
Уррра... я его победил... Все-таки с помощью FTP.EXE возможно работать с FTP через UserGate, и не говорите что это невозможно ;)) Итак, привожу лог команд:

D:\>ftp
ftp> open 192.168.0.39
Connected to 192.168.0.39.
220 Hi! Welcome on UserGate!
User (192.168.0.39:(none)): twilight5023@ftp.narod.ru
331 Password required
Password:
230 Logged in, proceed
ftp> ls
200 PORT command OK
150 Opening data connection
index.html
P3120165.jpg
IMG_2157.jpg
leto.jpg
schet_fakturi_11mai2006.rar
table.ert
egais3.ert
proxyftp.log
226 Transfer completed
ftp: 116 bytes received in 0,05Seconds 2,47Kbytes/sec
ftp> bye
221 Bye

Правда при попытке скачать бинарный файл он приходит битым, но видимо "косяк" в методе передачи файла, текстовые вроде нормально. Сейчас еще покручу...
34 twilight5023
 
02.11.06
18:05
Во...

ftp> open 192.168.0.39
Connected to 192.168.0.39.
220 Hi! Welcome on UserGate!
User (192.168.0.39:(none)): twilight5023@ftp.narod.ru
331 Password required
Password:
230 Logged in, proceed
ftp> binary
200 Type: I
ftp> get leto.jpg
200 PORT command OK
150 Opening data connection
226 File transferred.
ftp: 11309 bytes received in 0,50Seconds 22,62Kbytes/sec.
ftp> bye
221 Bye

Теперь вообще все сказочно, и пусть теперь кто-то попробует сказать что в UserGate'е криво ftp реализован, вы просто не умеете их готовить ;))
35 romix
 
модератор
02.11.06
18:19
Работающее решение - компонента DIALMAIL
36 twilight5023
 
02.11.06
18:57
(35) Не всегда стоит задача отправлять файлы по ftp именно из 1С, у меня например реализован bat'ник, который запускает 1С Предприятие в пакетном режиме, далее производится выгрузка, необходимые файлы упаковываются в архив, плюс в этот же архив добавляются еще кое-какие файлы и затем этот архив отправляется по ftp. Раньше отправлялось по e-mail'у с помощью postie. Вообщем-то я рекомендовал этот пост в базу знаний, лишь по той причине, что у людей сплошь и рядом встречаются проблемы при работе с ftp с UserGate. Может быть мой опыт кому-то поможет...
37 Ковычки
 
02.11.06
19:31
shell.application