IPv6 a la eXO
2021-06-16
Índex
- IPv6: mini-intro
- El dia a dia
- Pífies habituals
- Implementació a la eXO
IPv6
mini-intro
(diapositives i xerrada a SAX2020)
Pre-requisits: Internet
Versió curta
Els ordinadors treballen amb adreces IP, fan aquesta pinta:
IPv4: 45.150.187.207 (32 bits)
IPv6: 2a0f:de00:ffff::10 (128 bits)
Pre-requisits: Internet — Assignació IPs
Com funciona l'assignació?
(com a membres RIPE NCC)
- Bloc IPv4:
/22 → 2^(32-22) = 1024
adreces - Bloc IPv6:
/29 → 2^(128-29) = MOLTES
adreces
Per què IPv6?
(com a operadores)
- IPv4: "exhaurides al 2019 (RIPE)"
- IPv6: n'assignen més sota demanda
Per què IPv6?
(com a subscriptors)
- IPv6: bloc
/56 → 2^(128-56) = MOLTES
adreces - IPv4: una, amb sort. Habitual: zero (CGNAT)
- IPv4 addicionals: cost extra
Serveis només amb IPv6?
És Possible!
- Accedir al món IPv4: NAT64 i DNS64
- Ser accessibles des de IPv4: proxy dual-stack
Per què IPv6?
"[…] Sense IPv6 estàs bloquejat i deixes que siguin les grans empreses qui canvien el món.
IPv6 us dona a vosaltres, hackers, desenvolupadores, empreses petites i mitjanes, i administradores de sistemes la llibertat de triar.[…]"
Estat de IPv6
El dia a dia amb IPv6
El dia a dia amb IPv6
Hola, vull una IP(v4)
nova
48+32=80bits
El dia a dia amb IPv6
Hola, vull una IP(v6)
nova
48+128=176bits
El dia a dia amb IPv6
Qui ets?
# Client: Ep! Qui és ns3.exo.cat? > host ns3.exo.cat # Servidor: Aquí tens! # ns3.exo.cat és això: ns3.exo.cat has address 45.150.187.207 ns3.exo.cat has IPv6 address 2a0f:de00:ffff::10
Què fa un programa amb diverses IPs?
- Balancejar càrrega amb Round Robin basat en DNS
- Preferir v6, Round Robin entre les IPv6
- Happy-Eyeballs prova v4 i v6, agafa "el més ràpid"
Pífies habituals
Suposem: entrada AAAA
(IPv6) en DNS
Tallafocs!
- Tallafocs "no configurat" (només per IPv4)
- Descarta tots els paquets
- Client espera eternament resposta/denegació
Tallafocs!
- Es bloqueja tot el ping / ICMP6
- IPv6 és un protocol totalment diferent de IPv4
- Parts de ICMP6 són fonamentals!
Path MTU necessita ICMP6!Anuncis de ruta necessita ICMP6!
Mala config de programa
- "Bind Address: 0.0.0.0" --> IPv4-only
- "Bind Address: [::]" --> Moltes vegades dual-stack
- A vegades és necessari "0.0.0.0" i "[::]"
Evitant les pífies
Desactivar Happy-Eyeballs
Evitant les pífies
Comprovem-ho tot, sempre
# nc -z -6 turn.exo.cat 443 Connection to turn.exo.cat 443 port [tcp/https] succeeded!
(Bonus: monitoritzem en IPv4 i IPv6 per separat)
Implementació a la eXO
Arquitectura general d'accés
Arquitectura general d'accés
Les implementacions dels components centrals són open source:
- BNG: Accel-PPP
- RADIUS: FreeRadius
Procediment de proveïment de IPv6
El BNG negocia la connexió PPPoE/L2TP informant al CPE quin és el prefix IPv6 delegat /56 (256 subxarxes /64):
[2021-05-28 15:39:56]: info: bstrm0.220: send [RADIUS(1) Access-Request id=1 \ <User-Name "i0099c0@exo.cat"> <NAS-Identifier "accel-ppp"> \ <NAS-Port-Type Virtual> <Service-Type Framed-User> \ <Framed-Protocol PPP> <Calling-Station-Id "94:40:c9:1e:2c:86"> \ <Called-Station-Id "bstrm0.220"> ... [2021-05-28 15:39:56]: info: bstrm0.220: recv [RADIUS(1) Access-Accept id=1 \ <Framed-Protocol PPP> <Framed-Compression Van-Jacobson-TCP-IP> \ <Framed-IP-Address <IP-Publica-IPv4>> <NAS-Port-Id "i0099c0"> \ <Delegated-IPv6-Prefix 2a0f:de00:fe00:6300::/56> ... [2021-05-28 15:39:56]: info: ppp18: connect: ppp18 <--> pppoe(94:40:c9:1e:2c:86) [2021-05-28 15:39:56]: info: ppp18: i0099c0@exo.cat: authentication succeeded
Procediment de proveïment de IPv6
Finalment BNG crea una interfície PPP amb una IPv6 d'un pool intern:
27529: i0099c0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> \ mtu 1492 qdisc pfifo_fast state UNKNOWN group default qlen 3 link/ppp inet 192.168.155.1 peer <IP-Publica-IPv4>/32 scope global i0099c0 valid_lft forever preferred_lft forever inet6 2a00:1508:100:e2bc:ca1c:45f6:e86c:3c47/64 scope global nodad valid_lft forever preferred_lft forever inet6 fe80::ca1c:45f6:e86c:3c47/64 scope link valid_lft forever preferred_lft forever
Procediment de proveïment de IPv6
El CPE configura un client DHCPv6 sobre la seva interfície PPP i pot assigar un /64 a cada LAN segons convingui a l'usuari:
/ipv6 dhcp-client add add-default-route=yes interface=exo pool-name=exo-prefix \ pool-prefix-length=56 request=prefix /ipv6 address add address=::764d:28ff:fe61:4e9 eui-64=yes \ from-pool=exo-prefix interface=lan
Gràcies!
Aquesta presentació és a internet
https://evilham.com/ca/slides/2021-guifilab-mataro-ipv6/
Feu servir IPv6!
Fin de la cita
Aquí veńen coses extra si calen
Extra 1: IPv6-Only
- Amb notables excepcions: IPv6 als serveis més comuns
- El programari su porta connectivitat dual-stack
- FreeBSD pot desactivar IPv4
Extra 2: NAT64
- Traducció amb estat de connexions IPv6 cap a IPv4
- Fa servir un
/64
per mapejar el món IPv4 - Com amb NAT: no és possible la connexió entrant (v4 a v6) sense una connexió sortint prèvia
Extra 3: DNS64
- És una configuració especial dels Resolvers recursius de DNS
- Modifica les respostes DNS **sense** entrades AAAA (IPv6) però amb A (IPv4)
- Per cada entrada A, afegeix una entrada AAAA corresponent a la subxarxa del NAT64
- Resultat: connectivitat IPv6 a IPv4 transparent