Skip to content

Skype for Business и Juniper SRX внешний доступ

Небольшой пост по конкретной проблеме в взаимодействии Skype for Business и Juniper SRX.

Проблема:

Показ экрана работает внутри сети. Показ экрана не работает при подключении снаружи.

Проблема оказалась в следующем:

skype-for-business-d0b8-juniper-srx.png

Что происходит по шагам:

  • SfB клиент инициирует TCP подключение отправив SYN сегмент
  • SfB сервер сбрасывает это TCP подключения отправив RST сегмент
  • Juniper записывает эту TCP сессию на удаление через 2 секунды
  • Клиент снова инициирует TCP подключение с теми же самими параметрами (IP адрес источника, IP адрес получателя, порт и протокол)
  • Сервер принимает TCP подключение
  • Но для Juniper эта та же самая сессия, помеченная для удаления
  • Спустя приблизительно 1,5 секунды с момента установления TCP сессии Juniper разрывает сессию
  • Все следующие пакеты от клиента будут отбрасываться Juniper потому что они не подпадают ни под одну отслеживаемую сессию. И они не смогу создать новую сессию потому что не содержат SYN флага.

Проблемы могло бы не быть, если выполнялось одно из условий:

  • Клиент Skype for Business инициировал каждое новое соединение TCP с новым портом
  • SRX закрывал TCP сессию сразу при получении RST сегмента

К счастью, в SRX существует возможность отключить 2 секундное ожидание перед разрывом TCP сессии. Существует даже отдельная KB на сайте Juniper посвященная этой проблеме [2].

В разделе конфигурации security flow tcp-session есть параметры изменяющие работу с TCP сессиями. Нас интересует настройка rst-invalidate-session. Если ее включить, то соединение будет разрываться сразу при получении RST сегмента.

Решение кратко:

В режиме конфигурации SRX ввести

set security flow tcp-session rst-invalidate-session
commit
exit

Источник 1

Источник 2