Traitement des incidents liés à la connexion à Hyper-V et à Azure Stack HCI
Identifiez et résolvez les problèmes de connexion entre Microsoft Hyper-V ou Azure Stack HCI et License Metric Tool. Analysez les solutions répertoriées pour résoudre les incidents de connexion.
Glossaire
La connexion entre License Metric Tool et Hyper-V ou Azure Stack HCI est établie via les requêtes Windows Management Instrumentation (WMI). Ces requêtes utilisent PowerShell avec le mécanisme DCE-RPC ou WinRM qui utilise SOAP ou XML sur HTTP. Le client License Metric Tool communique avec l'hôte Hyper-V ou Azure Stack HCI via l'interface VM Manager, VM Manager Tool. La liste suivante décrit les composants de base de l'environnement virtuel :- Serveur
- Hôte HCI Hyper-V ou Azure Stack sur lequel se trouve le service WinRM .
- Client
- Hôte License Metric Tool qui peut être un ordinateur Windows ou UNIX.
L'authentification de client sur les deux systèmes Windows et Unix utilise la même séquence d'authentification : authentification NTLM, NTLMV2, ou de base HTTP. Les membres de domaine Windows sont soumis à l'authentification réseau Kerberos lorsque vous utilisez PowerShell comme interface de communication.
Traitement des incidents liés à plusieurs connexions de gestionnaire de machine
Lorsqu'un grand nombre de connexions de gestionnaire de machine virtuelle Hyper-V ou Azure Stack HCI sont configurées avec l'interface WinRM , VM Manager Tool peut ne pas être en mesure d'établir correctement les connexions simultanément dans plusieurs unités d'exécution. Dans ce cas, vous devez affecter la valeur 1 au paramètre vmm_thread_pool_size pour réduire le nombre d'unités d'exécution de connexion. En outre, envisagez d'ajouter d'autres outils de gestionnaire de machine virtuelle pour répartir la charge entre eux.
Traitement manuel des incidents
- Pour vérifier si le service WinRm est en cours d'exécution, exécutez la commande suivante dans l'invite de commande.
Les résultats de la requête doivent inclure les informations suivantes :sc query WinRM
SERVICE_NAME: WinRM STATE : 4 RUNNING
Remarque: le contrôle de compte utilisateur Windows peut affecter l'accès utilisateur au service WinRM . Si vous utilisez le schéma d'authentification Negotiate, seul le compte Administrateur peut accéder au service. Pour permettre à tous les comptes d'accéder au service, définissez la valeur de registre suivante :HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ LocalAccountTokenFilterPolicy to '1'
- Vérifiez les propriétés de configuration WinRM à l'aide de l'invite de commande :
- Exécutez les commandes suivantes sur le serveur HCI Hyper-V ou Azure Stack:
winrm get winrm/config/service
winrm enumerate winrm/config/listener
- Exécutez les commandes suivantes sur le client :
winrm get winrm/config/client
Remarque: Si Hyper-V ou Azure Stack HCI et License Metric Tool sont installés sur le même hôte, vous pouvez utiliser une seule commande pour extraire les informations requises:winrm get winrm/config
.
- Exécutez les commandes suivantes sur le serveur HCI Hyper-V ou Azure Stack:
- Configurez un scénario de test simple en modifiant l'un des paramètres WinRM.
- Sur le serveur License Metric Tool , ajoutez un astérisque à la liste Trustedhosts .
winrm set winrm/config/client @{TrustedHosts="*"}
TrustedHosts="*"
contraint le client à abandonner l'authentification de l'extrémité distante. Toutefois, l'extrémité distante requiert toujours l'authentification de client. En règle générale,TrustedHost
est défini sur le client avec le nom de serveur HCI Hyper-V ou Azure Stack. - Autoriser l'authentification de base et le trafic non chiffré sur un serveur HCI Hyper-V ou Azure Stack.
winrm set winrm/config/service/auth @{Basic="true"} winrm set winrm/config/service @{AllowUnencrypted="true"}
Basic="true"
active l'authentification de base HTTP à l'aide d'un ID utilisateur et d'un mot de passe en texte clair.AllowUnencrypted= true
permet de transférer les données déchiffrées via HTTP entre le serveur et le client. - Vérifiez la configuration WinRM..
Si la modification précédente'winrm get winrm/config/client': Client: NetworkDelayms = 5000 URLPrefix = wsman AllowUnencrypted = true Auth Basic = true Digest = true Kerberos = true Negotiate = true Certificate = true CredSSP = false DefaultPorts HTTP = 5985 HTTPS = 5986 TrustedHosts = * 'winrm get winrm/config/service' on the Hyper-V server: Service: RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;S-1-5-21-3273298017-2363932476 -3643925056-1633)S:P(AU;FA;GA;;;WD)(AU;SA;GWGX;;;WD) MaxConcurrentOperations = 4294967295 MaxConcurrentOperationsPerUser = 15 EnumerationTimeoutms = 600000 MaxConnections = 15 MaxPacketRetrievalTimeSeconds = 120 AllowUnencrypted = true Auth Basic = true Kerberos = true Negotiate = true Certificate = true CredSSP = false CbtHardeningLevel = Relaxed DefaultPorts HTTP = 5985 HTTPS = 5986 IPv4Filter = * IPv6Filter = * EnableCompatibilityHttpListener = true EnableCompatibilityHttpsListener = true CertificateThumbprint
Basic = true
a résolu le problème d'authentification, le client et le serveur ne peuvent pas négocier le protocole d'authentification. Il est déconseillé d'utiliser le schéma d'authentification de base sauf si WinRM est configuré avec HTTPS. Cette procédure pourrait représenter un risque lié à la sécurité en envoyant un nom d'utilisateur, un mot de passe et le corps du message sous la forme d'un texte en clair. Microsoft utilise trois protocoles lors de la procédure du schéma Negotiate : Kerberos, NTLMV2, et NTLM. Le client et le serveur choisissent généralement les mécanismes d'authentification qui leur conviennent le mieux. License Metric Tool n'autorise pas le protocole Kerberos . Pour vérifier si le client et le serveur autorisent le protocole NTLMV2 ou NTLM, utilisez la requête de registre suivante.
Les paramètres suivants situés sous cette clé de registre contrôlent le comportement du schéma d'authentification :reg query HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\LSA\MSV1_0
- NtlmMinClientSec
- NtlmMinServerSec
- Sur le serveur License Metric Tool , ajoutez un astérisque à la liste Trustedhosts .
- Pour identifier manuellement le mécanisme d'authentification approprié pour le service WinRM sur l'hôte distant, utilisez les commandes suivantes :
- Exécutez la commande à partir de Windows PowerShell.
Où :Test-WSMan -ComputerName http://<server_name>:<port> -Auth <authentification_scheme> -Cred <user_id>
- <SERVER_NAME>
- Nom d'hôte du serveur HCI Hyper-V ou Azure Stack. Si vous utilisez HTTPS, le nom d'hôte doit correspondre au nom commun (CN) du certificat.
- <port>
- Est le numéro du port sur lequel le client Windows Remote Management pour le protocole HTTP ou HTTPS est en mode écoute.
- < schéma_authentification>
- Correspond au schéma d'authentification : Basic ou Negotiate
- <id_utilisateur>
- Correspond à l'ID utilisateur de Windows PowerShell.
- Exécutez la commande à partir de l'invite de commande.
Où :winrm identify -r:http://<server_name>:<port> -auth <authentification_scheme> -u:<user_id> -p:<password>
- <SERVER_NAME>
- Nom d'hôte du serveur HCI Hyper-V ou Azure Stack. Si vous utilisez HTTPS, le nom d'hôte doit correspondre au nom commun (CN) du certificat.
- <port>
- Est le numéro du port sur lequel le client Windows Remote Management pour le protocole HTTP ou HTTPS est en mode écoute.
- < schéma_authentification>
- Correspond au schéma d'authentification, à savoir Basic ou Negotiate
- <id_utilisateur>
- Correspond à l'ID utilisateur de WinRM PowerShell.
- <motdepasse>
- Correspond au mot de passe de WinRM.
- Exécutez la commande à partir de Windows PowerShell.
Fonction de suivi d'événements
Unknown user name or bad password
. Vous ne pouvez pas déterminer que le problème réel est lié à des protocoles d'authentification non pris en charge. Le suivi d'événements Windows obtient les données de diagnostic des requêtes WMI et WinRM.- Pour démarrer le traçage d'événements sur le serveur HCI Hyper-V ou Azure Stack, utilisez les commandes suivantes:
logman.exe start winrmtrace -p Microsoft-Windows-Winrm -o winrmtrace.etl -ets
logman.exe start wmitrace -p Microsoft-Windows-WMI-Activity -o wmitrace.etl -ets
- Exécutez le test de connexion du gestionnaire de machine virtuelle. Si aucune connexion de gestionnaire de machine virtuelle n'est définie, la sortie de la commande est vide.
-
vmman.bat -testconnection
-
vmman.sh -testconnection
-
- A l'issue du test de connexion, arrêtez de collecter les traces de données :
logman.exe stop winrmtrace -ets
logman.exe stop wmitrace -ets
- Pour modifier le formatage des fichiers journaux de suivi d'événements, utilisez les commandes suivantes :
Tracerpt winrmtrace.etl
Tracerpt wmitrace.etl
<Task>User authentication </Task>
<Message>Sending HTTP 401 response to the client and disconnect the connection after
sending the response</Message>
Le fichier contient également les requêtes SOAP ou XML qui sont envoyées par le client et qui fournissent des données vitales, particulièrement utiles pour identifier et résoudre les problèmes liés à Hyper-V.Traitement des incidents liés au statut de connexion avec Wireshark
Exécutez le test de connexion du gestionnaire de machine virtuelle. Si aucune connexion de gestionnaire de machine virtuelle n'est définie, la sortie de la commande est vide.
-
vmman.bat -testconnection
-
vmman.sh -testconnection
tcpdump
. Pour vider tout le trafic vers le fichier externe, utilisez tcpdump -vvv -XX
-w tcpdump.out
. Le fichier tcpdump.out peut être visualisé avec Wireshark.- Test de connexion réussi entre License Metric Tool et Hyper-V ou Azure Stack HCI avec l'interface PowerShell .
- Paramètres :
PowerShell utilise le protocole d'authentification NTLM.Il ne se connecte pas aux ports WinRM 5985 et 80, mais il utilise un mécanisme DCE-RPC pour se connecter au service Endpoint Mapper via le port 135.vmm_communication_interface=POWERSHELL
- Sélectionnez l'entrée
RemoteCreateInstance response
. - Pour vérifier si l'authentification a abouti, développez les paramètres et vérifiez la valeur du paramètre
HResult
. Si l'authentification a réussi,HResult
est accompagné de la mentionS_OK
.
Pour plus d'informations, voir How to enable NTLM 2 authentication.HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA\LMCompatibilityLevel
- Sélectionnez l'entrée
- Echec du test de connexion entre License Metric Tool et Hyper-V ou Azure Stack HCI avec l'interface NTLM.
- Paramètres :
vmm_communication_interface=NTLM
vmm_url=http://.../wsman
- Port par défaut : 80
(...)com.ibm.license.mgmt.vmmanager.hyperv.net.HttpConnector::send:: An error occured while trying to send request to http://.../wsman
Bien que les erreurs du fichier trace.log_vmmconf_<VM_manager_ID>.log ne fournissent pas suffisamment de détails, la capture Wireshark prouve que le problème est lié à TCP. Utilisez la commande suivante pour rechercher le programme d'écoute sur le port 80.(...)com.ibm.license.mgmt.vmmanager.hyperv.net.HttpConnector::send:java.net. ConnectException: Connection refused: connect
Si aucun programme d'écoute n'est détecté, exécutez la commande suivante pour configurer des programmes d'écoute.winrm enumerate winrm/config/listener
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
Remarque: La configuration des programmes d'écoute sur le port 80 peut entrer en conflit avec les autres services HHTP sur cet ordinateur. Pour éviter ces problèmes, indiquez un port WinRM dédié, comme 5985 or 5986, sur la chaîne de connexionvmm_url
. - Echec du test de connexion entre License Metric Tool et Hyper-V ou Azure Stack HCI avec l'interface NTLM.
HTTP Error 401
: - Le test de connexion a échoué et trace.log_vmmconf_<VM_manager_ID>.log contient les messages d'erreur suivants.
(...)com.ibm.license.mgmt.vmmanager.hyperv.net.HttpConnector::retrieve:: Response Code is: 401
La capture Wireshark suivante répertorie la négociation NTLM.Les quatre premières lignes indiquent une négociation NTLM réussie. La quatrième ligne arrête l'établissement de liaison NTML à quatre voies. La dernière ligne détecte(...)com.ibm.license.mgmt.vmmanager.hyperv.net.HttpConnector::retrieve:: The following response code was returned while connecting to VM Manager http://.../wsman: responseCode = 401
HTTP Error 401: Unauthorized
et se développe dans la réponse HTTP suivante.La réponseWWW-Authenticate: Negotiate
indique que le serveur est prêt à utiliser le schéma d'authentification NTLM, NTLMV2 ou HTTP Basic. Toutefois, le serveur a déjà correctement répondu à la séquence de négociation. Vérifiez que WinRM AllowUnencrypted = true.Remarque: les gestionnaires de machine virtuelle ne fournissent pas le chiffrement du corps HTTP . WinRM accepte uniquement le corps HTTP chiffré avec le paramètre Negotiate ou le protocole Kerberos. - La capture Wireshark montre l'échec de la négociation NTLM.L'établissement de liaison NTLM quadruple se termine par une erreur 401. Cette erreur est généralement due à des droits d'accès insuffisants. Pour vérifier si les comptes affectés au groupe Administrateurs sont autorisés à accéder à WinRM, configurez l'entrée de registre Windows suivante :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\ System\LocalAccountTokenFilterPolicy
- Le test de connexion a échoué et trace.log_vmmconf_<VM_manager_ID>.log contient les messages d'erreur suivants.
- Echec du test de connexion entre License Metric Tool et Hyper-V ou Azure Stack HCI causé par le bogue lié à l'interprétation du préfixe de domaine
vmm_login
. - Lorsque vous ajoutez un gestionnaire de machine virtuelle à License Metric Tool, veillez à fournir le nom d'utilisateur administrateur dans l'un des formats suivants:
- nom_utilisateur@domaine, par exemple
test@cluster.com
- nom_utilisateur\domaine, par exemple
test\cluster.com
A partir de la mise à jour de l'application 9.2.16, vous pouvez également fournir le nom d'utilisateur administrateur dans l'un des formats suivants:Si vous ne suivez pas ce modèle et que vous fournissez le nom d'utilisateur dans un format incorrect, une erreur est générée lors de l'authentification du gestionnaire de machine virtuelle.Lorsque l'erreur se produit, le nom d'utilisateur est affecté à la zone incorrecte.- domaine@nom_utilisateur, par exemple
cluster.com@test
- domaine\nom_utilisateur, par exemple
cluster.com\test
Remarque: veillez à mettre à niveau VM Manager Tool vers la version 9.2.16, et pas seulement le serveur License Metric Tool . - nom_utilisateur@domaine, par exemple