"심슨 씨가 좋아해.
WFP 자체는 애플리케이션 계층의 콘텐츠를 생성하거나 주입할 수 없고, 패킷 및 스트림 계층에서만 동작합니다. 따라서 브라우저에 “연결 재설정” 오류 대신 사용자 정의 알림 페이지를 보여주려면 WFP 차단과 함께 HTTP 처리를 담당하는 사용자 모드 콜아웃을 결합해야 합니다. 일반적인 워크플로우는 ALE 계층(FWPM_LAYER_ALE_AUTH_CONNECT_V4/V6)에서 아웃바운드 TCP 연결을 가로채고 정책 위반을 감지했을 때 패킷을 드롭하는 대신 목적지를 127.0.0.1:포트로 재작성하여 로컬 루프백 리스너로 리디렉션하는 방식입니다. 브라우저는 로컬 서비스와 TCP 핸드셰이크를 완료하고, 해당 서비스가 HTTP/1.1 200 OK와 HTML 콘텐츠를 반환하면 정상적인 알림 페이지가 표시됩니다.
DNS 조작을 피하고 싶다면 스트림 계층(FWPM_LAYER_STREAM_V4) 콜아웃을 사용해 원래 연결을 종료하고 FwpsStreamInjectAsync0 API를 통해 합성된 HTTP 응답을 직접 TCP 스트림에 삽입할 수 있습니다. 다만 이 경우 시퀀스 번호와 버퍼 관리가 까다롭기 때문에 Microsoft 공식 문서에서도 사용자 모드 콜아웃을 통한 안전한 버퍼 처리와 주입을 권장합니다. 가장 안정적이고 유지보수하기 쉬운 접근 방식은 ALE 연결 리디렉션을 통해 로컬 웹 서비스로 보내는 방법이며, 이는 저수준 스트림 주입의 복잡성을 피하면서 브라우저 경험을 일관되게 유지할 수 있습니다.
위의 답변이 질문 해결에 도움이 되었다면, "답변 채택(Accept Answer)"을 눌러 주시기 바랍니다. 그러면 동일한 문제를 겪는 다른 커뮤니티 구성원들이 쉽게 해결책을 찾을 수 있습니다. 여러분의 기여에 진심으로 감사드립니다.
해리.