2010-11-24 5 views
2

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?

+4

Toute machine moderne possède les deux. –

+0

Hans a absolument raison. Vous impliquez xor, mais en réalité, c'est inclusif ou. –

+0

"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

Répondre

5

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 
1

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

+0

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

+3

@StanTastic Cette réponse a 6 ans quand les choses étaient très différentes –

3

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.

0

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).

1

É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()

+0

Essayer d'ouvrir une socket IPV6 fait l'affaire, jetez un oeil à ma réponse pour le code. – CLJ

Questions connexes