Использование отслеживания прокси-подключений

Отслеживание прокси-подключений поддерживается в Windows 8 и более поздних версиях Windows.

Эта функция МПП упрощает отслеживание "записей" перенаправления от первоначального перенаправления подключения к окончательному подключению к месту назначения. ВПП также позволяет драйверу выноски перенаправлять подключения.

Отслеживание прокси-подключений

При наличии нескольких прокси-серверов (например, разработанных разными независимыми поставщиками программного обеспечения) подключение, используемое одной стороной для связи с конечным назначением, в свою очередь, может быть перенаправлено второй стороной; и что новое подключение может быть перенаправлено исходной стороной. Без отслеживания подключения исходное подключение может никогда не достичь конечного пункта назначения, так как оно зависает в бесконечном цикле прокси-сервера.

К идентификаторам полей данных для поддержки отслеживания подключений относятся:

FWPS_FIELD_Xxx_ALE_ORIGINAL_APP_ID
Полный путь к исходному приложению для прокси-подключений. Если приложение не было прокси-сервером, этот путь идентичен xxx_ALE_APP_ID.

FWPS_FIELD_Xxx_PACKAGE_ID
Идентификатор пакета — это идентификатор безопасности (SID), который идентифицирует связанный процесс AppContainer.

Перенаправление подключений

Драйвер выноски вызывает функцию FwpsRedirectHandleCreate0 , чтобы создать дескриптор, который можно использовать для перенаправления TCP-подключений.

Этот раздел содержит следующие подразделы:

Использование дескриптора перенаправления

Запрос состояния перенаправления

Использование дескриптора перенаправления

Прежде чем выноска перенаправления подключения ALE сможет перенаправлять подключения к локальному процессу, она должна получить дескриптор перенаправления с функцией FwpsRedirectHandleCreate0 и поместить дескриптор в структуру FWPS_CONNECT_REQUEST0 . Выноска изменяет структуру в classifyFn для уровней перенаправления подключения ALE.

Структура FWPS_CONNECT_REQUEST0 содержит следующие элементы для перенаправления:

Термин Описание

localRedirectHandle

Дескриптор перенаправления, созданный драйвером выноски путем вызова функции FwpsRedirectHandleCreate0 .

localRedirectContext

Область контекста драйвера выноски, выделенная драйвером выноски путем вызова функции ExAllocatePoolWithTag .

localRedirectContextSize

Размер (в байтах) области контекста, предоставленной выноской.

После того как драйвер выноски завершит использование дескриптора перенаправления, он должен вызвать функцию FwpsRedirectHandleDeки0 , чтобы уничтожить дескриптор.

Запрос состояния перенаправления

Драйвер выноски вызывает функцию FwpsQueryConnectionRedirectState0 , чтобы получить состояние перенаправления подключения. Перечисление FWPS_CONNECTION_REDIRECT_STATE является типом возвращаемого значения для вызова функции FwpsQueryConnectionRedirectState0 .

Если состояние перенаправления FWPS_CONNECTION_NOT_REDIRECTED, ALE_CONNECT_REDIRECT выноска может перейти к прокси-серверу подключения.

Если состояние перенаправления — FWPS_CONNECTION_REDIRECTED_BY_SELF, выноска ALE_CONNECT_REDIRECT должна возвращать FWP_ACTION_PERMIT/FWP_ACTION_CONTINUE.

Если состояние перенаправления FWPS_CONNECTION_REDIRECTED_BY_OTHER, выноска ALE_CONNECT_REDIRECT может перейти к прокси-серверу подключения, если она не доверяет результату другого инспектора.

Если состояние перенаправления FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF, выноска ALE_CONNECT_REDIRECT не должна выполнять перенаправление, даже если результаты других инспекторов недопустимы. В этом случае необходимо разрешить или заблокировать подключение (на уровне ALE_AUTH_CONNECT).