Клиент банк СБ РФ: вечное “начало отправки файла” или NAT, FTP и прочие чудеса И опять – проблемы с клиент-банком СБ РФ. Зависаем на “начале отправки файла”, и висим вечно. Разберёмся с этой проблемой и решим её.

Клиент СБ РФ и сетевые соединения

О вариантах настройки Амикон ФПСУ IP/Клиента уже писал не раз. Наиболее симпатичен мне последний реализованный вариант – с выделенными ФПСУ-маршрутизаторами (решение сервер-центристское, и даёт нам возможность иметь несколько одновременно поднятых каналов к нескольким ФПСУ).

В этой статье затрагивать Амикон ФПСУ не буду, речь пойдёт об одной из проблем самого клиента wCLNT.exe.

wCLNT, FTP и NAT

Клиент банк СБ РФ: вечное “начало отправки файла” или NAT, FTP и прочие чудеса

Не ранее, чем сегодня с утра начались чудеса – все клиент-банки СБ РФ (у нас несколько организаций) при попытке соединения с сервером банка зависали на стадии “Начало отправки файла…” (картина маслом справа).

Клиент банк СБ РФ: вечное “начало отправки файла” или NAT, FTP и прочие чудеса С клиент-банком СБ РФ не первый год дело имею, посему знаю, что “файлы” он отправляет на ftp сервер банка. Запускаем Network Monitor, выставляем capture filter: FTP. (да, просто FTP. Будем контролировать весь FTP трафик). И запускаем наш монитор. P.S. Напомню, в моём случае Амикон клиент установлен на другом хосте, поэтому никто и ничто мне не мешает контролировать реальный трафик самого клиента, ещё не обёрнутый в UDP-87.

Вижу следующую ftp сессию:

24    20:33:54.863    FTP:Response to Port 1482, '220  Microsoft FTP Service'
25    20:33:54.863    FTP:Request from Port 1482,'USER client18'
26    20:33:54.863    FTP:Response to Port 1482, '331  Password required for client18.'
27    20:33:54.863    FTP:Request from Port 1482,'PASS fenix'
28    20:33:54.878    FTP:Response to Port 1482, '230  User client18 logged in.'
29    20:33:54.878    FTP:Request from Port 1482, 'FEAT'
30    20:33:54.878    FTP:Response to Port 1482, '211 -FEAT'
31    20:33:55.003    FTP:Response to Port 1482,'211  END'
32    20:33:55.003    FTP:Request from Port 1482,'TYPE I'
33    20:33:55.003    FTP:Response to Port 1482, '200  Type set to I.'
34    20:33:55.003    FTP:Request from Port 1482, 'SYST'
35    20:33:55.003    FTP:Response to Port 1482, '215  Windows_NT'
36    20:33:55.003    FTP:Request from Port 1482,'CWD /'
37    20:33:55.003    FTP:Response to Port 1482, '250  CWD command successful.'
38    20:33:55.003    FTP:Request from Port 1482,'CWD SPB/client18.012'
39    20:33:55.003    FTP:Response to Port 1482, '250  CWD command successful.'
40    20:33:55.644    FTP:Request from Port 1482,'PORT 172,31,3,119,5,203'
41    20:33:55.644    FTP:Response to Port 1482, '200  PORT command successful.'
42    20:33:55.644    FTP:Request from Port 1482,'APPE 07AFSZ90C.012'
43    20:33:55.644    FTP:Response to Port 1482, '150  Opening BINARY mode data connection for 07AFSZ90C.012.'
44    20:33:56.534    FTP:Response to Port 1482, '425  Can't open data connection.'

Клиент получил “отлуп” от сервера банка, но при этом продолжает “висеть” и чего-то ещё ждать.

Однако, красиво. Клиент, разработанный в первую очередь для корпоративных сред, в которых NAT (а то – и не один) в порядке вещей, пытается установить активное ftp соединение! Этот вариант будет работать в корпоративной среде через “свисток” (USB-модем) или любой другой модем с белым ip. Используй клиент пассивный ftp режим (дальше приведу пример успешной сессии уже в пассивном режиме) – и никаких проблем вообще ни для кого!

Итак, проблема локализована. Необходимо заставить wCLNT.exe использовать пассивный ftp (PASV вместо PORT). P.S. До сих пор не наткнулся на эту проблему из-за особенностей реализации ФПСУ канала – использовал вариант с установкой на ISA хост. На ISA работает успешно ftp-фильтр, который и обеспечивал работоспособность активного ftp через NAT, а без этого фильтра – проблема всплыла.

Уже традиционно, консультации с техподдержкой банка к решению проблемы не привели. Специалисты техподдержки увидели “файлы нулевой длины”, из чего сделали вывод, что у нас проблемы с файрволом или антивирусом. На самом же деле файл на ftp сервере банка создаётся по команде APPE, а соединение (в ответ на PORT) с сервера банка на сервер клиента ещё не установлено, и не будет установлено. В результате – файл есть, контента в нём нет. А причина – в активном режиме ftp соединения на клиенте.

Поиски в интернете натолкнули на хитрые записи в реестре клиента:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\SBRF\WCLNT\client18\Оператор]
"Passive"=dword:00000001

Выше приведено уже “правильное” значение, при установке в реестре будет 00000000. Именно этот параметр отвечает за режим ftp соединения клиента wCLNT. Беда только в том, что указанный параметр Passive придётся изменять / создавать для каждого пользователя (он не в HKLM, а в HKCU), каждого клиент-банка (для каждого clientXXXX), и для каждой учётной записи в клиент-банке (операторXXXX, администратор и так далее). И GPO здесь не особо помогут, к сожалению…

Ложка дёгтя – указанный параметр имеет силу далеко не на всех версиях клиента! Мы использовали рекомендованную нашим отделением СБ РФ 7.12.5.2225.А именно в этой версии указанный параметр не влияет на поведение клиента! Исправлена проблема начиная с версии 7.12.7, я же обновил клиента сразу до версии 7.15.2.2240. И в указанной версии изменение значения параметра Passive в реестре уже имеет силу. В результате имеем сессию:

3    21:48:45.542    FTP:Response to Port 1577, '220  Microsoft FTP Service'
4    21:48:45.542    FTP:Request from Port 1577,'USER client18'
5    21:48:45.542    FTP:Response to Port 1577, '331  Password required for client18.'
6    21:48:45.542    FTP:Request from Port 1577,'PASS fenix'
7    21:48:45.557    FTP:Response to Port 1577, '230  User client18 logged in.'
8    21:48:45.557    FTP:Request from Port 1577, 'FEAT'
9    21:48:45.557    FTP:Response to Port 1577, '211 -FEAT'
10    21:48:45.682    FTP:Response to Port 1577,'211  END'
11    21:48:45.682    FTP:Request from Port 1577,'TYPE I'
12    21:48:45.682    FTP:Response to Port 1577, '200  Type set to I.'
13    21:48:45.682    FTP:Request from Port 1577, 'SYST'
14    21:48:45.682    FTP:Response to Port 1577, '215  Windows_NT'
15    21:48:45.682    FTP:Request from Port 1577,'CWD /'
16    21:48:45.714    FTP:Response to Port 1577, '250  CWD command successful.'
17    21:48:45.714    FTP:Request from Port 1577,'CWD SPB/client18.012'
18    21:48:45.714    FTP:Response to Port 1577, '250  CWD command successful.'
19    21:48:45.714    FTP:Request from Port 1577, 'PASV'
20    21:48:45.729    FTP:Response to Port 1577, '227  Entering Passive Mode (213,148,164,75,17,207).'
21    21:48:45.729    FTP:Request from Port 1577,'APPE 07AFSZ90C.012'
22    21:48:45.729    FTP:Response to Port 1577, '125  Data connection already open; Transfer starting.'
23    21:48:45.901    FTP:Response to Port 1577, '226  Transfer complete.'
24    21:48:49.167    FTP:Request from Port 1577,'CWD /'
25    21:48:49.167    FTP:Response to Port 1577, '250  CWD command successful.'
26    21:48:49.167    FTP:Request from Port 1577,'CWD SPB/client18.012'
27    21:48:49.167    FTP:Response to Port 1577, '250  CWD command successful.'
28    21:48:49.167    FTP:Request from Port 1577, 'PASV'
29    21:48:49.182    FTP:Response to Port 1577, '227  Entering Passive Mode (213,148,164,75,17,208).'
30    21:48:49.182    FTP:Request from Port 1577,'APPE 07B0SZ90C.012'
31    21:48:49.198    FTP:Response to Port 1577, '125  Data connection already open; Transfer starting.'
32    21:48:49.401    FTP:Response to Port 1577, '226  Transfer complete.'
33    21:48:51.354    FTP:Request from Port 1577,'CWD /'
34    21:48:51.354    FTP:Response to Port 1577, '250  CWD command successful.'
35    21:48:51.354    FTP:Request from Port 1577,'CWD SPB/client18.012'
36    21:48:51.354    FTP:Response to Port 1577, '250  CWD command successful.'
37    21:48:51.354    FTP:Request from Port 1577, 'PASV'
38    21:48:51.354    FTP:Response to Port 1577, '227  Entering Passive Mode (213,148,164,75,17,209).'
39    21:48:51.354    FTP:Request from Port 1577,'APPE 07B1SZ90C.012'
40    21:48:51.370    FTP:Response to Port 1577, '125  Data connection already open; Transfer starting.'
41    21:48:51.589    FTP:Response to Port 1577, '226  Transfer complete.'
42    21:49:04.932    FTP:Request from Port 1577,'CWD /'
43    21:49:04.932    FTP:Response to Port 1577, '250  CWD command successful.'
44    21:49:04.932    FTP:Request from Port 1577,'CWD SPB/client18.012'
45    21:49:04.932    FTP:Response to Port 1577, '250  CWD command successful.'
46    21:49:04.932    FTP:Request from Port 1577, 'PASV'
47    21:49:04.948    FTP:Response to Port 1577, '227  Entering Passive Mode (213,148,164,75,17,211).'
48    21:49:04.948    FTP:Request from Port 1577,'RETR 16FF0120.RB90'
49    21:49:04.948    FTP:Response to Port 1577, '125  Data connection already open; Transfer starting.'
50    21:49:05.151    FTP:Response to Port 1577, '226  Transfer complete.'
51    21:49:06.839    FTP:Request from Port 1577,'CWD /'
52    21:49:06.839    FTP:Response to Port 1577, '250  CWD command successful.'
53    21:49:06.839    FTP:Request from Port 1577,'CWD SPB/client18.012'
54    21:49:06.839    FTP:Response to Port 1577, '250  CWD command successful.'
55    21:49:06.839    FTP:Request from Port 1577, 'PASV'
56    21:49:06.870    FTP:Response to Port 1577, '227  Entering Passive Mode (213,148,164,75,17,212).'
57    21:49:06.886    FTP:Request from Port 1577,'RETR 17000120.RB90'
58    21:49:06.886    FTP:Response to Port 1577, '125  Data connection already open; Transfer starting.'
59    21:49:07.011    FTP:Response to Port 1577, '226  Transfer complete.'
60    21:49:08.761    FTP:Request from Port 1577,'CWD /'
61    21:49:08.761    FTP:Response to Port 1577, '250  CWD command successful.'
62    21:49:08.761    FTP:Request from Port 1577,'CWD SPB/client18.012'
63    21:49:08.761    FTP:Response to Port 1577, '250  CWD command successful.'
64    21:49:08.776    FTP:Request from Port 1577, 'PASV'
65    21:49:08.776    FTP:Response to Port 1577, '227  Entering Passive Mode (213,148,164,75,17,213).'
66    21:49:08.776    FTP:Request from Port 1577,'RETR 17010120.RB90'
67    21:49:08.776    FTP:Response to Port 1577, '125  Data connection already open; Transfer starting.'
68    21:49:08.979    FTP:Response to Port 1577, '226  Transfer complete.'

Вместо PORT видим PASV, то есть имеем пассивный режим ftp, который будет совместим с любым NAT. Итого – проблема решена.

Итоги

Итак, описанная проблема возникнет:

  • если у Вас серые IP и NAT без ftp фильтра;
  • даже если у Вас NAT с ftp фильтром (скажем – ISA/TMG), но соединение с банком – через Амикон ФПСУ IP/клиент (потому как ftp фильтр на NAT в этом случае бессилен);
  • и даже если у Вас “свисток” или иной модем, но с серым IP.

И решается проблема:

  • либо исключением NAT (белый ip, настройка файрвола под ftp);
  • либо ftp фильтром на NAT (но до ФПСУ ip клиента!);
  • либо установкой параметра Passive в реестре, как показано выше, и обновлением версии клиента.

Огромная просьба к разработчикам клиент-банка СБ РФ:

  • исключите полностью возможность использования активного ftp соединения (пассивный ftp ни у кого проблем не создаст);
  • ну или в крайнем случае обеспечьте поддержку и приоритетность параметра Passive в ключе HKLM\Policies\Software\SBRF\WCLNT (именно в этом ключе, а не “глубже”, в крайнем случае — HKCU\Policies\Software\SBRF\WCLNT) над прочими параметрами Passive в HKCU (в этом случае хотя бы будет возможность через GPO установить данный параметр для всех инстанций клиент-банка, сейчас же – придётся работать руками).

Коллеги, если кто знает иной способ заставить клиента использовать всегда пассивный режим ftp – буду благодарен за Ваши комментарии. Пока же решение крайне неудобное для корпоративной среды.

Отзывы » (3)

  1. Проблема «вскрылась» только при использовании версии 4.3. Амикон ФПСУ ip клиента, предыдущие версии фильтра успешно проксировали активное ftp соединение клиент-банка. Тот факт, что клиент ФПСУ должен проксировать активные ftp соединения до его хостов (в терминологии ФПСУ), подтверждён высказываниями разработчиков http://amicon.ru/forum/viewtopic.php?f=3&t=1520&p=7534#p7534. Однако с версией 4.3 фильтра этот фокус не прошёл. Пока внятного ответа от разработчиков не получил, по их информации всё должно работать и сейчас.
    P.S. Есть, конечно, предположение, что играет не последнюю роль очерёдность установки Амикон ФПСУ IP клиента и NAT на Amicon интерфейсе ФПСУ маршрутизатора, ещё буду тестировать. Буду благодарен Вам за любые наблюдения в части проксирования активных ftp соединений клиент-банка со стороны ФПСУ клиента 4.3.

  2. В форуме неофициальной поддержки СБ РФ коллега ZhooChee подсказал WSH сценарий для правки реестра. Пока склоняюсь к следующему решению: заменяю ярлык на запуск клиент-банка, в ярлыке запускаю powershell сценарий, в котором как раз и проделываю все необходимы операции в реестре текущего пользователя, после чего уже запускаю сам клиент-банк. Такой вариант мне кажется пока оптимальным.
    Дойдут руки — напишу.

  3. Пока здесь следы оставлю — неплохой на первый взгляд рецепт для хранения подписей: http://www.sbforum.ru/showthread.php?t=7298.
    И ещё вариант — http://www.sbforum.ru/showthread.php?t=6745 — через subst.

Опубликовать комментарий

XHTML: Вы можете использовать следующие HTML теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tags Связь с комментариями статьи:
RSS комментарии
Обратная ссылка