Типы выносок
С МПП можно использовать следующие типы выносок:
Встроенная выноска проверки
Этот тип выноски всегда возвращает FWP_ACTION_CONTINUE из функции classifyFn и не изменяет сетевой трафик. Примером такого типа выноски является выноска, которая собирает статистику сети.
Для этого типа выноски тип действия фильтра (заданный элементом Type структуры FWPS_ACTION0 ) должен иметь значение FWP_ACTION_CALLOUT_INSPECTION.
Выноска внеполосной проверки
Этот тип выноски не изменяет сетевой трафик. Вместо этого он откладывает любую проверку, выполняемую за пределами функции classifyFn , путем "ожидания" указанных данных, а затем повторной передачи данных обратно в стек TCP/IP с помощью одной из функций внедрения пакетов. Ожидание реализуется путем клонирования указанных данных, а затем возврата FWP_ACTION_BLOCK из функции classifyFn , которая имеет FWPS_CLASSIFY_OUT_FLAG_ABSORB битового набора.
Выноска встроенного изменения
Этот тип выноски изменяет сетевой трафик, сначала делая клон указанных данных, затем изменяя клон и, наконец, внедряя измененный клон обратно в стек TCP/IP из функции classifyFn . Этот тип выноски также возвращает FWP_ACTION_BLOCK из функции classifyFn с набором битов FWPS_CLASSIFY_OUT_FLAG_ABSORB .
Тип действия фильтра для этого типа выноски должен иметь значение FWP_ACTION_CALLOUT_TERMINATING.
Выноска по внеполосным изменениям
Этот тип выноски сначала ссылается на указанный пакет с помощью функции FwpsReferenceNetBufferList0 , для параметра intentToModify задано значение TRUE. Затем выноска возвращает FWP_ACTION_BLOCK с FWPS_CLASSIFY_OUT_FLAG_ABSORB битом, заданным из функции classifyFn . Когда пакет готов к изменению за пределами classifyFn, выноска клонирует указанный пакет (как только он клонируется, исходный пакет можно разыменовать). Затем выноска изменяет клон и внедряет измененный пакет обратно в стек TCP/IP.
Тип действия фильтра для этого типа выноски должен иметь значение FWP_ACTION_CALLOUT_TERMINATING.
Выноска перенаправления
Дополнительные сведения об этом типе выноски см. в разделе Использование перенаправления привязки или подключения.
Существует два типа выносок перенаправления:
- Выноска перенаправления привязки позволяет драйверу выноски изменять локальный адрес и локальный порт сокета.
- Выноска перенаправления подключения позволяет драйверу выноски изменять удаленный адрес и удаленный порт подключения.
Тип действия фильтра для этого типа выноски должен иметь значение FWP_ACTION_PERMIT.
Дополнительные сведения о FWPS_CLASSIFY_OUT_FLAG_ABSORB см. в разделе FWPS_CLASSIFY_OUT0. Этот флаг недопустим ни на одном уровне сброса МПП. Возврат FWP_ACTION_BLOCK с флагом FWPS_CLASSIFY_OUT_FLAG_ABSORB , заданным из функции classifyFn , приводит к тому, что пакет будет отброшен автоматически таким образом, что пакет не достигнет ни одного из уровней сброса МПП, а также не приведет к созданию событий аудита.
Несмотря на то, что клонированные списки чистых буферов можно изменить, например путем добавления или удаления чистых буферов, многомерных выражений или и того, и другого, выноски должны отменить такие изменения перед вызовом функции FwpsFreeCloneNetBufferList0 .
Чтобы сосуществовать с другими выносками, выполняющими проверку пакетов, изменение пакета или перенаправление подключения, перед тем как пакет будет отправлен с помощью механизма reference/clone-drop-reinject, выноска должна "жестко" удалить исходный пакет, сняв флаг FWPS_RIGHT_ACTION_WRITE в члене правструктуры FWPS_CLASSIFY_OUT0 , возвращаемой функцией classifyFn . Если флаг FWPS_RIGHT_ACTION_WRITE установлен при вызове classifyFn (это означает, что пакет может быть отправлен, а затем перепроектирован или изменен), выноска не должна содержать указания и не должна изменять текущий тип действия; и он должен дождаться выноски с более высоким весом, чтобы внедрить клон, который может быть изменен.
Флаг FWPS_RIGHT_ACTION_WRITE следует устанавливать всякий раз, когда выноска выполняет классификацию. Драйвер выноски должен проверить наличие флага FWPS_RIGHT_ACTION_WRITE, чтобы проверка права выноски на возврат действия. Если этот флаг не установлен, выноска по-прежнему может вернуть FWP_ACTION_BLOCK действие, чтобы назначить вето на FWP_ACTION_PERMIT действие, возвращенное предыдущей выноской. В примере, показанном в разделе Использование выноски для глубокой проверки, функция просто завершает работу, если флаг не установлен.
Функция FwpsPendOperation0 используется для пакетов, поступающих из слоев фильтрацииуправления FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_XXX, FWPM_LAYER_ALE_AUTH_LISTEN_XXX или FWPM_LAYER_ALE_AUTH_CONNECT_XXX.
Функция FwpsPendClassify0 используется для пакетов, поступающих из следующих слоев фильтрации во время выполнения:
FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V4 FWPS_LAYER_ALE_ENDPOINT_CLOSURE_V6 FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 FWPS_LAYER_ALE_BIND_REDIRECT_V4 FWPS_LAYER_ALE_BIND_REDIRECT_V6
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по