Convertisseur IPv4 mappée IPv6
Convertir entre IPv4 et IPv4 mappée IPv6 (::ffff:)
Input IPv4 Addresses
Converts IPv4 addresses to IPv4-mapped IPv6 format (::ffff:x.x.x.x)
Conversion Results
Conversion results will appear here
Le convertisseur IPv4-Mapped IPv6 traduit les adresses IPv4 vers et depuis le format IPv6 mappe ::ffff: utilise par les sockets dual-stack. Saisissez 192.168.1.1 pour obtenir ::ffff:192.168.1.1 (notation pointee) et ::ffff:c0a8:0101 (notation hexadecimale), ou collez une adresse IPv6 mappee pour extraire l'adresse IPv4 d'origine.
Comprendre les adresses IPv4-Mapped IPv6
Si vous avez deja consulte les journaux d'une application Node.js, d'un service Go ou d'une application web Python et vu des adresses clients comme ::ffff:10.0.0.5 au lieu du simple 10.0.0.5 attendu, vous avez rencontre des adresses IPv4-mapped IPv6. Ce format n'est pas un bug -- c'est la maniere dont le systeme d'exploitation represente les connexions IPv4 pour les applications ecoutant sur des sockets IPv6.
Les systemes d'exploitation modernes creent des sockets dual-stack par defaut. Lorsqu'un serveur se lie a une adresse IPv6 (ou a ::, qui signifie toutes les interfaces), il peut accepter a la fois des connexions IPv6 et IPv4 sur le meme port. Lorsqu'un client IPv4 se connecte, le noyau a besoin d'un moyen de representer cette adresse IPv4 dans l'espace d'adressage IPv6 de 128 bits. Il le fait en ajoutant ::ffff: devant l'adresse IPv4, produisant une valeur de 128 bits ou les 80 premiers bits sont a zero, les 16 bits suivants sont tous a un (ffff) et les 32 derniers bits contiennent l'adresse IPv4 originale. Ce format mappe permet a l'application de gerer toutes les connexions en utilisant un seul type d'adresse IPv6.
Pour les developpeurs et administrateurs systeme, le defi pratique est que ces adresses mappees apparaissent partout : dans les logs d'acces, les chaines de connexion aux bases de donnees, les alertes de securite et les tables de limitation de debit. Si votre pipeline d'analyse de logs ne tient pas compte du prefixe ::ffff:, vous vous retrouvez avec des entrees separees pour le meme client, des recherches de geolocalisation cassees et des listes d'autorisation qui ne correspondent pas. Ce convertisseur fonctionne dans les deux sens -- IPv4 vers mappe et mappe vers IPv4 -- pour vous permettre de traduire rapidement entre les formats lors du debogage ou de la construction de logique de traitement d'adresses.
Comment convertir entre IPv4 et IPv4-Mapped IPv6
- Saisissez une adresse IPv4 (par ex.
192.168.1.1) pour generer son equivalent IPv4-mapped IPv6 - Ou saisissez une adresse IPv4-mapped IPv6 (par ex.
::ffff:192.168.1.1) pour extraire l'adresse IPv4 d'origine - Consultez la forme mappee en notation decimale pointee (
::ffff:192.168.1.1) et la forme hexadecimale pure (::ffff:c0a8:0101) - L'outil valide le prefixe
::ffff:0:0/96et rejette les entrees malformees
Exemples de conversion IPv4-Mapped IPv6
| Adresse IPv4 | IPv6 mappee (pointee) | IPv6 mappee (hex) |
|---|---|---|
192.168.1.1 | ::ffff:192.168.1.1 | ::ffff:c0a8:0101 |
10.0.0.1 | ::ffff:10.0.0.1 | ::ffff:0a00:0001 |
172.16.0.1 | ::ffff:172.16.0.1 | ::ffff:ac10:0001 |
8.8.8.8 | ::ffff:8.8.8.8 | ::ffff:0808:0808 |
127.0.0.1 | ::ffff:127.0.0.1 | ::ffff:7f00:0001 |
203.0.113.50 | ::ffff:203.0.113.50 | ::ffff:cb00:7132 |
255.255.255.255 | ::ffff:255.255.255.255 | ::ffff:ffff:ffff |
Format mapped vs compatible
| Format | Prefixe | Exemple | Statut |
|---|---|---|---|
| IPv4-mapped | ::ffff: | ::ffff:192.168.1.1 | Standard actuel |
| IPv4-compatible | :: | ::192.168.1.1 | Obsolete (RFC 4291) |
Quand utiliser le convertisseur IPv4-Mapped IPv6
- Interpretation des journaux applicatifs -- les applications Node.js, Go, Python et Java ecoutant sur des sockets IPv6 enregistrent les connexions IPv4 sous la forme
::ffff:10.0.0.5, et vous devez extraire l'adresse IPv4 reelle - Configuration des services dual-stack -- traduire les listes d'autorisation IPv4 en format IPv6 mappe pour les services qui n'acceptent que la syntaxe d'adresses IPv6
- Debogage des API socket -- comprendre pourquoi
getpeername()sur un socket IPv6 renvoie des adresses prefixees par::ffff:pour les connexions IPv4 - Traduction de regles de pare-feu -- convertir les regles IPv4 en leurs equivalents IPv6 dans les configurations de pare-feu dual-stack
- Reponse aux incidents -- extraire rapidement les adresses IPv4 des entrees au format mappe dans les journaux de securite
- Normalisation du pipeline de logs -- supprimer le prefixe
::ffff:pour unifier les adresses IPv4 entre les sources de logs qui utilisent differents formats
Fonctionnement des adresses IPv4-Mapped IPv6
Les adresses IPv4-mapped IPv6 permettent aux sockets IPv6 de gerer le trafic IPv4 de maniere transparente. Le noyau du systeme d'exploitation mappe les connexions IPv4 entrantes dans l'espace d'adressage IPv6 selon un format bien defini.
Structure de l'adresse
L'adresse mappee de 128 bits se compose de trois parties :
| 80 bits de zeros | 16 bits | 32 bits |
| 0000...0000 | ffff | IPv4 address |
| | |
:: ffff: 192.168.1.1
Forme expansee complete :
0000:0000:0000:0000:0000:ffff:c0a8:0101
Les 80 premiers bits sont a zero. Les 16 bits suivants sont tous a un (ffff). Les 32 derniers bits contiennent l'adresse IPv4. Cela correspond au prefixe ::ffff:0:0/96.
Comportement des sockets dual-stack
Lorsqu'une application cree un socket IPv6 avec le mode dual-stack active (comportement par defaut sur la plupart des systemes d'exploitation), les connexions IPv4 sont automatiquement presentees au format mappe :
IPv4 client 10.0.0.5 connects to server port 8080
-> Server's IPv6 socket sees: ::ffff:10.0.0.5
IPv6 client 2001:db8::1 connects to server port 8080
-> Server's IPv6 socket sees: 2001:db8::1
Le code applicatif n'a donc besoin de gerer que des adresses IPv6, et le format mappe permet de distinguer les clients IPv4 des clients IPv6 natifs.
Contextes de programmation courants
La plupart des langages modernes exposent les adresses IPv4-mapped dans leurs API reseau :
- Node.js --
socket.remoteAddressrenvoie::ffff:192.168.1.1pour les connexions IPv4 - Python --
socket.getpeername()sur un socket dual-stack renvoie le format mappe - Go --
net.Conn.RemoteAddr()renvoie la forme mappee ; utiliseznet.IP.To4()pour extraire la partie IPv4 - Java --
InetAddress.getByName()peut analyser le format mappe ;Inet6Address.isIPv4MappedIPv6Address()le detecte
Differences entre plateformes
Tous les systemes d'exploitation ne gerent pas les sockets dual-stack de maniere identique. Sous Linux, le dual-stack est active par defaut (l'option de socket IPV6_V6ONLY est a 0). Sous Windows, il est egalement active par defaut depuis Vista. Sous OpenBSD, les sockets dual-stack sont desactives pour des raisons de securite, necessitant des sockets IPv4 et IPv6 separes. Connaitre le comportement de votre plateforme est essentiel pour deboguer les problemes d'adresses mappees.
Conseils pratiques pour gerer les adresses mappees
La chose la plus importante a bien configurer avec les adresses mappees est votre pipeline de traitement de logs. Si votre serveur web enregistre ::ffff:10.0.0.5 et votre proxy inverse enregistre 10.0.0.5 pour le meme client, vos analyses les compteront comme deux visiteurs differents. Normalisez tot : supprimez le prefixe ::ffff: au plus pres du point d'ingestion, afin que les systemes en aval travaillent avec des representations IPv4 coherentes. La plupart des outils de traitement de logs et des plateformes SIEM disposent de fonctions integrees pour cela, mais vous devez les activer explicitement.
Le deuxieme probleme courant concerne les listes d'autorisation et de blocage. Si votre application verifie les adresses entrantes contre une liste d'autorisation IPv4 comme 10.0.0.0/24, mais que le socket presente l'adresse sous la forme ::ffff:10.0.0.5, la comparaison de chaines echoue. Votre logique de correspondance d'adresses doit gerer les deux formats. Dans la plupart des langages, la bibliotheque standard fournit une methode pour detecter et extraire la partie IPv4 d'une adresse mappee : Go a net.IP.To4(), Python a ipaddress.IPv6Address.ipv4_mapped, et les developpeurs Node.js verifient souvent la presence du prefixe ::ffff: et le suppriment.
Un probleme plus subtil survient avec les bases de donnees de geolocalisation et de reputation. La plupart des services de geolocalisation IP attendent une entree IPv4 simple. Envoyer ::ffff:10.0.0.5 a une API de geolocalisation retournera soit aucun resultat, soit une erreur. Extrayez toujours l'adresse IPv4 du format mappe avant d'effectuer des recherches externes. De meme, les flux de threat intelligence utilisent des adresses IPv4 simples, donc votre logique de correlation doit normaliser les adresses mappees avant la comparaison.
Questions frequentes
Pourquoi mon serveur Node.js enregistre-t-il les adresses IPv4 sous la forme ::ffff:127.0.0.1 ?
Node.js ecoute par defaut sur un socket dual-stack IPv6. Lorsqu'un client IPv4 se connecte, le noyau du systeme d'exploitation mappe l'adresse IPv4 au format IPv6 en utilisant le prefixe ::ffff:. L'adresse ::ffff:127.0.0.1 est simplement 127.0.0.1 presentee en notation IPv6 mappee. Supprimez le prefixe ::ffff: pour obtenir l'adresse IPv4 d'origine.
Quelle est la difference entre les adresses IPv4-mapped et IPv4-compatible ?
Les adresses IPv4-mapped utilisent ::ffff: comme prefixe (par ex. ::ffff:192.168.1.1) et constituent le standard actuel pour representer les adresses IPv4 dans les sockets IPv6. Les adresses IPv4-compatible utilisent uniquement :: comme prefixe (par ex. ::192.168.1.1) et etaient un mecanisme de transition initial rendu obsolete par la RFC 4291 depuis 2006.
Peut-on effectuer un ping sur une adresse IPv4-mapped IPv6 ?
Sur la plupart des systemes, ping6 ::ffff:192.168.1.1 ne fonctionnera pas comme prevu car la gestion ICMP des adresses mappees varie selon le systeme d'exploitation. Le format mappe est principalement utilise en interne par les sockets dual-stack et n'est pas concu pour une utilisation directe dans les commandes ou les tables de routage.
Comment desactiver les sockets dual-stack si je ne veux pas d'adresses mappees ?
Definissez l'option de socket IPV6_V6ONLY a 1 avant la liaison. Cela force le socket a n'accepter que les connexions IPv6. Vous aurez alors besoin d'un socket IPv4 separe pour gerer les clients IPv4. Cette approche est utilisee par defaut sur OpenBSD et est preferee dans certains environnements sensibles en matiere de securite.
L'adresse mappee preserve-t-elle la classification privee/publique de l'adresse IPv4 originale ?
Oui. Le mappage est purement un changement de representation. ::ffff:10.0.0.1 reste une adresse privee, et ::ffff:8.8.8.8 reste publique. La classification privee/publique depend entierement de l'adresse IPv4 integree. Utilisez le detecteur IPv4 privee/publique apres avoir extrait la partie IPv4 pour confirmer la classification.
Outils associes
- Constructeur/analyseur d'adresses 6to4 - Construire ou analyser les adresses tunnel 6to4
- Detecteur de famille d'adresses - Detecter si une adresse est IPv4, IPv6 ou invalide
- Detecteur IPv4 privee/publique - Detecter si une adresse IPv4 est privee, publique ou speciale
- IPv6 expansion et compression - Convertir entre la notation IPv6 expansee et compressee
- Convertisseur IPv4 vers hexadecimal - Convertir les adresses IPv4 vers/depuis l'hexadecimal
- Normalisation de listes mixtes - Trier et nettoyer les listes mixtes d'adresses IPv4/IPv6