Udostępnij przez


Rozszerzalna klasa pomocnika platformy filtrowania systemu Windows

Platforma filtrowania systemu Windows (WFP) obejmuje klasę pomocnika Network Diagnostics Framework (NDF), zwaną klasą pomocnika Platformy filtrowania (FPHC). Funkcja FPHC może pomóc zidentyfikować główne przyczyny problemów z łącznością spowodowanych przez program WFP. Deweloperzy zapory sieciowej innych firm mogą implementować własne klasy pomocnika NDF. Rozszerzalność FPHC umożliwia wywoływanie zewnętrznych klas pomocniczych podczas diagnostyki.

Ten temat zakłada znajomość API WFP.

Dlaczego warto rozszerzyć FPHC?

Wszyscy deweloperzy, którzy piszą aplikacje wywołujące interfejs API WFP, powinni napisać klasę pomocnika NDF, która rozszerza funkcję FPHC.

FPHC może zidentyfikować WFP jako przyczynę problemu z łącznością. Jeśli jest dostępna, usługa FPHC może również zidentyfikować dostawcę, który utworzył filtr blokujący ruch sieciowy. FPHC przekazuje te informacje do NDF, co z kolei może powiadomić użytkownika, że WFP powoduje problem z łącznością i podaje nazwę dostawcy blokującego ruch.

Jednak FPHC nie może sugerować akcji naprawczej dla użytkownika, ani nie może podać przyczyny, dla której filtr blokuje ruch do użytkownika. Tylko rozszerzenie FPHC może wykonywać te zadania.

Rozważ użycie aplikacji zapory innej firmy, która wywołuje interfejs API WFP. Jeśli zapora innej firmy implementuje rozszerzenie FPHC, można zaimplementować akcje niestandardowe w celu obsługi problemów z łącznością zidentyfikowanych przez NDF. Gdy funkcja NDF diagnozuje, że aplikacja została zablokowana przez zaporę innej firmy, rozszerzenie FPHC może obsłużyć zdarzenie zablokowania. Jednym ze sposobów, w jaki rozszerzenie FPHC może obsłużyć zdarzenie, jest przedstawienie użytkownikowi monitu o odblokowanie programu przy użyciu zapory, a następnie odblokowanie programu po potwierdzeniu użytkownika. Alternatywnie rozszerzenie FPHC może obsłużyć zdarzenie, powiadamiając użytkownika o przyczynie zablokowania aplikacji, takiej jak aplikacja została zablokowana, ponieważ została uznana za złośliwe oprogramowanie przez zaporę.

Informacje o diagnostyce WFP

Gdy funkcja NDF jest wywoływana w celu zdiagnozowania problemu z siecią, klasy pomocnicze są konsultowane w celu określenia przyczyny problemu. Jeśli klasa pomocnicza wyższego poziomu ustali, że awaria sieci może być spowodowana przez WFP, generuje hipotezę dla FPHC na podstawie dostępnych informacji. NDF przekazuje tę hipotezę, w postaci kilku atrybutów zdarzeń, do FPHC. Te atrybuty są szczegółowo opisane w sekcji Atrybutów Zdarzeń FPHC poniżej.

Problem z siecią można opisać jako problem z łącznością wpływający na określoną próbę połączenia. Na przykład użytkownik mógł przypadkowo zablokować aplikację, klikając przypadkowo Nie zezwalaj na. Następnie zapora zablokuje aplikacji powiązanie z dowolnym portem. Użytkownik, nie wiedząc, dlaczego aplikacja jest zablokowana, może spróbować zdiagnozować problem za pośrednictwem punktu wejścia oferowanego przez aplikację. Funkcja FPHC sprawdzi dzienniki, a jeśli znajdzie dopasowanie, pobierze identyfikator filtru i identyfikator dostawcy danego filtru. W tym momencie FPHC wie, kto jest właścicielem tego filtru, i przekaże proces diagnostyczny do odpowiedniej klasy pomocniczej w celu dalszej diagnostyki.

Najnowsze zdarzenie w dziennikach zdarzeń programu WFP w celu dopasowania do atrybutów jest wybierane jako istotne dla problemu z siecią. Jeśli nie znaleziono pasujących zdarzeń i czas wystąpienia zdarzenia jest uwzględniony w dzienniku programu WFP, FPHC wskazuje NDF, że jest sprawny. Jeśli nie znaleziono pasujących zdarzeń, a dzienniki programu WFP nie zawierają czasu wystąpienia zdarzenia, FPHC zwraca status nieokreślony do NDF.

Jeśli zostanie znalezione zgodne zdarzenie, funkcja FPHC używa identyfikatora dostawcy filtru, który spowodował zdarzenie, aby zidentyfikować dostawcę reguły zabezpieczeń, która zablokowała łączność. Funkcja FPHC sprawdza następnie, czy dla tego dostawcy istnieje rozszerzenie klasy pomocniczej. Jeśli zostanie znaleziony taki dostawca, FPHC generuje hipotezę dla niego, a następnie NDF wywołuje rozszerzenie. Rozszerzenie powinno zwrócić użytkownikowi przydatne informacje diagnostyczne i naprawy.

Rejestracja klasy pomocniczej

Rozszerzenie FPHC musi być zarejestrowane, jak opisano w Rejestrowanie rozszerzeń klas pomocnika NDF. Deweloperzy implementujący klasę pomocnika muszą zarejestrować swoje rozszerzenia, aby upewnić się, że rozszerzenie jest wywoływane przez usługę NDF, jeśli jest to konieczne. pasujący atrybut opisany poniżej musi być przechowywany w rejestrze w HKLM\System\CurrentControlSet\Control\NetDiagFx\VendorName\HostDLLs\Klasa Pomocnicza DLL\HelperClasses\Nazwa Klasy Pomocniczej\Pasujące Atrybuty.

W poniższej tabeli przedstawiono pasujący atrybut używany do identyfikowania hipotezy używanej w diagnostyce w dzienniku zdarzeń programu WFP.

Nazwa Typ Opis
Identyfikator dostawcy REG_SZ Identyfikator GUID rozszerzenia FPHC. Ta wartość musi być taka sama jak identyfikator GUID dostawcy WFP.
W tym ciągu jest uwzględniana wielkość liter. Powinien być przechowywany w rejestrze wielkimi literami, umieszczony w nawiasach klamrowych i z myślnikami. Na przykład {C200E360-38C5-11CE-AE62-08002B2B79EF} jest prawidłowym identyfikatorem dostawcy.

Gdy identyfikator dostawcy filtru blokującego pasuje do klasy zarejestrowanej pomocniczej, FPHC informuje NDF o wywołaniu tej klasy pomocniczej, rozszerzając w ten sposób możliwości diagnostyczne FPHC.

Atrybuty zdarzeń FPHC

W poniższej tabeli wymieniono atrybuty zdarzeń skojarzone z każdym zgodnym zdarzeniem. Każdy atrybut zdarzenia jest przechowywany w strukturze HELPER_ATTRIBUTE. Te atrybuty są przekazywane przez NDF do FPHC po znalezieniu zgodnego zdarzenia. Można je następnie przekazać do rozszerzeń FPHC.

Atrybut wartość ATTRIBUTE_TYPE Opis
Identyfikator GUID dostawcy AT_GUID Identyfikator GUID dostawcy skojarzonego z filtrem.
Sygnatura czasowa AT_OCTET_STRING Bufor typu FILETIME określający czas wystąpienia zdarzenia. Sygnatura czasowa może służyć do unikatowego identyfikowania zdarzenia.
protokoł IP AT_UINT32 Protokół warstwy transportu w formacie UINT8.
LocalAddr AT_SOCKADDR Lokalny adres IP i port, przechowywany w strukturze DIAG_SOCKADDR.
RemoteAddr AT_SOCKADDR Zdalny adres IP i port przechowywany w strukturze DIAG_SOCKADDR.
userId AT_OCTET_STRING Bufor typu SID reprezentujący identyfikator userid. Jeśli identyfikator userId ma długość 0, identyfikator SID jest niedostępny.
Identyfikator aplikacji AT_STRING Bufor, który przechowuje pobrany identyfikator aplikacji. Jeśli identyfikator appId ma wartość L", identyfikator aplikacji jest niedostępny.

Obsługa zdarzeń FPHC

Przed sugerowaniem informacji diagnostycznych i naprawczych dla użytkownika rozszerzenie FPHC powinno zebrać więcej danych niż są dostarczane przez powiadomienia FPHC. Te dane można uzyskać z funkcji zarządzania zdarzeniami WFP. Te funkcje przedstawiono w przykładzie Wyświetlanie zdarzeń sieci.

Bardziej szczegółowy przykład zarządzania zdarzeniami jest zawarty w zestawie SDK. Kod źródłowy przykładu można znaleźć w lokalizacji instalacji zestawu SDK w obszarze C:\Program Files\Microsoft SDKs\Windows\<numer wersji>\Samples\NetDs\WFP\DiagEvents. Zestaw SDK Windows Vista jest dostępny w Centrum Pobierania .

Wbudowana diagnostyka FPHC

W przypadku braku rozszerzenia FPHC, FPHC może zdiagnozować poniższe scenariusze. Większość błędów łączności diagnozowanych przez FPHC występuje, ponieważ zapory blokują ruch. Scenariusze protokołu IPsec są mniej typowe.

W poniższej tabeli przedstawiono niektóre scenariusze powodujące błędy łączności, które mogą być zdiagnozowane przez FPHC, wraz z opisem i informacjami o naprawie, które są przekazywane do NDF.

Scenariusz Opis niskiego stanu zdrowia Informacje o naprawie
Upuszczanie zapory Ustawienia zapory na tym komputerze blokują połączenie. Sprawdź ustawienia zapory.
Awaria trybu głównego Nie można nawiązać połączenia z powodu niezgodności zasad zabezpieczeń protokołu IPsec. Skontaktuj się z właścicielem zasad protokołu IPsec.
Niepowodzenie trybu szybkiego Nie można nawiązać połączenia z powodu niezgodności zasad zabezpieczeń protokołu IPsec. Skontaktuj się z właścicielem zasad protokołu IPsec.
Niepowodzenie trybu użytkownika Nie można nawiązać połączenia z powodu niezgodności zasad zabezpieczeń protokołu IPsec. Skontaktuj się z właścicielem zasad protokołu IPsec.
Błąd uwierzytelniania Nie można nawiązać połączenia, ponieważ główny urząd certyfikacji na tym komputerze nie jest zgodny z głównym urzędem certyfikacji na komputerze zdalnym. Zaktualizuj zaufany certyfikat główny.
Wygasły certyfikat Certyfikat używany do uwierzytelniania IPsec wygasł. Zażądaj certyfikatu.
Inne błędy certyfikatów Nie można odnaleźć prawidłowego certyfikatu na potrzeby uwierzytelniania protokołu IPsec. Zażądaj certyfikatu.
Niepowodzenie protokołu Kerberos Komputer nie jest częścią tej domeny. Dołącz ten komputer do domeny.
Klucz wspólny Zresetuj klucze współdzielone. Zresetuj klucze wstępnie udostępnione.

platformy filtrowania systemu Windows

projektowanie rozszerzeń klas pomocnika NDF

Rejestracja rozszerzeń klasy pomocniczej NDF

przykłady klas pomocnika NDF