Skype for Business и Juniper SRX внешний доступ
Небольшой пост по конкретной проблеме в взаимодействии Skype for Business и Juniper SRX.
Проблема:
Показ экрана работает внутри сети. Показ экрана не работает при подключении снаружи.
Проблема оказалась в следующем:
Что происходит по шагам:
- 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