::ffff:
è un prefisso di sottorete per indirizzi IPv4 (32 bit) inseriti in uno spazio IPv6 (128 bit). IPv6 è suddiviso in due parti, il prefisso della sottorete e il suffisso dell'interfaccia. Ciascuno è lungo 64 bit o 4 gruppi di 4 caratteri esadecimali.
In IPv6, è possibile rimuovere gli zeri iniziali e quindi rimuovere gli zeri consecutivi, il che significa che in ::ffff:
realtà si traduce in 0000:0000:ffff:0000
, questo indirizzo è stato designato come prefisso della sottorete da IPv4 a IPv6, quindi qualsiasi processore IPv6 capirà che sta lavorando con un indirizzo IPv4 e lo gestirà di conseguenza.
Nel prossimo futuro, gli indirizzi IP saranno tutti IPv6, questo perché abbiamo quasi esaurito i numeri (4,2 miliardi, meno un po 'di spazio per scopi vari) nello spazio degli indirizzi IPv4.
IPv6 consente uno spazio molto più ampio. "340 undecillion dovrebbero essere sufficienti per chiunque" - Bill Gates parlando su IPv6.
È importante iniziare a indirizzare gli indirizzi IP utilizzando lo spazio dei nomi IPv6 e quindi includere il ::ffff:
nel codice perché in futuro ci saranno dati esadecimali reali tra quei due punti. Se lo rimuovi per motivi estetici, il tuo codice si interromperà quando passa a una rete IPv6 o viene confrontato con un indirizzo IPv6.
Alcune reti attualmente eseguono IPv6 e presto ti troverai di fronte a indirizzi IP IPv6; fai il salto adesso o rischi di rompere il tuo codice in futuro.
La versione TL; DR (breve) della questione è: tutto funziona correttamente. Non cambiarlo, è la versione IPv6 di un indirizzo IPv4.
Se vuoi rendere il tuo codice compatibile con IPv6, tutto quello che devi fare è controllare il ::ffff:
prefisso ... se esiste, rimuoverlo ed elaborare il resto come IPv4 ... se ::ffff:
non esiste, è un indirizzo IPv6 e deve essere elaborato come tale. Puoi ricontrollare vedendo se i punti sono nella stringa, in tal caso, è IPv4.
Tieni presente che per tutto tranne le modifiche che devi apportare agli indirizzi IP, stai solo registrando l'IP, giusto? Sarà importante che il parser e gli aggregati di log si aspettino ::ffff:127.0.0.1
e cose del genere in futuro. A meno che tu non debba modificare un IP, lascialo come quello che ricevi.
req.ip
oreq.ips
?