Est-il possible de déterminer si un ordinateur Windows exécute IPV6 à l'aide d'utilitaires natifs, python ou php?Comment détecter si une machine Windows exécute IPV4 ou IPV6?
Répondre
Voici comment j'ai résolu le problème, en essayant d'ouvrir un socket IPv6. Si le système n'a pas généré d'erreur, il utilise IPv6.
import socket
def isIPV6():
ipv6 = True
try:
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
except:
ipv6 = False
return ipv6
Chaque ordinateur est livré avec IPv4 en standard. IPv6 est uniquement activé sur des machines spécifiques. Mais si vous analysez ifconfig/ipconfig alors vous devriez vous trouver une adresse IPv4/6 dans la sortie
Incorrect, IPv6 est généralement activé par défaut et sera utilisé de préférence si un ordinateur peut obtenir une adresse IPv6 routable. – StanTastic
@StanTastic Cette réponse a 6 ans quand les choses étaient très différentes –
Bien sûr. Si ipconfig
contient une entrée IPv6 Address
pour une interface réelle, vous avez probablement la connectivité IPv6. Il y a aussi des entrées de registre utiles à HKLM\SYSTEM\CurrentControlSet\services\TCPIP6
.
L'approche de Jakob est la plus simple; vous pouvez diriger le résultat et faire une correspondance pour voir si une carte réseau a une adresse IPv6 valide.
En outre, vous pouvez obtenir cela en récupérant la classe Windows Management Instrumentation Win32_NetworkAdapterConfiguration. La propriété IPAddress
est un tableau de toutes les adresses IP associées à une carte réseau et vous pouvez les comparer pour voir si une adresse IPv6
est associée. Mais PS est un peu exagéré, j'irais avec la réponse de Jakob ou Wyatt à moins que vous ayez besoin de faire quelque chose de plus intelligible et sophistiqué (envoyer une requête HTTP, changer certaines règles réseau, redémarrer un service).
Énumérer les interfaces et vérifier une adresse IPv6, comme tout le monde l'a indiqué. Les alternatives incluent essayer d'ouvrir une socket IPv6 ou obtenir Python pour appeler WSCEnumProtocols()
Essayer d'ouvrir une socket IPV6 fait l'affaire, jetez un oeil à ma réponse pour le code. – CLJ
Toute machine moderne possède les deux. –
Hans a absolument raison. Vous impliquez xor, mais en réalité, c'est inclusif ou. –
"Exécution" est différent de "A la connectivité en utilisant ...". Je préfère utiliser une sorte de sonde IPv6 (à l'adresse IPv6 de Google, peut-être?). Un certain nombre de machines configureront l'adresse IPv6, mais l'infrastructure réseau sous-jacente ne permettra pas à IPv6 d'aller n'importe où (pensez: votre équipement domestique prend en charge IPv6, mais pas les équipements ISP). – StanTastic