Update:
Penso di esser riuscito a ricostruire la config di Sky (ma serve il DHCPv6 per essene certi), sembra esser fatta così.
Per 65535 clienti (tra cui @hitech95) usano la subnet 2a0e:425::/32 ed asseganano delle /48 quindi rimangono 16 bit per identificare l'utente in IPv6.
Per quanto riguarda gli IPv4 usano la 101.56.208.0/20 quindi rimangono 12 bit liberi.
A questo punto scomponiamo i 16 bit del terzo gruppo IPv6 in due blocchi uno da 12 bit che chiamo IP6_A e uno da 4 bit che chiamo IP6_B, quindi il prefisso assegnato a un utente è fatto così:
2a0e:425:[IP6_A, 12 bit][IP6_B, 4 bit]::/48
Per ottenere l'IPv4 pubblico basta prendere i primi 12 bit dal terzo gruppo IPv6 (IP6_A) e sommarli bit a bit con la 101.56.208.0/20.
Ora la parte complicata, i range di porte:
I numeri di porta sono lunghi 16 bit, ma abbiamo 16 utenti sullo stesso IPv4 che abbiamo bisogno di differenziare, quindi usiamo i 4 bit (cioè 16 numeri) che ci sono avanzati dal prefisso IPv6 che possiamo mettere dove vogliamo nel numero di porta, lasciando 12 bit di porte all'utente, quindi 4096.
Se [IP6_B, 4 bit]
viene messo all'inizio avremo 1 solo range da 4096 porte, se li mettiamo alla fine avremo 4096 porte tutte disgiunte, Sky sembra averli messi in mezzo in modo da dare 64 range da 64 porte ciascuno (decisione discutibile ma tant'è)
Quindi il numero di porta è fatto così:
[P1, 6 bit][IP6_B, 4 bit][P2, 6 bit]
P1 e P2 a disposizione dell'utente.
In realtà sembra però che P1 = 0 non sia utilizzabile (non ho idea del perchè) quindi in realtà le porte sono 64*63 = 4032
Per fare mapping 1:1 dobbiamo rendere IP6_B lungo 0 bit in modo che il numero di porta sia dato da [P1, 8 bit][P2, 8 bit]
Non so come faccia Sky ma per esempio si potebbe fare partendo da una /36 e delegando delle /48 usando una /20 per gli IPv4, in questo modo IP6_A sarebbe lungo 12 bit come anche [IP6_A, 12 bit][IP6_B, 4 bit] quindi IP6_B deve essere lungo zero bit.
Quindi il range IPv6 di chi ha mapping 1:16 deve essere disgiunto rispetto a chi ma mapping 1:1, quindi l'IPv6 (e di conseguenza l'IPv4) deve perforza cambiare se si passa tra il mapping 1:1 e quello 1:16.
E' un protocollo abbastanza incasinato ma io lo trovo anche elegante.
Inoltre se l'IPv6 assegnato è statico lo deve perforza essere anche l'IPv4 e anche i range di porta a cui abbiamo accesso, quindi è praticamente come avere un IPv4 statico.
Non avendo incapsulamenti anche l'MTU può essere lasciata invariata (immagino 1500B)
Speriamo in primo luogo sulla staticità di IPv6 e in secondo sulla possibilità di usare le porte per i collegamenti dall'esterno, sicuramente c'è problema con le zone, inoltre mancano i dstnat quindi bisogna fare il solito port forwarding.
Sperando nell'implementazione a breve di altri vendor, io la trovo una soluzione migliore di CGNAT IPv4 + IPv6
Sarebbe interessante provare la DHCP option 50 per vedere se si riesce a scegliere l'IP 😆