Udostępnij za pośrednictwem


Rozwiązywanie problemów przy użyciu narzędzia diagnostycznego chronionej sieci szkieletowej

W tym artykule opisano użycie narzędzia diagnostycznego chronionej sieci szkieletowej do identyfikowania i korygowania typowych błędów we wdrożeniu, konfiguracji i trwającej operacji chronionej infrastruktury sieci szkieletowej. Obejmuje to usługę Ochrona hosta (HGS), wszystkie chronione hosty i usługi pomocnicze, takie jak DNS i Active Directory.

Dotyczy: Windows Server 2022, Windows Server 2019, Windows Server 2016

Narzędzie diagnostyczne może służyć do przeprowadzania pierwszego przebiegu podczas klasyfikowania nieudanej chronionej sieci szkieletowej, zapewniając administratorom punkt wyjścia do rozwiązywania awarii i identyfikowania nieprawidłowo skonfigurowanych zasobów. Narzędzie nie zastępuje dźwiękowego chwytania chronionej sieci szkieletowej i służy tylko do szybkiego weryfikowania najczęstszych problemów napotykanych podczas codziennych operacji.

Pełną dokumentację poleceń cmdlet używanych w tym artykule można znaleźć w dokumentacji modułu HgsDiagnostics.

Uwaga

Podczas uruchamiania narzędzia diagnostyki chronionej sieci szkieletowej (Get-HgsTrace -RunDiagnostics) może zostać zwrócony nieprawidłowy stan, twierdząc, że konfiguracja HTTPS jest uszkodzona, gdy jest w rzeczywistości nie uszkodzona lub nie jest używana. Ten błąd można zwrócić niezależnie od trybu zaświadczania usługi HGS. Możliwe główne przyczyny są następujące:

  • Protokół HTTPS jest rzeczywiście nieprawidłowo skonfigurowany/uszkodzony
  • Używasz zaświadczania zaufanego przez administratora, a relacja zaufania jest uszkodzona. Jest to niezależnie od tego, czy protokół HTTPS jest prawidłowo skonfigurowany, niewłaściwie, czy w ogóle nie jest używany. Należy pamiętać, że diagnostyka zwróci ten nieprawidłowy stan tylko podczas określania wartości docelowej hosta funkcji Hyper-V. Jeśli diagnostyka jest przeznaczona dla usługi Ochrona hosta, zwrócony stan będzie poprawny.

Szybki start

Można zdiagnozować hosta chronionego lub węzła usługi HGS, wywołując następujące elementy z sesji programu Windows PowerShell z uprawnieniami administratora lokalnego:

Get-HgsTrace -RunDiagnostics -Detailed

Spowoduje to automatyczne wykrycie roli bieżącego hosta i diagnozowanie wszelkich istotnych problemów, które można wykryć automatycznie. Wszystkie wyniki wygenerowane podczas tego procesu są wyświetlane ze względu na obecność przełącznika -Detailed .

W pozostałej części tego tematu przedstawiono szczegółowy przewodnik dotyczący zaawansowanego Get-HgsTrace użycia zadań, takich jak diagnozowanie wielu hostów jednocześnie i wykrywanie złożonej błędnej konfiguracji między węzłami.

Omówienie diagnostyki

Diagnostyka chronionej sieci szkieletowej jest dostępna na dowolnym hoście z zainstalowanymi chronionymi narzędziami i funkcjami maszyn wirtualnych, w tym hostami z systemem Server Core. Obecnie diagnostyka jest dołączona do następujących funkcji/pakietów:

  • Rola usługi Ochrona hosta
  • Obsługa funkcji Hyper-V ochrona hosta
  • Narzędzia osłony maszyn wirtualnych do zarządzania siecią szkieletową
  • Narzędzia administracji zdalnej serwera

Oznacza to, że narzędzia diagnostyczne będą dostępne na wszystkich chronionych hostach, węzłach HGS, niektórych serwerach zarządzania sieci szkieletowej i wszystkich stacjach roboczych systemu Windows 10 z zainstalowanym narzędziem RSAT . Diagnostykę można wywołać z dowolnego z powyższych maszyn z zamiarem diagnozowania dowolnego chronionego hosta lub węzła HGS w chronionej sieci szkieletowej; korzystając ze zdalnych obiektów docelowych śledzenia, diagnostyka może zlokalizować hosty inne niż uruchomiona diagnostyka i nawiązać z nią połączenie.

Każdy host docelowy przez diagnostykę jest określany jako "element docelowy śledzenia". Obiekty docelowe śledzenia są identyfikowane przez ich nazwy hostów i role. Role opisują funkcję wykonywaną przez dany cel śledzenia w chronionej sieci szkieletowej. Obecnie obiekty docelowe śledzenia obsługują HostGuardianService i GuardedHost role. Należy pamiętać, że host może jednocześnie zajmować wiele ról i jest również obsługiwany przez diagnostykę, jednak nie należy tego robić w środowiskach produkcyjnych. Hosty HGS i Hyper-V powinny być przechowywane oddzielnie i osobno przez cały czas.

Administratorzy mogą rozpocząć wszystkie zadania diagnostyczne, uruchamiając polecenie Get-HgsTrace. To polecenie cmdlet wykonuje dwie odrębne funkcje na podstawie przełączników dostępnych w czasie wykonywania: zbieranie śladów i diagnostyka. Te dwa połączone składają się na całość narzędzia diagnostycznego chronionej sieci szkieletowej. Chociaż nie jest to jawnie wymagane, najbardziej przydatna diagnostyka wymaga śledzenia, które można zbierać tylko przy użyciu poświadczeń administratora w obiekcie docelowym śledzenia. Jeśli niewystarczające uprawnienia są przechowywane przez użytkownika wykonującego zbieranie śledzenia, ślady wymagające podniesienia uprawnień nie powiedzą się, podczas gdy wszystkie inne osoby zostaną przekazane. Umożliwia to częściową diagnostykę w przypadku, gdy operator z niepełnym uprawnieniami wykonuje klasyfikację.

Zbieranie śladów

Domyślnie Get-HgsTrace będzie zbierać tylko ślady i zapisywać je w folderze tymczasowym. Ślady mają postać folderu, nazwanego po hoście docelowym, wypełnione specjalnie sformatowanymi plikami, które opisują sposób konfigurowania hosta. Ślady zawierają również metadane opisujące sposób wywoływanego diagnostyki w celu zbierania śladów. Te dane są używane przez diagnostykę do ponownego wypełniania informacji o hoście podczas ręcznej diagnostyki.

W razie potrzeby można ręcznie przejrzeć ślady. Wszystkie formaty są czytelne dla człowieka (XML) lub mogą być łatwo sprawdzane przy użyciu standardowych narzędzi (na przykład certyfikatów X509 i rozszerzeń powłoki kryptograficznej systemu Windows). Należy jednak pamiętać, że ślady nie są przeznaczone do ręcznej diagnostyki i zawsze bardziej skuteczne jest przetwarzanie śladów za pomocą urządzeń diagnostycznych programu Get-HgsTrace.

Wyniki uruchamiania kolekcji śledzenia nie wskazują na kondycję danego hosta. Po prostu wskazują, że ślady zostały pomyślnie zebrane. Należy użyć funkcji diagnostyki, Get-HgsTrace aby ustalić, czy ślady wskazują środowisko awarii.

Za pomocą parametru -Diagnostic można ograniczyć zbieranie śladów tylko do tych śladów wymaganych do obsługi określonej diagnostyki. Zmniejsza to ilość zebranych danych, a także uprawnienia wymagane do wywołania diagnostyki.

Diagnoza

Zebrane ślady można zdiagnozować, podając Get-HgsTrace lokalizację śladów za pośrednictwem parametru -Path -RunDiagnostics i określając przełącznik. Get-HgsTrace Ponadto można wykonać zbieranie i diagnostykę w jednym przekazaniu, podając -RunDiagnostics przełącznik i listę obiektów docelowych śledzenia. Jeśli nie podano żadnych obiektów docelowych śledzenia, bieżąca maszyna jest używana jako niejawny element docelowy, a jego rola jest wnioskowana przez sprawdzenie zainstalowanych modułów programu Windows PowerShell.

Diagnostyka zapewni wyniki w formacie hierarchicznym pokazującym, które elementy docelowe śledzenia, zestawy diagnostyczne i indywidualna diagnostyka są odpowiedzialne za konkretną awarię. Błędy obejmują zalecenia dotyczące korygowania i rozwiązywania problemów, jeśli można określić, jakie działania należy podjąć dalej. Domyślnie przekazywanie i nieistotne wyniki są ukryte. Aby wyświetlić wszystko przetestowane przez diagnostykę -Detailed , określ przełącznik. Spowoduje to wyświetlenie wszystkich wyników niezależnie od ich stanu.

Istnieje możliwość ograniczenia zestawu diagnostyki uruchamianej przy użyciu parametru -Diagnostic . Pozwala to określić, które klasy diagnostyczne powinny być uruchamiane względem obiektów docelowych śledzenia i pomijać wszystkie inne. Przykłady dostępnych klas diagnostycznych obejmują sieci, najlepsze rozwiązania i sprzęt klienta. Zapoznaj się z dokumentacją poleceń cmdlet, aby znaleźć aktualną listę dostępnych diagnostyki.

Ostrzeżenie

Diagnostyka nie zastępuje silnego potoku monitorowania i reagowania na zdarzenia. Dostępny jest pakiet programu System Center Operations Manager do monitorowania chronionych sieci szkieletowych, a także różne kanały dziennika zdarzeń, które można monitorować w celu wczesnego wykrywania problemów. Diagnostyka może następnie służyć do szybkiego klasyfikacji tych błędów i ustanowienia przebiegu akcji.

Diagnostyka określania wartości docelowej

Get-HgsTrace działa względem obiektów docelowych śledzenia. Obiekt docelowy śledzenia to obiekt odpowiadający węzłowi usługi HGS lub chronionemu hostowi wewnątrz chronionej sieci szkieletowej. Można go traktować jako rozszerzenie do PSSessionelementu , które zawiera informacje wymagane tylko przez diagnostykę, taką jak rola hosta w sieci szkieletowej. Obiekty docelowe można wygenerować niejawnie (na przykład lokalną lub ręczną diagnostykę) lub jawnie za New-HgsTraceTarget pomocą polecenia cmdlet .

Diagnostyka lokalna

Domyślnie Get-HgsTrace obiektem docelowym będzie localhost (tj. gdzie wywoływane jest polecenie cmdlet). Jest to określane jako niejawny obiekt docelowy lokalny. Niejawny lokalny element docelowy jest używany tylko wtedy, gdy w parametrze -Target nie podano żadnych obiektów docelowych, a w parametrze -Pathnie znaleziono żadnych wstępnie istniejących śladów.

Niejawny obiekt docelowy lokalny używa wnioskowania roli, aby określić, jaką rolę odgrywa bieżący host w chronionej sieci szkieletowej. Jest to oparte na zainstalowanych modułach programu Windows PowerShell, które w przybliżeniu odpowiadają tym, jakie funkcje zostały zainstalowane w systemie. Obecność modułu HgsServer powoduje, że element docelowy śledzenia bierze rolę HostGuardianService , a obecność HgsClient modułu powoduje, że element docelowy śledzenia bierze rolę GuardedHost. Istnieje możliwość, aby dany host miał oba moduły obecne w tym przypadku będzie traktowany jako zarówno element , HostGuardianService jak i GuardedHost.

W związku z tym domyślne wywołanie diagnostyki do zbierania śladów lokalnie:

Get-HgsTrace

Jest to równoważne z następującymi elementami:

New-HgsTraceTarget -Local | Get-HgsTrace

Napiwek

Get-HgsTrace może akceptować obiekty docelowe za pośrednictwem potoku lub bezpośrednio za pośrednictwem parametru -Target . Nie ma różnicy między dwoma operacjami.

Zdalna diagnostyka przy użyciu obiektów docelowych śledzenia

Można zdalnie zdiagnozować hosta, generując obiekty docelowe śledzenia z informacjami o połączeniu zdalnym. Wszystko, co jest wymagane, to nazwa hosta i zestaw poświadczeń, które mogą łączyć się przy użyciu komunikacji zdalnej programu Windows PowerShell.

$server = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential)
Get-HgsTrace -RunDiagnostics -Target $server

W tym przykładzie jest generowany monit o zebranie poświadczeń użytkownika zdalnego, a następnie uruchomienie diagnostyki przy użyciu hosta zdalnego w hgs-01.secure.contoso.com celu ukończenia zbierania śladów. Wynikowe ślady są pobierane do hosta lokalnego, a następnie diagnozowane. Wyniki diagnostyki są prezentowane tak samo jak podczas przeprowadzania diagnostyki lokalnej. Podobnie nie jest konieczne określenie roli, ponieważ można ją wywnioskować na podstawie modułów programu Windows PowerShell zainstalowanych w systemie zdalnym.

Diagnostyka zdalna korzysta z komunikacji zdalnej programu Windows PowerShell dla wszystkich dostępu do hosta zdalnego. W związku z tym jest to wymaganie wstępne, że docelowy element docelowy śledzenia ma włączoną funkcję komunikacji zdalnej programu Windows PowerShell (zobacz Włączanie funkcji PSRemoting) i że host lokalny jest prawidłowo skonfigurowany do uruchamiania połączeń z obiektem docelowym.

Uwaga

W większości przypadków konieczne jest tylko, aby host lokalny był częścią tego samego lasu usługi Active Directory i że jest używana prawidłowa nazwa hosta DNS. Jeśli środowisko korzysta z bardziej skomplikowanego modelu federacyjnego lub chcesz używać bezpośrednich adresów IP do łączności, może być konieczne wykonanie dodatkowej konfiguracji, takiej jak ustawienie zaufanych hostów usługi WinRM.

Możesz sprawdzić, czy element docelowy śledzenia jest prawidłowo tworzone i skonfigurowane do akceptowania połączeń przy użyciu Test-HgsTraceTarget polecenia cmdlet :

$server = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential)
$server | Test-HgsTraceTarget

To polecenie cmdlet zwraca wartość $True , jeśli i tylko wtedy, gdy Get-HgsTrace będzie można ustanowić zdalną sesję diagnostyczną z obiektem docelowym śledzenia. Po niepowodzeniu to polecenie cmdlet zwraca odpowiednie informacje o stanie w celu dalszego rozwiązywania problemów z połączeniem komunikacji zdalnej programu Windows PowerShell.

Niejawne poświadczenia

Podczas przeprowadzania zdalnej diagnostyki od użytkownika z wystarczającymi uprawnieniami do zdalnego łączenia się z obiektem docelowym śledzenia nie jest konieczne podanie poświadczeń do New-HgsTraceTargetprogramu . Polecenie Get-HgsTrace cmdlet automatycznie ponownie użyje poświadczeń użytkownika, który wywołał polecenie cmdlet podczas otwierania połączenia.

Ostrzeżenie

Niektóre ograniczenia dotyczą ponownego stosowania poświadczeń, szczególnie w przypadku wykonywania tego, co jest nazywane "drugim przeskokiem". Dzieje się tak podczas próby ponownego użycia poświadczeń z wewnątrz sesji zdalnej na inną maszynę. Aby obsługiwać ten scenariusz, należy skonfigurować dostawcę CredSSP , ale jest to poza zakresem chronionej sieci szkieletowej i rozwiązywania problemów.

Korzystanie z programu Windows PowerShell Just Enough Administration (JEA) i diagnostyki

Zdalna diagnostyka obsługuje korzystanie z ograniczonych punktów końcowych programu Windows PowerShell w narzędziu JEA. Domyślnie obiekty docelowe śledzenia zdalnego będą łączyć się przy użyciu domyślnego microsoft.powershell punktu końcowego. Jeśli element docelowy HostGuardianService śledzenia ma rolę, podejmie również próbę użycia punktu końcowego skonfigurowanego microsoft.windows.hgs podczas instalowania usługi HGS.

Jeśli chcesz użyć niestandardowego punktu końcowego, musisz określić nazwę konfiguracji sesji podczas konstruowania obiektu docelowego śledzenia przy użyciu parametru -PSSessionConfigurationName , takiego jak poniżej:

New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential) -PSSessionConfigurationName "microsoft.windows.hgs"

Diagnozowanie wielu hostów

Jednocześnie można przekazać wiele obiektów docelowych Get-HgsTrace śledzenia. Obejmuje to mieszankę miejsc docelowych lokalnych i zdalnych. Każdy element docelowy jest śledzony z kolei, a następnie ślady z każdego celu zostaną zdiagnozowane jednocześnie. Narzędzie diagnostyczne może użyć zwiększonej wiedzy na temat wdrożenia, aby zidentyfikować złożone błędy konfiguracji między węzłami, które w przeciwnym razie nie byłyby wykrywalne. Użycie tej funkcji wymaga tylko dostarczania śladów z wielu hostów jednocześnie (w przypadku ręcznej diagnostyki) lub przez skierowanie wielu hostów podczas wywoływania Get-HgsTrace (w przypadku diagnostyki zdalnej).

Oto przykład użycia diagnostyki zdalnej do klasyfikacji sieci szkieletowej składającej się z dwóch węzłów usługi HGS i dwóch chronionych hostów, gdzie jeden z chronionych hostów jest używany do uruchamiania Get-HgsTraceprogramu .

$hgs01 = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Credential (Enter-Credential)
$hgs02 = New-HgsTraceTarget -HostName "hgs-02.secure.contoso.com" -Credential (Enter-Credential)
$gh01 = New-HgsTraceTarget -Local
$gh02 = New-HgsTraceTarget -HostName "guardedhost-02.contoso.com"
Get-HgsTrace -Target $hgs01,$hgs02,$gh01,$gh02 -RunDiagnostics

Uwaga

Nie trzeba diagnozować całej chronionej sieci szkieletowej podczas diagnozowania wielu węzłów. W wielu przypadkach wystarczy uwzględnić wszystkie węzły, które mogą być zaangażowane w dany warunek awarii. Jest to zwykle podzbiór chronionych hostów i niektóre węzły z klastra usługi HGS.

Ręczna diagnostyka przy użyciu zapisanych śladów

Czasami możesz chcieć ponownie uruchomić diagnostykę bez ponownego zbierania śladów lub może nie mieć niezbędnych poświadczeń, aby zdalnie zdiagnozować wszystkie hosty w sieci szkieletowej jednocześnie. Ręczna diagnostyka to mechanizm, za pomocą którego można nadal przeprowadzać klasyfikację całej sieci szkieletowej przy użyciu metody Get-HgsTrace, ale bez używania zdalnego zbierania śledzenia.

Przed przeprowadzeniem ręcznej diagnostyki należy upewnić się, że administratorzy każdego hosta w sieci szkieletowej, które zostaną sklasyfikowane, są gotowe i chcą wykonywać polecenia w Twoim imieniu. Dane wyjściowe śledzenia diagnostycznego nie ujawniają żadnych informacji, które są zwykle postrzegane jako poufne, jednak użytkownik musi ustalić, czy są one bezpieczne, aby udostępnić te informacje innym osobom.

Uwaga

Ślady nie są anonimizowane i ujawniają konfigurację sieci, ustawienia infrastruktury kluczy publicznych i inną konfigurację, która czasami jest uznawana za informacje prywatne. W związku z tym ślady powinny być przesyłane tylko do zaufanych jednostek w organizacji i nigdy nie są publikowane publicznie.

Czynności umożliwiające przeprowadzenie ręcznej diagnostyki są następujące:

  1. Zażądaj, aby każdy administrator hosta uruchamiał Get-HgsTrace znane -Path polecenie i listę diagnostyki, która ma być uruchamiana względem wynikowych śladów. Na przykład:

    Get-HgsTrace -Path C:\Traces -Diagnostic Networking,BestPractices
    
  2. Zażądaj, aby każdy administrator hosta spakować wynikowy folder traces i wysłać go do Ciebie. Ten proces może być sterowany pocztą e-mail, za pośrednictwem udziałów plików lub dowolnego innego mechanizmu na podstawie zasad i procedur operacyjnych ustanowionych przez organizację.

  3. Scal wszystkie odebrane ślady w jednym folderze bez innej zawartości ani folderów.

    Załóżmy na przykład, że administratorzy wysyłają ci ślady zebrane z czterech maszyn o nazwach HGS-01, HGS-02, RR1N2608-12 i RR1N2608-13. Każdy administrator wysłałby Ci folder o tej samej nazwie. Należy utworzyć strukturę katalogów, która jest wyświetlana w następujący sposób:

    FabricTraces
    |- HGS-01
    |  |- TargetMetadata.xml
    |  |- Metadata.xml
    |  |- [any other trace files for this host]
    |- HGS-02
    |  |- [...]
    |- RR1N2608-12
    |  |- [...]
    |- RR1N2608-13
       |- [..]
    
  4. Wykonaj diagnostykę, podając ścieżkę do zmontowanego folderu śledzenia w parametrze -Path i określając przełącznik, a także diagnostykę, dla której administratorzy poprosili administratorów o zebranie -RunDiagnostics śladów. Diagnostyka zakłada, że nie może uzyskać dostępu do hostów znalezionych wewnątrz ścieżki i dlatego podejmie próbę użycia tylko wstępnie utworzonych śladów. Jeśli brakuje lub uszkodzisz ślady, diagnostyka zakończy się niepowodzeniem tylko w testach, których dotyczy problem, i będzie kontynuowana normalnie. Na przykład:

    Get-HgsTrace -RunDiagnostics -Diagnostic Networking,BestPractices -Path ".\FabricTraces"
    

Mieszanie zapisanych śladów z dodatkowymi miejscami docelowymi

W niektórych przypadkach może istnieć zestaw wstępnie utworzonych śladów, które chcesz rozszerzyć o dodatkowe ślady hosta. Istnieje możliwość połączenia wstępnie utworzonych śladów z dodatkowymi celami, które zostaną prześledzone i zdiagnozowane w jednym wywołaniu diagnostyki.

Postępując zgodnie z instrukcjami dotyczącymi zbierania i tworzenia folderu śledzenia określonego powyżej, wywołaj metodę Get-HgsTrace z dodatkowymi elementami docelowymi śledzenia, które nie zostały znalezione w wstępnie utworzonym folderze śledzenia:

$hgs03 = New-HgsTraceTarget -HostName "hgs-03.secure.contoso.com" -Credential (Enter-Credential)
Get-HgsTrace -RunDiagnostics -Target $hgs03 -Path .\FabricTraces

Polecenie cmdlet diagnostyczne zidentyfikuje wszystkie wstępnie utworzone hosty, a jeden dodatkowy host, który nadal musi zostać prześledzony i wykona niezbędne śledzenie. Suma wszystkich wstępnie zebranych i świeżo zebranych śladów zostanie zdiagnozowana. Wynikowy folder śledzenia będzie zawierać zarówno stare, jak i nowe ślady.

Znane problemy

Moduł diagnostyki chronionej sieci szkieletowej ma znane ograniczenia dotyczące uruchamiania w systemie Windows Server 2019 lub Windows 10 w wersji 1809 i nowszych wersjach systemu operacyjnego. Użycie następujących funkcji może spowodować błędne wyniki:

  • Zaświadczanie klucza hosta
  • Konfiguracja usługi HGS tylko zaświadczania (w scenariuszach always encrypted programu SQL Server)
  • Używanie artefaktów zasad w wersji 1 na serwerze HGS, na którym domyślne zasady zaświadczania to wersja 2

Błąd podczas Get-HgsTrace korzystania z tych funkcji nie musi wskazywać, że serwer HGS lub chroniony host jest nieprawidłowo skonfigurowany. Użyj innych narzędzi diagnostycznych, takich jak Get-HgsClientConfiguration na chronionym hoście, aby sprawdzić, czy host przeszedł zaświadczenie.