IPv6 Network Prefix Translation (NPt) (a.k.a NAT for IPv6)

Permalänk

IPv6 Network Prefix Translation (NPt) (a.k.a NAT for IPv6)

Så onödigt och så hemskt tänker nog många. Varför skulle man vilja ha något sådant?

Har sedan ett par dagar beställt en Qotom Mini PC J4125 J4105 Quad Core Processor 5x Intel I225-V 2.5G LAN Ports och den lär väl dyka upp här efter jul. Den ska få gå som router med pfSense installerat. Under tiden jag väntar på hårdvaran tänker jag igenom hur jag ska konfigurera den.

Jag har idag följande möjligheter att ta mig ut på "nätet":

  1. 1 Gbit/s Fiber men ännu ingen IPv6 och vet inte när det kommer

  2. 4G LTE med en enda IPv6 adress

  3. HE IPv6-Tunnel

På min gamla router så har jag konfigurerat WAN failover för IPv4. Det fungerar fint och det är något jag gärna vill behålla. Nu har jag förstått att om jag vill ha failover så uppstår en del problem med mina IPv6 klienter i mitt LAN för de publika IPv6 adresser som de fått via prefix delegation fungerar enbart på ett specifikt WAN-interface (det interface de fått sin prefix delegation från).

En lösning på problemet kan vara att samtliga klienter i mitt LAN inte får sig tilldelade några publika IPv6 adresser utan får nöja sig med ULA-adresser och sen får routern göra IPv6 Network Prefix Translation, ungefär som NAT för IPv4 fungerar. Ju mer jag tänker på saken desto bättre tycker jag det verkar.

Med denna tråden så hoppas jag få in synpunkter och gärna information om hur andra i samma sits löst problemet med IPv6 och failover i sitt LAN.

Inspiration:
https://blogs.infoblox.com/ipv6-coe/you-thought-there-was-no-...
https://docs.netgate.com/pfsense/en/latest/nat/npt.html#ipv6-...

Permalänk
Medlem

När du får en ipv6 address via 4G, är det en /64 address då?
För då är det är igentligen 18,446,744,073,709,551,616 IP adresser.
Det är dock problematisk att sätta upp om den är dynamisk, då om jag förstått det rätt så fungerar inte allt automatiskt under /64 nät. Men kommer inte ihåg exakt vad det var.
Kommer säkert något och fyller på.

Permalänk
Medlem

Hej @kentlarson,

Ännu en spännande tråd!

Hur ser din LTE länk ut?
Har du en LTE router som blir tilldelad IPv6-adressen eller ligger den direkt i pfSense?

Först och främst: Det är stor skillnad på NAT och NPt.
NAT, eller NAT66 som det ofta kallas när man översätter IPv6 till IPv6, översätter hela eller delar av adresser. Exempelvis lokala ULA-adresser till en global IPv6-adress. NPt översätter enbart prefixet i IPv6-adressen, vilket gör att ex. datorn som har en LAN IPv6 på A::888 får en IPv6 global IPv6 på B::888 (prefix 64). NPt är, till skillnad från NAT, stateless vilket gör hela processen mycket mindre resurskrävande. NAT är en ganska resurskrävande process, särskilt om du kommer upp i ISP eller KO nivå.

PSA completed.

Nu kör jag enbart pfSense som VM (för testning) idag, men bör du inte kunna köra NAT66 på LTE-länken?
För att routing hos ISP ska fungera korrekt så måste de veta vilka nät du har, för LTE-länken så routar ISP till dig enbart för en IPv6-adress. Då måste du NAT:a, eller så måste ISP routa annorlunda. Jag hade NAT:at om jag var du.

Gissar att du kör HE-tunneln över fiberlänken, och i sådana fall får du två nät: ett transitnät och ett routat nät. Transitnätet används i själva tunneln medan det routade nätet är det nät du kör på LAN:et. Du behöver varken köra NAT eller NPt på denna interface eftersom HE sköter routingen på deras sida, så att all trafik som ska till ditt routade (LAN) IPv6 nät skickas till din tunnels lokala IP (alltså din router).
Efter detta är uppsatt så bör du kunna behandla dessa interfaces som vanliga WAN-interfaces. Om NAT-regeln är konfad korrekt så bör all trafik som skickas över LTE NAT:as, medan all trafik som går över HE-tunneln bara routas utan NAT.

Jag kör inte IPv6 mot WAN än, blir kanske ett framtida projekt. Men tyvärr är det få TL som erbjuder IPv6 tjänster, mestadels för att suget för IPv6 inte är tillräckligt stort. Cisco bidrar inte heller till problemet med sina licenser. I stället implementeras NAT och CG-NAT för att "lösa" problemet.
Utbildningsmaterial inom nätverk trycker inte heller på IPv6 tillräckligt, vilket är synd.
Den förra TL jag jobbade på körde inte IPv6 överhuvudtaget.

God jul förresten!

Visa signatur
Permalänk

Hej alla!

Skrivet av Sions:

När du får en ipv6 address via 4G, är det en /64 address då?
För då är det är igentligen 18,446,744,073,709,551,616 IP adresser.
Det är dock problematisk att sätta upp om den är dynamisk, då om jag förstått det rätt så fungerar inte allt automatiskt under /64 nät. Men kommer inte ihåg exakt vad det var. ...

inet6 2a00:801:dead:beaf:7683:c2ff:dead:beef/64 scope global mngtmpaddr dynamic

Ja det verkar ju vara ett /64 prefix som jag fått. via 4G routern som jag bryggat. Hur ofta den adressen ändrar sig har jag ingen aning om. Det borde ju gå att köra NPt mot en 64 adress tycker jag utan att veta eftersom jag aldrig provat.

Permalänk

Hej @gurfin!

Skrivet av gurfin:

Ännu en spännande tråd!

Ja eller hur? Tack för att du tycker det. Det händer ibland att det är svårt att se frågeställningen/syftet i de trådar jag skapar. Men det handlar ju mycket om att jag tar upp ett ämne/område som jag inte har full förståelse för och vill ha lite input från er andra. Precis så som du gett!

Skrivet av gurfin:

Hur ser din LTE länk ut?
Har du en LTE router som blir tilldelad IPv6-adressen eller ligger den direkt i pfSense?

Se tidigare svar. Jag har försatt 4G LTE-routern i bryggat läge och stängt av WiFi på den. Det är min nuvarande gamla vyatta-baserade router som plockar upp IP-adressen på sitt interface.

Skrivet av gurfin:

PSA completed.

Probabilistisk säkerhetsanalys? Jobbar du möjligen på kärnkraftverk?

Skrivet av gurfin:

Nu kör jag enbart pfSense som VM (för testning) idag, men bör du inte kunna köra NAT66 på LTE-länken?
För att routing hos ISP ska fungera korrekt så måste de veta vilka nät du har, för LTE-länken så routar ISP till dig enbart för en IPv6-adress. Då måste du NAT:a, eller så måste ISP routa annorlunda. Jag hade NAT:at om jag var du.

Jag var tvungen att läsa på lite om skillnaden mellan IPv6 NAT66 och NPTv6. NPt verkar ju vara det bättre alternativet och inte lika resurskrävande precis som du skriver.

Skrivet av gurfin:

Gissar att du kör HE-tunneln över fiberlänken, och i sådana fall får du två nät: ett transitnät och ett routat nät. Transitnätet används i själva tunneln medan det routade nätet är det nät du kör på LAN:et. Du behöver varken köra NAT eller NPt på denna interface eftersom HE sköter routingen på deras sida, så att all trafik som ska till ditt routade (LAN) IPv6 nät skickas till din tunnels lokala IP (alltså din router).
Efter detta är uppsatt så bör du kunna behandla dessa interfaces som vanliga WAN-interfaces. Om NAT-regeln är konfad korrekt så bör all trafik som skickas över LTE NAT:as, medan all trafik som går över HE-tunneln bara routas utan NAT.

Jag kör inte IPv6 mot WAN än, blir kanske ett framtida projekt. Men tyvärr är det få TL som erbjuder IPv6 tjänster, mestadels för att suget för IPv6 inte är tillräckligt stort. Cisco bidrar inte heller till problemet med sina licenser. I stället implementeras NAT och CG-NAT för att "lösa" problemet.
Utbildningsmaterial inom nätverk trycker inte heller på IPv6 tillräckligt, vilket är synd.
Den förra TL jag jobbade på körde inte IPv6 överhuvudtaget.

Ja, jag kör HE-tunneln på fiberlänken. HE-tunnelns enda syfte är egentligen att jag själv ska vara IPv6-förberedd den dagen min ISP väljer att ta steget in i 2000-talet... Rent tekniskt fungerar det med IPv4 bortsett från min publika webbserver som verkligen borde ha stöd för IPv6.

En del av komplexiteten i min setup uppstår på grund av att jag inte fått Native IPv6 på mitt fiber ännu. Därför skulle failover behöva konfigureras olika för IPv4 respektive IPv6... När fiberlänken är uppe så vill man jag ju att IPv4 ska passera på denna men att IPv6 ska passera på HE-tunneln. När fiberlänken är nere så kan både IPv4 och IPv6 (troligen NPt:ad) gå på 4G LTE.

Ska sätta upp allt när jag får min nya hårdvara och installerat pfSense. En del ger sig säkert av sig själv. Det kan bli så att jag skippar det där med failover (jag har ju ingen systemkritisk verksamhet här hemma direkt...) om det försvårar konfigurationen alltför mycket. Anledningen att jag har en failover på WAN är mest det att jag har fått ett gratis 4G LTE abonnemang (så länge jag är fiberkund) och en gratis 4G router av min ISP. Det är liksom en bra möjlighet att lära sig tekniken om inte annat.

Skrivet av gurfin:

Jag kör inte IPv6 mot WAN än, blir kanske ett framtida projekt. Men tyvärr är det få TL som erbjuder IPv6 tjänster, mestadels för att suget för IPv6 inte är tillräckligt stort. Cisco bidrar inte heller till problemet med sina licenser. I stället implementeras NAT och CG-NAT för att "lösa" problemet.
Utbildningsmaterial inom nätverk trycker inte heller på IPv6 tillräckligt, vilket är synd.
Den förra TL jag jobbade på körde inte IPv6 överhuvudtaget.

Alltså... jag har funderat på det där. Jag tänker mig alla de personer som inte har en aning om att de kör IPv6 hemma och inte ens kan skilja på mediaomvandlaren och routern. Det är fascinerande att det fungerar, för det gör det väl?

Permalänk
Medlem
Skrivet av kentlarson:

Se tidigare svar. Jag har försatt 4G LTE-routern i bryggat läge och stängt av WiFi på den. Det är min nuvarande gamla vyatta-baserade router som plockar upp IP-adressen på sitt interface.

Praxis är att göra som HE och ge kunder ett transit- och ett routatnät, men du får kolla med din ISP för LTE om du får använda hela /64 nätet. I sådana fall så routar de sannolikt hela /64 nätet till din router.
Om det stämmer så hade jag kört NPt på LTE-länken, annars måste du köra NAT66 för att kunna använda LTE-länken.
Oavsett tycker jag att de ska köra ULA-adresser på LAN:et, inte globala.

Skrivet av kentlarson:

Probabilistisk säkerhetsanalys? Jobbar du möjligen på kärnkraftverk?

I wish!

Skrivet av kentlarson:

Ja, jag kör HE-tunneln på fiberlänken. HE-tunnelns enda syfte är egentligen att jag själv ska vara IPv6-förberedd den dagen min ISP väljer att ta steget in i 2000-talet... Rent tekniskt fungerar det med IPv4 bortsett från min publika webbserver som verkligen borde ha stöd för IPv6.

En del av komplexiteten i min setup uppstår på grund av att jag inte fått Native IPv6 på mitt fiber ännu. Därför skulle failover behöva konfigureras olika för IPv4 respektive IPv6... När fiberlänken är uppe så vill man jag ju att IPv4 ska passera på denna men att IPv6 ska passera på HE-tunneln. När fiberlänken är nere så kan både IPv4 och IPv6 (troligen NPt:ad) gå på 4G LTE.

Det faktum att IPv6 kör över en tunnel i stället för natively, för WAN:ets skull, innebär egentligen ingen skillnad. Det är bara två olika typer av WAN-länkar. Det finns WAN-länkar för IPv4 som också går genom tunnlar.

IPv4 och IPv6 har helt olika routing tables och således routas trafiken helt annorlunda beroende på vilken version som används. Hur trafiken skickas genom routern kan alltså absolut skilja sig åt mellan IPv4 och IPv6, men det kan också vara genom samma interfaces.
Du bör också kunna konfigurera helt separata failover/load balancing processer för IPv4 och IPv6, med helt olika krav på länkarna.

Skrivet av kentlarson:

Ska sätta upp allt när jag får min nya hårdvara och installerat pfSense. En del ger sig säkert av sig själv. Det kan bli så att jag skippar det där med failover (jag har ju ingen systemkritisk verksamhet här hemma direkt...) om det försvårar konfigurationen alltför mycket. Anledningen att jag har en failover på WAN är mest det att jag har fått ett gratis 4G LTE abonnemang (så länge jag är fiberkund) och en gratis 4G router av min ISP. Det är liksom en bra möjlighet att lära sig tekniken om inte annat.

Absolut! Jag tycker definitivt du ska försöka sätta upp failover!
Här är en guide jag hittat för failover av IPv6 på pfSense - kolla om det är något som hjälper dig på vägen: https://docs.netgate.com/pfsense/en/latest/recipes/multiwan-i...

Skrivet av kentlarson:

Alltså... jag har funderat på det där. Jag tänker mig alla de personer som inte har en aning om att de kör IPv6 hemma och inte ens kan skilja på mediaomvandlaren och routern. Det är fascinerande att det fungerar, för det gör det väl?

Jag är osäker på hur vanligt detta är. De flesta moderna enheter har stöd för IPv6, men i praktiken körs nästan uteslutande IPv4 för Internet-länkar. Andra i forumet kanske har annan erfarenhet, men att döma av de jag pratat med inom ISP-världen, så kör nästan ingen v6 primärt. I stället implementerar ISP CG-NAT på IPv4 för alla kunder, vilket i stort sett NAT:ar all trafik en andra gång.

Det finns dock NAT46 och NAT64 för att översätta mellan IPv4 och IPv6. Det kan vara värt att undersöka mer. Här är ett inlägg av Daniel Dibs som är bra (visserligen Cisco i stället för pfSense, men fortfarande korrekt) https://lostintransit.se/2014/08/26/a-quick-look-at-nat64-and....

Visa signatur
Permalänk
Medlem
Skrivet av gurfin:

De flesta moderna enheter har stöd för IPv6, men i praktiken körs nästan uteslutande IPv4 för Internet-länkar. Andra i forumet kanske har annan erfarenhet, men att döma av de jag pratat med inom ISP-världen, så kör nästan ingen v6 primärt. I stället implementerar ISP CG-NAT på IPv4 för alla kunder, vilket i stort sett NAT:ar all trafik en andra gång.

Så verkar det tyvärr vara i Sverige. I några rätt stora länder är det numera klar majoritet för IPv6 och USA håller på att knäcka 50-strecket. I alla fall om man får tro Googles IPv6-sidor. Sverige? 14,8%. I EU är Frankrike bäst i Google-statistiken, eventuellt för att 6rd kommer därifrån.

Facebook kör som bekant IPv6 på sitt interna nät, så om man ska prata med dem (varför man nu skulle vilja det), så kommer trafiken NAT:as en tredje gång också, ifall man sitter på en CG-NAT:ad IPv4-lina.

En deprimerande bild av Sveriges status är att om man tittar på Sverige-sidan på ipv6-test.com, där är Hurricane Electric den vanligaste ISP:n Den sidan indikerar också att v6 i praktiken är långsammare än v4 i de flesta länder, antagligen beroende på att v6 måste tunnlas. Att jämföra med Facebooks påståenden om att det är mycket snabbare att skicka reklam till mobila enheter över v6...

Permalänk
Medlem

@kentlarson
Du har säkert koll på det men om du använder ULA så kommer ipv4 ha högre pri. Se https://www.rfc-editor.org/rfc/rfc6724#section-2.1

Detta kanske är vad du vill eftersom du har, primärt, tunnlade ipv6 adresser?

Men annars är det ju inte fel att köra NPt på GUA

Edit: du kan ju även köra två olika prefix på lan, sätta ena som lägre metric.

Permalänk

Den setupen du har nu så tycker jag att du bör byta till en tunnelbroker som kan ge dig tunnel via wireguard så kan du ha dubbla IPv4 uppkopplingar utan att behöva manuelt uppdatera tunnel adressen mot HE.net. Sen är det så om du skulle få CGNAT i framtiden så kommer du fortfarande kunna använda dina IPv6 adresser.

Skulle du få native IPv6 på båda uppkopplingarna så är det bättre att köra NPt GUA från den primära anslutingen och bara översäta till 4G adresserna när det behövs.

Visa signatur

Cisco-certifierad Nätverkskonsult.
Driver en egen ISP
IPv6 förespråkare.

Permalänk
Medlem
Skrivet av KAD:

Så verkar det tyvärr vara i Sverige.

Vi har klarat oss länge eftersom vi har haft relativt gott om IPv4 - men nu börjar mindre ISP köra slut och flyttar kunderna bakom CGNAT för kunna fortsätta växa sin verksamhet.

Permalänk
Medlem
Skrivet av Sions:

När du får en ipv6 address via 4G, är det en /64 address då?
För då är det är igentligen 18,446,744,073,709,551,616 IP adresser.
Det är dock problematisk att sätta upp om den är dynamisk, då om jag förstått det rätt så fungerar inte allt automatiskt under /64 nät. Men kommer inte ihåg exakt vad det var.
Kommer säkert något och fyller på.

Ja, orsaken till att man normalt inte delar upp ett /64 i mindre prefix är att SLAAC (Stateless address auto-configuration) använder 64 bitar för interface identifierare. (I allafall på Ethernet, och annat som använder MAC-adresser.) SLAAC var ju den första metoden för automatisk konfigurering av IPv6-adresser. DHCPv6 kom senare och man kan inte räkna med att all utrustning stödjer det. Speciellt saknar Android stöd för det, vilket verkar vara ett ideologiskt beslut av Google. (Det rapporterades som ett problem för 10 år sedan, https://issuetracker.google.com/issues/36949085, vilket inte kommer fixas)

Det betyder att man inte kommer så långt med ett /64-prefix, det räcker inte ens till ett LAN och ett gäst-LAN. Och NPt har gör inte heller att man får fler /64-prefix eftersom NPT är en 1 till 1-mappning. Rekommendationen jag läst är att varje privatanvändare bör få minst ett /56-prefix, vilket tillåter upp till 256 nätverk. (Tidigare var rekommendationen ett /48-prefix, och det rekommenderas fortfarande per plats för företag. /48 är också det minsta IPv6-prefixet som kan annonseras på Internet, jämfört med /24 för IPv4.)

Permalänk
Medlem
Skrivet av Karilaz:

Ja, orsaken till att man normalt inte delar upp ett /64 i mindre prefix är att SLAAC (Stateless address auto-configuration) använder 64 bitar för interface identifierare. (I allafall på Ethernet, och annat som använder MAC-adresser.) SLAAC var ju den första metoden för automatisk konfigurering av IPv6-adresser. DHCPv6 kom senare och man kan inte räkna med att all utrustning stödjer det. Speciellt saknar Android stöd för det, vilket verkar vara ett ideologiskt beslut av Google. (Det rapporterades som ett problem för 10 år sedan, https://issuetracker.google.com/issues/36949085, vilket inte kommer fixas)

Det betyder att man inte kommer så långt med ett /64-prefix, det räcker inte ens till ett LAN och ett gäst-LAN. Och NPt har gör inte heller att man får fler /64-prefix eftersom NPT är en 1 till 1-mappning. Rekommendationen jag läst är att varje privatanvändare bör få minst ett /56-prefix, vilket tillåter upp till 256 nätverk. (Tidigare var rekommendationen ett /48-prefix, och det rekommenderas fortfarande per plats för företag. /48 är också det minsta IPv6-prefixet som kan annonseras på Internet, jämfört med /24 för IPv4.)

Naje fast i den mobila världen är det lite annorlunda.

Men RFC 6459 5.3 säger

IPv6 prefix delegation is a part of Release-10 and is not covered by any earlier releases. However, the /64 prefix allocated for each default bearer (and to the UE) may be shared to the local area network by the UE implementing Neighbor Discovery proxy (ND proxy) [RFC4389] functionality.

och 5.2 säger

More specifically, the GGSN/PDN-GW guarantees that the /64 prefix is unique for the UE.

så den är unik till just din enhet.

Så det som föreslås är helt korrekt med prefix translation, men som du säger så får man ju bara ett subnät. Och behöver man mer så får det så klart att lösa, men inte på ett vanligt privat abonnemang. Även IPv4 går att få med publika prefix bakom UE som routas om man är villig att betala för det.