Возникла необходимость обеспечить работу с несколькими разными ФПСУ банка (часть организаций “вынудил” СБ работать через СПЭД, часть – всё ещё на клиенте СБ, а ФПСУ то разные). Описанное ранее решение работало только в случае, если ключ один. Посему и пришлось искать другое решение, но на рабочие станции ставить ФПСУ IP клиент вообще никакого желания нет. Реализованное решение и опишу.

Принцип работы ФПСУ клиента уже ранее описывал, повторяться не буду. Приведу идею:

Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор

Учитывая проблемы, которые нам уже создавал Сбербанк, не будем создавать себе проблемы и пытаться решить проблему только в рамках ISA хоста. Для этих целей будем использовать “ведро” – простенькую рабочую станцию, на которой работать уже грешно, а выкидывать жалко. Назовём её “наш Амикон-маршрутизатор”, или просто — “Амикон-маршрутизатор”.

P.S. В конце статьи остановлюсь на том, как реализовать это решение на виртуальном сервере, так как в случае наличия Windows Enterprise Server реализация в рамках виртуального сервера не потребует от Вас дополнительных затрат (на лицензирование).

Готовим маршрутизатор

Всё, что нам потребуется от самодельного маршрутизатора – хотя бы один USB порт, минимальные требования совместимости с MS Windows 2000/2003 Standard Server (да, потребуется сервер, потому как потребуется RRAS ради NAT) и два сетевых интерфейса. Можно обойтись и Windows XP, но в этом случае Вам потребуется через реестр включить маршрутизацию и NAT включить через netsh.

Устанавливаем ФПСУ IP-клиент

Пришло время установить сам клиент (сразу после установки Windows Server).

  • Качаем сам ФПСУ IP-Клиент: https://www.amicon.ru/download_client/. На момент написания статьи была доступна версия 4.1.18, о ней дальше и пойдёт речь (сейчас уже по той же ссылке доступна версия 4.3.0, причём эта версия замечательно устанавливается поверх, даже без отключения VPN, после перезагрузки канал сам поднимается!).
  • И устанавливаем его. Сама процедура не изменилась, я её уже описывал для Windows 2000, повторяться не стану. В процессе установки Вас предупредят, что ставить через терминальное подключение (через RDP) не рекомендуется. Если используете удалённое подключение, рекомендую вариант mstsc /admin,иначе проблему с ФПСУ клиентом гарантированы.
  • Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор Прежде, чем двигаться дальше, обращу Ваше внимание на одну немаловажную деталь, из-за которой несколько часов потерял сам. Если Вы настраиваете Ваше “ведро” (Амикон-маршрутизатор) не сидя за его консолью, а через RDP, следует вспомнить о том, что по умолчанию с RDP-клиента подключаются в том числе и устройства чтения smartcard, коим, в том числе, является ключ ФПСУ клиента. Другими словами, ФПСУ клиент не увидит ключа, подключенного к нашему маршрутизатору. Он увидит только ключи, подключенные к хосту, с которого Вы запустили RDP-клиента. Запретим Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторподключение устройств чтения смарт карт. И сделаем это политикой (GPO, рисунок справа): Конфигурация компьютера \  Административные шаблоны \ Компоненты Windows \ Службы терминалов \ Сервер терминалов \ Перенаправление устройств и ресурсов \ Не разрешать перенаправление устройств чтения смарт-карт.
  • Той же политикой меняем режим запуска службы смарт-карт и параметры её восстановления (SCardSvr). Но и после этого единственная возможность управлять соединением через удалённую сессию — войти сначала локально, затем заблокировать сессию, после чего уже можно будет подключиться удалённо. Видимо, интерфейс фильтра Амикона проверяет, каким образом была инициирована сессия.
Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторНастраиваем сетевые интерфейсы маршрутизатора
  • Называем его сетевые интерфейсы LAN и Amicon соответственно (картинка справа).
  • Теперь же настроим наши сетевые интерфейсы:
    • Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторОт интерфейса Amicon отвязываем все службы и фильтры, кроме фильтра Amicon NDIS IM Filter Driver и протокола TCP/IP.
    • Также рекомендую отключить регистрацию подключения Amicon в DNS. И после этого жмём Ok, интерфейс Amicon настроен.
    • Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторДа, кстати, нам потребуются фиксированные ip адреса на этих интерфейсах. Явно прописываем ip адреса в параметрах подключения.
    • Теперь настроим LAN интерфейс нашего маршрутизатора. От него мы отвяжем Amicon NDIS IM Filter Driver.
    • Также фиксируем IP адрес.
    • В идеале, шлюз (ISA хост) и все внешние ресурсы (WAN) должны быть доступны только через Amicon интерфейс (192.168.202.201 в моём примере), локальная сеть – только через LAN интерфейс. Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторДля этих целей самым простым решением будет следующее – интерфейсы должны быть в разных подсетях, как и предлагаю. Поэтому для интерфейса Amicon адрес — 192.168.202.201, например, маска – 255.255.255.0, шлюз – 192.168.202.9Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторА адрес шлюза (192.168.202.9) дописываем в качестве дополнительного на LAN интерфейсе ISA хоста. При этом, однако, следует проконтролировать метрику шлюза в Интернет для WAN интерфейса Вашего ISA хоста – она (метрика) должна быть максимальной (то есть этот маршрут должен обладать самым низким приоритетом, рисунок слева). Если Вы всё сделали правильно, то таблица маршрутизации на ISA хосте должна выглядеть приблизительно так:
      route print
      ===========================================================================
      Interface List
      0x1 ........................... MS TCP Loopback interface
      0x2 ...00 0c 76 28 8c c8 ...... Intel(R) PRO/1000 MT Desktop Adapter (Microsoft'
      s Packet Scheduler)
      0x1000003 ...00 53 45 00 00 00 ...... WAN (PPP/SLIP) Interface
      0x1000005 ...00 0c 76 28 8c c9 ...... Intel(R) PRO/100 M Network Connection
      ===========================================================================
      ===========================================================================
      Active Routes:
      Network Destination        Netmask          Gateway       Interface  Metric
                0.0.0.0          0.0.0.0  213.148.164.197  213.148.164.198      200
              127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
             172.31.0.0      255.255.0.0       172.31.0.9      172.31.0.9       1
             172.31.0.9  255.255.255.255        127.0.0.1       127.0.0.1       1
            172.31.3.19  255.255.255.255        127.0.0.1       127.0.0.1       1
         172.31.255.255  255.255.255.255       172.31.0.9      172.31.0.9       1
          192.168.202.0    255.255.255.0    192.168.202.9      172.31.0.9       1
          192.168.202.9  255.255.255.255        127.0.0.1       127.0.0.1       1
        192.168.202.255  255.255.255.255    192.168.202.9      172.31.0.9       1
        213.148.164.192  255.255.255.192  213.148.164.198  213.148.164.198      10
        213.148.164.198  255.255.255.255        127.0.0.1       127.0.0.1       10
        213.148.164.255  255.255.255.255  213.148.164.198  213.148.164.198      10
          213.182.185.2  255.255.255.255          0.0.0.0        ffffffff       1
           223.11.23.30  255.255.255.255          0.0.0.0        ffffffff       1
              224.0.0.0        224.0.0.0       172.31.0.9      172.31.0.9       1
              224.0.0.0        224.0.0.0  213.148.164.198  213.148.164.198      10
        255.255.255.255  255.255.255.255       172.31.0.9      172.31.0.9       1
      Default Gateway:   213.148.164.197
      ===========================================================================
      Persistent Routes:
        None
    • Как видно, теперь лучшим маршрутом к 192.168.202.201 будет именно маршрут через LAN интерфейс ISA хоста (7ая запись в таблице), а не через шлюз по умолчанию. Уже сейчас ping из Вашей LAN должен успешно достигать Amicon интерфейса нашего маршрутизатора (192.168.202.201).
    • В результате всех выше описанных манипуляций таблица маршрутизации на нашем Амикон-маршрутизаторе (“ведре”) изменилась следующим образом:
      route print
      ===========================================================================
      Interface List
      0x1 ........................... MS TCP Loopback interface
      0x2 ...00 c0 26 a8 e7 76 ...... Realtek RTL8139/810x Family Fast Ethernet NIC -
      Amicon NDIS IM Filter Driver (Miniport)
      0x10004 ...00 0c 76 9d f9 de ...... Intel(R) PRO/100 VE Network Connection
      ===========================================================================
      ===========================================================================
      Active Routes:
      Network Destination        Netmask          Gateway       Interface  Metric
                0.0.0.0          0.0.0.0    192.168.202.9  192.168.202.201      20
              127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
             172.31.0.0      255.255.0.0     172.31.2.200    172.31.2.200       20
           172.31.2.200  255.255.255.255        127.0.0.1       127.0.0.1       20
         172.31.255.255  255.255.255.255     172.31.2.200    172.31.2.200       20
          192.168.202.0    255.255.255.0  192.168.202.201  192.168.202.201      20
        192.168.202.201  255.255.255.255        127.0.0.1       127.0.0.1       20
        192.168.202.255  255.255.255.255  192.168.202.201  192.168.202.201      20
              224.0.0.0        240.0.0.0     172.31.2.200    172.31.2.200       20
              224.0.0.0        240.0.0.0  192.168.202.201  192.168.202.201      20
        255.255.255.255  255.255.255.255     172.31.2.200    172.31.2.200       1
        255.255.255.255  255.255.255.255  192.168.202.201  192.168.202.201      1
      Default Gateway:     192.168.202.9
      ===========================================================================
      Persistent Routes:
        None
    • Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор Как видно, теперь единственный маршрут в Интернет проходит через Amicon интерфейс (192.168.202.201) (для чего мы убрали шлюз по умолчанию на интерфейсе LAN, рисунок справа), и единственный маршрут в нашу сеть – через LAN интерфейс, что и требовалось. Итак, с маршрутами на нашем маршрутизаторе разобрались. Автоматизировать настройку (или сохранить её в машиночитаемом виде для целей восстановления) можно с помощью netsh, скрипт в моём случае выглядит следующим образом:
      # ----------------------------------
      # Interface IP Configuration
      # ----------------------------------
      pushd interface ip
      
      # Interface IP Configuration for "Amicon"
      
      set address name="Amicon" source=static addr=192.168.202.201 mask=255.255.255.0
      set address name="Amicon" gateway=192.168.202.9 gwmetric=0
      set dns name="Amicon" source=static addr=none register=NONE
      set wins name="Amicon" source=static addr=none
      
      # Interface IP Configuration for "LAN"
      
      set address name="LAN" source=static addr=172.31.2.200 mask=255.255.0.0
      set dns name="LAN" source=static addr=172.31.0.22 register=PRIMARY
      add dns name="LAN" addr=172.31.0.6 index=2
      set wins name="LAN" source=static addr=none
      
      popd
      # End of interface IP configuration
  • Необходимо, чтобы маршрутизация между сетевым интерфейсами работала. Для любителей реестра рекомендую проверить следующий параметр: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ IPEnableRouter (Тип данных: REG_DWORD), он должен быть равен 1 (для серверных ОС он и так установлен в 1, для ОС рабочих станций и персональных ОС – 0).
NAT, Amicon ФПСУ IP/клиент и RRAS

Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор В процессе длительных экспериментов наблюдал следующую картину: с нашего “самопального” маршрутизатора соединение с ФПСУ банка устанавливается, сервера банка доступны (tracert показывает маршрут в один hop, что и понятно – пролетает весь путь в туннеле ФПСУ). А с других компьютеров, с которых маршрут к серверам банка ведёт через наш Амикон-маршрутизатор, сервера банка недоступны. Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор При этом на в ФПСУ IP/Клиенте в статистике видно, что пакеты он отправляет, а обратно ничего не возвращается. Возникло предположение, что сервер ФПСУ Амикона не выполняет NAT (об этом информация пробегала здесь). Именно этим, на мой взгляд (здесь – исключительно догадки), объясняется работоспособность решения с установкой фильтра на ISA хост с привязкой к WAN интерфейсу – ISA реализует NAT на WAN интерфейсе. Поэтому и выбрал серверную ОС – ради NAT (в RRAS). Итак, нам необходим NAT на интерфейсе Amicon.

В первую очередь останавливаем службу ICS (Internet Connection Sharing), устанавливаем для неё режим запуска – Отключена (рекомендую этот шаг выполнить через созданный выше GPO), запускаем мастер настройки маршрутизации и удалённого доступа. При настройке выбираем вариант NAT маршрутизатора без файрвола. После установки RRAS настроить его можно следующим сценарием NetSh:

pushd routing
reset
popd

pushd routing ip
reset
set loglevel error
add preferenceforprotocol proto=LOCAL preflevel=1
add preferenceforprotocol proto=STATIC preflevel=3
add preferenceforprotocol proto=NONDOD preflevel=5
add preferenceforprotocol proto=AUTOSTATIC preflevel=7
add preferenceforprotocol proto=NetMgmt preflevel=10
add interface name="LAN" state=enable
set filter name="LAN" fragcheck=disable
add interface name="Amicon" state=enable
set filter name="Amicon" fragcheck=enable
add interface name="internal" state=enable
set filter name="internal" fragcheck=disable
add interface name="loopback" state=enable
set filter name="loopback" fragcheck=disable
popd

pushd routing ip dnsproxy
uninstall
popd

pushd routing ip igmp
uninstall
popd

pushd routing ip nat
uninstall
install
set global tcptimeoutmins=1440 udptimeoutmins=1 loglevel=ERROR
add interface name="LAN" mode=PRIVATE
add interface name="Amicon" mode=FULL
add interface name="internal" mode=PRIVATE

popd

pushd routing ip ospf
uninstall
popd

pushd routing ip relay
uninstall
popd

pushd routing ip rip
uninstall
popd

pushd routing ip routerdiscovery
uninstall
popd

pushd routing ip autodhcp
uninstall
popd

Но суть сценария в разделе настройки NAT: интерфейс Amicon в режиме NAT-full, LAN – в режиме NAT-private.

Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор На этом настройка нашего Амикон-маршрутизатора закончена практически. Теперь, при установленном соединении с ФПСУ банка сервера банка будут доступны с любой рабочей станции Вашей сети (благодаря NAT и маршрутам на ISA хосте).

P.S. Кстати, мы по-прежнему можем контролировать доступ к серверам банка с наших рабочих станций. Для этих целей мы можем использовать правила фильтрации на RRAS, которые, кстати, можно установить через GPO+GPP.

Настраиваем ISA Server

Теперь мы должны написать маршруты, благодаря которым трафик, направленный в адрес ФПСУ банка и хостов банка, будет направлен на наш Амикон-маршрутизатор.

Маршрутизация

Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторДля начала следует уточнить адрес ФПСУ банка и адреса серверов банка (хостов в терминологии ФПСУ). Для этих целей щёлкаем правой кнопкой на значке ФПСУ IP/клиента в трее, пункт – “VPN-key Settings”. После ввода PIN кода администратора (Вы должны были получить PIN коды вместе с ключом) не забудьте установить опцию — “Администратор”, после чего жмём Ok.

Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор

Окно с настройками IP клиента представлено слева. Нас интересует разделы ФПСУ (адрес межсетевого экрана банка, в моём примере – 84.204.34.245) и Хосты (адреса серверов банка, маршрут к которым возможен только через туннель ФПСУ, в моём примере – 55.251.189.1).

Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторИдея в следующем. На ISA хосте мы должны прописать маршрут к серверам банка через наш новоявленный Амикон-маршрутизатор. Я добавил маршрут через консоль RRAS, можно – через route add, как удобнее будет. В результате таблица маршрутизации на ISA хосте будет выглядеть приблизительно так:

>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 0c 76 28 8c c8 ...... Intel(R) PRO/1000 MT Desktop Adapter (Microsoft'
s Packet Scheduler)
0x1000003 ...00 53 45 00 00 00 ...... WAN (PPP/SLIP) Interface
0x1000005 ...00 0c 76 28 8c c9 ...... Intel(R) PRO/100 M Network Connection
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0  213.148.164.197  213.148.164.198      200
     55.251.189.1  255.255.255.255     172.31.2.200      172.31.0.9       1
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
       172.31.0.0      255.255.0.0       172.31.0.9      172.31.0.9       1
       172.31.0.9  255.255.255.255        127.0.0.1       127.0.0.1       1
      172.31.3.19  255.255.255.255        127.0.0.1       127.0.0.1       1
   172.31.255.255  255.255.255.255       172.31.0.9      172.31.0.9       1
    192.168.202.0    255.255.255.0    192.168.202.9      172.31.0.9       1
    192.168.202.9  255.255.255.255        127.0.0.1       127.0.0.1       1
  192.168.202.255  255.255.255.255    192.168.202.9      172.31.0.9       1
  213.148.164.192  255.255.255.192  213.148.164.198  213.148.164.198      10
  213.148.164.198  255.255.255.255        127.0.0.1       127.0.0.1       10
  213.148.164.255  255.255.255.255  213.148.164.198  213.148.164.198      10
    213.182.185.2  255.255.255.255          0.0.0.0        ffffffff       1
     223.11.23.30  255.255.255.255          0.0.0.0        ffffffff       1
        224.0.0.0        224.0.0.0       172.31.0.9      172.31.0.9       1
        224.0.0.0        224.0.0.0  213.148.164.198  213.148.164.198      10
  255.255.255.255  255.255.255.255       172.31.0.9      172.31.0.9       1
Default Gateway:   213.148.164.197
===========================================================================
Persistent Routes:
  None

Видите маршрут к серверам банка (55.251.189.1) через наше “ведро” (172.31.2.200)? Важно, чтобы это маршрут имел меньшую метрику, чем шлюз по умолчанию.

Маршрут прописываем только до серверов банка (хостов), ни в коем случае не до ФПСУ банка! (иначе получим кольцо и связи не будет).

P.S. Для каждого ФПСУ нам придётся использовать своё “ведро”-маршрутизатор, и для каждого – маршрут на ISA хосте.

Забыли про LAT?

Я думаю, Вы уже получили ругань в журнале событий на ISA хосте. И правильно — мы новую локальную подсеть создали, а в LAT то её кто будет прописывать? В общем — вносим 192.168.202.0-192.168.202.255 в LAT в консоли ISA сервера, перезапускаем ISA Control.

Правила протоколов (protocol rules)
  • Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторКлиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизаторВ первую очередь добавляем описание протокола (Protocol Definition): UDP 87, Send-Receive.
  • Следующим шагом создаём Client Address Set. Ограничим мы свои хосты, с которых возможно будет по UDP87 выйти в сеть. Включаем только IP адрес Amicon интерфейса нашего “маршрутизатора” (192.168.202.201 в моём примере).
  • А теперь, собственно говоря, переходим к созданию Protocol Rule (картинки ниже).
    Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор
  • Расписание в правиле устанавливайте на свой вкус. Я ограничил его рабочими часами на всякий случай.

ISA готова к эксперименту. Не забываем перезапустить службу Microsoft Firewall.

Эксперименты

Теперь пришло время подключить VPN. На нашем “маршрутизаторе”, в меню клиента ФПСУ – Подключить. Если на предыдущем шаге всё сделано правильно, то с нашего маршрутизатора tracert выдаст следующий результат:

>tracert -d 55.251.189.1

Трассировка маршрута к 55.251.189.1 с максимальным числом прыжков 30

  1     6 ms     5 ms     5 ms  55.251.189.1

Трассировка завершена.

Ну а благодаря NAT аналогичный результат (как минимум – на один hop длиннее) мы получим с любой рабочей станции Вашей сети.

MTU + ФПСУ IP клиент = проблемы

Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор Однако, без без потенциальных проблем и здесь не обошлось. Очевидно, что фильтру Амикона требуется увеличить размер пакета, чтобы дописать свой заголовок. По результатам экспериментов – 28 байт требуется. В моём случае до  ФПСУ банка допустим MTU 1500. Из-за дополнительного заголовка ФПСУ – 1472 байта. Первое, что приходит в голову – установить на интерфейсе Amicon MTU 1472.

Но не тут то было. Запускаем тест с рабочей станции Вашей сети:

ping -t 213.148.164.75 -f -l -1470

Флагом –f мы запрещаем фрагментацию пакетов. Размер пакета (1470) меньше MTU (1472), поэтому ICMP ответа “требуется фрагментация” не последует. Но с заголовком размер пакета  составит 1498. Меньше 1500. Но ведь размер – больше MTU, поэтому и уйти такой пакет через сетевой интерфейс не сможет. И какой бы размер MTU мы не установили в реестре, проблема размером в 28 байт сохранится.

По моему субъективному мнению, разработчикам IP клиента была допущена архитектурная ошибка. Не было бы никаких проблем, если бы клиент создавал новый виртуальный сетевой интерфейс, как и многие другие VPN решения. Тогда не возникло бы и проблем с установкой MTU для этого нового виртуального интерфейса – берём MTU сетевого интерфейса, через который поднят VPN, вычитаем 28 – и получаем MTU виртуального Amicon VPN интерфейса. Но Амикон пошёл другим путём, они создали NDIS фильтр. Хотя, судя по MSDN, фильтры не должны изменять размеры пакетов. А фильтр Амикона – меняет. Вот и результат.

Другими словами – с MTU проблема у ФПСУ IP-клиента. В любом варианте установки. При этом, если отправитель не выставит флаг “фрагментация запрещена” – проблем не будет (пакет будет фрагментирован, что подтверждается успешным выполнением ping –t 213.148.164.75 –l 2000). А если отправитель выставит этот флаг, и размер пакета будет меньше MTU сетевого интерфейса, но больше, чем (MTU-28 байт) – не будет и ICMP ответа о необходимости фрагментации, и пакет отправлен не будет.

По факту могу сказать, что ни клиент СБ РФ, ни СПЭД не выставляет флага “фрагментация запрещена”. Поэтому и проблем не возникает, хотя потенциальная проблема при этом существует.

Периодический разрыв соединения и что с этим делать

По поводу разрыва соединения через интервал keep-alive пришла в голову идея — а он и должен рваться! Он не может не рваться, я бы сказал. Ведь не стоит забывать, что на ISA работает NAT. Protocol rule — send-receive. Время жизни динамического сопоставления UDP в NAT невелико. В моём случае из огромого потока коротких UDP сессий время жизни UDP сопоставления пришлось уменьшить до 1 минуты. При установке RRAS на Windows 2003 по умолчанию время жизни UDP сопоставлению будет 60 минут. Дальше всё зависит от keep-alive интервала, установленного на ФПСУ сервере. Ответный пакет (точнее любой входящий пакет) от ФПСУ сервера к клиенту будет пропущен не позднее, чем через (время жизни UDP сопоставления) после отправки последнего пакета от клиента серверу! А keep-alive на стороне ФПСУ сервера, как я понял (опять-таки — догадки), обрабатывается просто — сервер посылает пакет клиенту. И в моём случае это время выше времени жизни UDP сопоставления. Ну так пакет клиента и не достигнет.

Предложил разработчикам контролировать keep-alive на стороне клиента ФПСУ, а не сервера. Именно клиент должен посылать запрос (пакет) через keep-alive интервал после последней активности. Если не получает ответ — канал разорван. А сервер просто ждёт чуть больше, чем keep-alive интервал на клиенте. Если нет пакетов от клиента — то и слать незачем. Можно попытки на сервер и оставить, они не помешают, но на клиенте их надо ввести. В этом случае клиент отправляет пакет, вновь создаётся (либо «обновляется» время жизни существующего) сопоставления на NAT для NAT клиентов, и ответ от сервера в течение времени жизни UDP сопоставления спокойно пройдёт обратно.
Пока же, если у Вас также имеют место быть ограничения на максимальное время жизни UDP сопоставления на NAT, предлагаю создать назначенное задание на Амикон маршрутизаторе от имени Local System: раз в пять минут запускаем

<br />
%ComSpec% /c ping 55.251.189.1<br />

В роли ip — адрес любого из хостов, прописанных в Вашем VPN-key. Подобное простое задание лучше всего повесить через GPP, и оно будет поддерживать UDP сопоставление на ISA NAT.

А что же FWC?

По логике вещей на нашем спецмаршрутизаторе не нужен FWC вовсе. Но с другой стороны – он и не помешает, не сможет! Так что никаких специальных настроек FWC не потребуется. Однако, рекомендую отключить службу агента клиента межсетевого экрана, опять-таки – через GPO (можно даже и без GPP).

По описанным выше причинам авторизация на протокол UDP87 возможна только по IP адресам. Если требуется авторизация по учётным записям, следует запускать службу Амикона от имени специальной учётной записи, включить FWC — и авторизация возможна. Но здесь не об этом.

Да, FWC не требует настройки на Amicon-маршрутизаторе, но на клиенте-то (СПЭД, клиент СБ РФ) требует!

IP пакеты должны идти напрямую от workstation в адрес сервера (хоста). То есть, если они и проходят по пути какие-либо туннели, то они должны выйти из этих туннелей до фильтра Amicon NDIS IM Filter Driver, то есть — до нашего Amicon-маршрутизатора, иначе последний их просто “не поймает”.

Что же нам может помешать? А помешать нам может FWC. Вспомним, как он себя ведёт. Для того, чтобы обеспечить авторизацию трафика на ISA firewall service, он также “заворачивает” пакеты клиента, отправляемые за пределы LAT. Если мы не исключим FWC в нашем случае, ISA firewall service безусловно “развернёт” туннель FWC, и пакеты “уйдут” через внешний интерфейс ISA, однако при этом они не попадут на наш Amicon-маршрутизатор. И, соответственно, не пройдут межсетевой экран банка. Итак, FWC нам необходимо исключить для трафика клиент-банка (точнее — для любого трафика, который должен идти через туннели ФПСУ).

Смотрим настройки FWC (application.ini) и дописываем исключение для клиент-банка:

[Common]
...
[Servers Ip Addresses]
...
[Master Config]
...
[winppr32]
Disable=1
[dllhost]
Disable=1
...
[wCLNT]
Disable=1
[EXCHANGE]
Disable=1

Важны последние две секции: для «родного» клиент-банка и для СПЭД соответственно.

Обращаю внимание. Настройки могут быть как глобальными (через mspclnt) так и специфичными для приложения (wspcfg.ini в каталоге программы). Порядок и приоритеты:

The Firewall Client software looks for a Wspcfg.ini file in the folder in which the client WinSock program is installed. If this file is found, Firewall Client looks for a [WSP_Client_App] section, where WSP_Client_App is the name of the WinSock program without the .exe file name extension. If this section does not exist, Firewall Client looks for the [Common Configuration] section. If this section also does not exist, Firewall Client looks for the same sections in the Mspclnt.ini file. Firewall Client uses only the first section that it finds during this search to apply the program-specific configuration settings.

Подробности http://support.microsoft.com/kb/323457

Для СПЭД можно использовать файл wspcfg.ini с указанным выше содержимым в каталоге клиент-банка рядом с исполняемым файлом, для «родного» клиент-банка — нет. Будем пробовать глобальную конфигурацию.

Клиент банк Сбербанка (СБ РФ), ФПСУ IP/Клиент Амикон и ISA Server – строим специализированный ФПСУ маршрутизатор Внёс изменения непосредственно в консоли ISA. После этого перезапустил клиент файрвола (FWC) на машине, сеанс связи клиент-банка — и всё идёт.

ISA, DNS PTR и проблемы с подключением Амикон ФПСУ IP-Клиента

Остановлюсь на одном неочевидном моменте, не имеющим напрямую отношения к ФПСУ. Проверьте наличие PTR записи в обратной зоне DNS для IP адреса ФПСУ сервера банка. В моём случае:

nslookup 245.34.204.84.in-addr.arpa
Server:  ***.novgaro.ru
Address:  172.31.0.22

*** ***.novgaro.ru can't find 245.32.204.84.in-addr.arpa: Non-existent domain

Если для Вашего ФПСУ картина та же — будут проблемы. Соединение с ФПСУ банка будет устанавливаться далеко не с первого раза, и во время нагрузок ситуация вообще будет плачевная (с 100ого раза, а то и того хуже). Причину подсказал Network Monitor:

3   14407.387625      {UDP:0, IPv4:0}   192.168.202.201   84.204.34.245   UDP   UDP:SrcPort = 2579, DstPort = Any private terminal link(87), Length = 43
4   14416.403250      {UDP:0, IPv4:0}   84.204.34.245   192.168.202.201   UDP   UDP:SrcPort = Any private terminal link(87), DstPort = 2579, Length = 44

Хорошо видно, что между запросом и ответом прошло более 9 секунд!, естественно, клиент ответа не дождался. А причина такого поведения ISA (задержка именно из-за ISA, проверено с помощью сниффера провайдера) — в отсутствии PTR записи для ФПСУ сервера в обратной зоне DNS.

Решение следующее:

  • либо отключаем логгирование на isa для firewall service («отключение» полей с fqdn не помогает, проверено)
  • либо заставляем админов банка добавить ptr запись в обратную зону для своего сервера
  • либо создаём на своих dns серверах обратную зону для адресов их сервера (да, это неправильно, но от них реакции ждать долго, а это решение можно реализовать за несколько секунд).
  • возможно, есть решение с отключением rdns запросов на isa (для логгирования) через реестр, но пока его не нашёл. Буду рад подсказкам.

У себя создал обратную DNS зону на своих серверах следующего содержания:

;
;  Database file 34.204.84.in-addr.arpa.dns for 34.204.84.in-addr.arpa zone.
;      Zone version:  4
;

@                       IN  SOA server-***.novgaro.ru.  hostmaster.novgaro.ru. (
                        	4            ; serial number
                        	900          ; refresh
                        	600          ; retry
                        	86400        ; expire
                        	3600       ) ; default TTL

;
;  Zone NS records
;

@                       NS	server-***.novgaro.ru.
@                       NS	server-***.novgaro.ru.

;
;  Zone records
;

245                     PTR	proxy.inet.services.novgaro.ru.

И без перезапуска сервисов на ISA всё просто «залетало». Соединение поднимается с первого раза за доли секунды! Результаты RDNS запроса:

nslookup 84.204.34.245
Server:  server-***.novgaro.ru
Address:  172.31.0.22

Name:    proxy.inet.services.novgaro.ru
Address:  84.204.34.245

Вот такие вот тонкости…

Итоги

На этом и всё. Итого – мы добились работоспособности клиентов банка СБ РФ без каких-либо настроек ФПСУ на клиентах, не устанавливая при этом потенциально проблемного софта на ISA/TMG.

Можно избежать лишних затрат на технику и на лицензии, если у Вас есть лицензия на Windows Enterprise Server. Для описанных задач вполне подойдёт и виртуальный сервер. Но – нет поддержки в Hyper-V передачи USB портов в виртуальную среду. Зато есть сторонние решения типа USB-to-LAN. Я надеюсь, в ближайшее время смогу испробовать это решение в описанной задачи.

Кроме того, доступны программные решения для организации виртуальных сетевых интерфейсов, которые в контексте описанной задачи помогут исключить необходимость во втором “физическом” сетевом адаптере (безусловно, в случае виртуального сервера подобное решение смысла не имеет).

Задача решена,так или иначе.

Отзывы » (27)

  1. Константин:

    Сергей, добрый день!
    А как у Вас решается вопрос ввода пин-кода к ключу?

    • Константин, так всё просто. В первой статье уже писал: в параметрах IP клиента (VPN-key Settings) ставим опцию — «Помнить введённый PIN-код, пока VPN-key не отсоединён«. Немаловажнен тот факт, что при перезагрузке PIN код вводить также не требуется, если ключ не отключали. Успешно работает Амикон на удалённом сервере уже более полугода.

      • Константин:

        То есть залогоненых в консоль пользователей у Вас на сервере нет?
        Логон — ввод пина — логоф и всё работает полгода?
        Если так, то супер. Спасибо, попробую.

        • Да, всё работает без сеанса пользователя, как и должно — ФПСУ клиент уже давно работает как служба.
          Если будете пробовать — одна просьба к Вам: по результатам отпишитесь. Буду благодарен, если обнаружите в рецепте какие-либо неточности.

          • Константин:

            Отписываюсь.
            Поднял на специально созданной виртуальной машине на ESXi 4.1.
            Версия ФПСУ-клиента 4.1 (слишком долго слали письмо для скачивания).
            Всё работает неплохо, пин вводить не надо, но… соединение при перезагрузке не поднимается. Поднимать его приходиться вручную. Я это делаю с помощью задания после перезагрузки. Где-то через полчаса оно рвётся, приходиться поднимать снова.
            Напишу видимо скрипт для отслеживания.
            Поняв Вашу концепцию (похожая была у меня в голове) делал уже сам. Поэтому небольшие неточности мог и не заметить. Единственное что я не понял, это зачем Вы играете метриками после разноса по разным подсетям. Я бы часть описания, с одной сетью и разными метриками, просто убрал, что бы не путать людей. =)

          • Спасибо, Константин, за информацию. По поводу перезагрузки — не понял ситуации. У меня — 4.1.18, и всё поднимается, как и на 3.6.какой-то версии. 4.1.0 не ставил — ничего сказать не могу. Пин код запоминает? Для службы Амикона автозапуск стоит?

            По поводу игры с метриками — архаизмы. Писал по ходу экспериментов, переходил на несколько подсетей уже вечером дома, забыл убить. Согласен с Вами — уберу лишний кусок из статьи, чтобы не путать людей :-).
            P.S. Констатин, у Вас на виртуальную машину usb чем «проброшен»?
            P.P.S Константин, Вы при подключении к ФПСУ банка не наблюдаете периодически проблемы с подключением (по факту ответ от ФПСУ банка возвращается через 9 секунд!!! после запроса). У меня с местным ФПСУ проблем нет, а с ФПСУ СПб — проблемы…

          • Константин:

            Пин код запоминает.
            Автозапуск стоит.
            Поднимаю соединение с помощью

            ip-client.exe srvconnect
            

            через задания, по расписанию. Поднимается нормально.
            Раньше пытался поднимать

            ip-client.exe srvconnect *пин код*
            

            Так вот, без пользователя в консоли, на WindowsXP, такая схема не работала! Ни терминальная сессия в консоль, ни телнет-сессия, ни назначенное задание, НЕ РАБОТАЛИ. Потому и не дорешал в своё время эту задачу.
            PS Начиная с версии 4.1 ESXi умеет «пробрасывать» ЮСБ-порты. Просто супер =).
            PPS Пока проблем вроде не было. Я сам в СПб. Могу выслать куски лога FPSU-client при установлении соединения.

            От себя:
            запуск по расписанию конечно не вариант, буду пытаться ловить пакеты и поднимать. Благо повторные соединения устанавливаются за пару секунд.

        • Константин, Амикон рекомендует для решения Ваших проблем установить версию 4.3.0, координаты для загрузки — в статье. Я уже поставил.

          • Константин:

            Свою проблему я решил написанием скрипта для ловли первого пакета от банк-клиента с последующим «поднятием» соединения до банка. Работает идеально. =)
            Соединение «отваливается» само через 35 минут. Я бы теперь предпочел возможность отключения канала по таймауту неактивности. Зачем лишний раз перегружать Сберовское «железо». =)
            Ссылка с форума на версию 4.3 «побилась». Лучшее — враг хорошего. Останусь пока на 4.1.

        • Версия 4.3.0 уже доступна к закачке с главной страницы Амикона.
          Константин, поделитесь пожалуйста скриптом, которым ловите пакеты в сторону хоста банка, буду благодарен. Буду вдвойне благодарен, если дадите добро разместить Ваш скрипт здесь, в этой статье :-).

        • Константин:

          Константин, опишите, пожалуйста, подробнее о прокидывании ключа на Esxi 4.1

          Пробывал прокинуть аллюминевый ключ на виртуальную машину XP и W2K3 на Esxi 4.1.
          Появляются устройства, но не как vpn key. В ручном режиме драйвера не устанавливаются.

          Спасибо

        • Константин:

          Константин, опишите подробнее про проброс ключа амикон в виртуальную машину.

          Я пытался пробросить серебрянный ключ в виртуальную машину XP и W2k3 на esxi.
          Не получилось. Система входит в цикл — постоянно определяет ключ как неизвестное устройство.

  2. По поводу автоподъёма канала (некая иммитация DOD своими руками) идея пришла следующая:
    - вместо второго сетевого интерфейса (Amicon) использовать VPN PPTP соединение до ISA хоста (убираем лишний сетевой адаптер, освобождаем активный порт и не только)
    - настраиваем на RRAS статический маршрут до хостов банка, указывая при этом на наш VPN интерфейс как на DOD (dial-on-demand) интерфейс.
    - в результате — VPN поднимется при первом же пакете в сторону сервера банка. Вот теперь и пришла пора поднять ФПСУ клиента
    - и VPN то я планирую создать по двум причинам: отдельный сетевой интерфейс (блокировки фильтр Амикона сможет только на нём создавать), и DOD пакетом по маршруту к серверам банка, причём событие изменения состояния интерфейса мы уже можем поймать!
    - ну и обработка события — через WMI. Пример того, как можно подцепиться к событиям скриптом: «Running a Script Based on an Event«, использовать же планирую CommandLineEventConsumer. А в скрипте (powershell будет) — запись в журнал событий и ip-client srvconnect.
    Планирую в ближайшее время протестировать эту идею. Шансы на успех очевидны на первый взгляд. Однако, при первой попытке соединения клиент-банк результата не добъётся (первые пакеты улетят ещё мимо Amicon FPSU клиента), но уже второя попытка увенчается успехом, что неплохо.
    P.S. Нашёл простейший пример своеобразного мониторинга канала до банка.

  3. Наткнулся в форуме разработчика решения на описание подключения ключа с другой машины к серверу с Амикон ФПСУ клиентом — http://www.amicon.ru/forum/viewtopic.php?t=983. Вопрос коллега решил софтверно, с использованием “USB over Network”.

  4. Vano:

    Вот тут нам пригодится виртуализация! Лепи себе отдельные машины и радуйся! :))

    • Именно так! Только необходимо подобрать решение для проброса USB на виртуальную машину. Мы подобрали, в ближайшее время опишу его.

      • Константин:

        Добрый день!Можете подсказать какое решение вы подобрали для проброса Амикона в виртуальную машину?

        • Пробовали два решения, остановились на netUSB-400i. Его же можно найти под брендом VScom NetUSB-400i. Одного этого девайса под все наши Амикон-маршрутизаторы хватило. Один порт мы подключили к одному серверу, другой — к другому, третий — к третьему. Через него прекрасно работают и USB накопители, и можно подключить usb хабы (правда — эта возможность не заявлена производителем, но достаточно устойчиво работает).

          Руки пока не дошли статью об этом девайсе написать, но дойдут однажды, это факт.

          • Константин:

            А не подскажете где это решение можно приобрести? Погуглив — нашел только в Белорусии… Причём продажные цены по 180$, а в обзорах пишут что цена должна быть около 80$… Ну и хотелось  бы где-нибудь в России найти… :)

        • Мои коллеги заказали это устройство через http://www.insat.ru. Срок поставки 7-10 дней. Доставка включена в счёт. Доставка Pony Express. Счёт с доставкой на сумму 4700 руб. Но с документами всё в порядке.
          До сих пор работает вполне успешно. С одного устройства подключаем два разных Амикон ключа к двум разным виртуальным Амикон-маршрутизаторам. На этапе перезагрузки приходится проверять, всё-ли прошло успешно (было несколько инцидентов, когда при перезагрузке по какой-то причине порт «отвалился»). А так — вполне устойчивое решение.

          • Константин:

            Спасибо за информацию, у них в наличии не было, заказал в другом месте. Доставка была ПЭКом, но уложился за все про все дня в четыре, наверное. Цена почти та же (чутку меньше за счет доставки).Работает все на ура — еще раз спасибо за такой ценный продукт.Сейчас бы еще понять как заставить его при перезагрузке автоматом девайс принимать… По крайней мере в 2008 у меня по умолчанию при загрузке он не подцепляется. А вы написали что это являлось «инцендентом» а не правилом. Не подскажете какая версия программы USBIP у вас стоит? Сайта с обновлениями программы почему-то найти не могу :(

          • Константин » Рад, что у Вас всё получилось и мой рецепт помог. Версию USBIP в понедельник напишу. P.S. у меня в роли гостевых ОС, на которых построены маршрутизаторы, используются Windows 2003 Server, не 2008.

  5. Кирилл:

    У нас стоит Амикон 4.30.   Попробовали пользовать его через МТС ЮСБ модем, ключик ВПН стал определятся как флэшка, какие драйвера надо удалить, чтобы всё поправить?

  6. Константин:

    Добрый день!Получилось посмотреть версию USBIP ?У меня 1.00.0025…Никак не могу придумать как заставить после перезагрузки автоматом подцеплять устройство в клиентскую машину…Можно конечно запускать программу в которой будет прописан сценарий щелкать мышкой по кнопке в программе что добавляет устройства, но как-то это неаккуратненько получается на мой взгляд…

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

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

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