Delegación de prefijos IPv6 en DIGI

Hola amig@s,

Debido a que en internet hay muy poca información al respecto, os dejo la configuración necesaria para transferir el IPv6 nativo que ofrece DIGI. Hasta ahora sólo se había visto con el propio router de la compañía, ZTE H298A, y en los routers Asus tanto en el sw oficial y en las versiones de tomato firmware.

Lo he probado tanto en el modelo hAP Ac2 como en RB750Gr3 y funciona igual que en el de DIGI, teniendo direcciones IPv6 diferentes en todos los hosts de la LAN y accediendo a Internet.

1.- En primer lugar, hay que activar el paquete IPv6 en el router que por defecto viene desactivado.

2.- Metemos los siguientes comandos por Terminal:

Creamos un interfaz específico en ND
IPv6 - ND (Neighbor Discovery)

Bash:
# En "add interface" pones el nombre que le has dado a tu interfaz Bridge.
/ipv6 nd
set [ find default=yes ] disabled=yes hop-limit=64 other-configuration=yes
add interface=bridge

Creamos un cliente DHCP
IPv6 - DHCP Client

Bash:
# En "interface" pones el nombre de tu interfaz PPPoE que creaste.
# En "pool-name" le das el nombre que desees al Pool de IPv6 que se creará automáticamente al obtener el Prefijo.
# En "interface" dentro del script, pones el nombre que le has dado a tu interfaz Bridge.
# En "from-pool" dentro del script, pones el nombre que le has dado en "pool-name".
/ipv6 dhcp-client
add add-default-route=yes interface=pppoe-out1 pool-name=pool6 request=prefix script=\
    ":delay 5s;\r\
    \n/ipv6 address remove [find advertise=yes] \r\
    \n/ipv6 address add interface=bridge address=::1/64 from-pool=pool6 advertise=yes"

Creamos las siguientes reglas de Firewall IPv6
IPv6 - Firewall - Filter Rules

Bash:
# En "in-interface" y "out-interface" pones el nombre de tu interfaz PPPoE que creaste, en mi caso "pppoe-out1".
/ipv6 firewall filter
add action=drop chain=input comment="Drop (invalid)" connection-state=invalid
add action=accept chain=input comment="Accept (established, related)" connection-state=established,related
add action=accept chain=input comment="Accept DHCP (10/sec)" in-interface=pppoe-out1 limit=10,20:packet protocol=udp src-port=547
add action=drop chain=input comment="Drop DHCP (>10/sec)" in-interface=pppoe-out1 protocol=udp src-port=547
add action=accept chain=input comment="Accept external ICMP (10/sec)" in-interface=pppoe-out1 limit=10,20:packet protocol=icmpv6
add action=drop chain=input comment="Drop external ICMP (>10/sec)" in-interface=pppoe-out1 protocol=icmpv6
add action=accept chain=input comment="Accept internal ICMP" in-interface=!pppoe-out1 protocol=icmpv6
add action=drop chain=input comment="Drop external" in-interface=pppoe-out1
add action=reject chain=input comment="Reject everything else"
add action=accept chain=output comment="Accept all"
add action=drop chain=forward comment="Drop (invalid)" connection-state=invalid
add action=accept chain=forward comment="Accept (established, related)" connection-state=established,related
add action=accept chain=forward comment="Accept external ICMP (20/sec)" in-interface=pppoe-out1 limit=20,50:packet protocol=icmpv6
add action=drop chain=forward comment="Drop external ICMP (>20/sec)" in-interface=pppoe-out1 protocol=icmpv6
add action=accept chain=forward comment="Accept internal" in-interface=!pppoe-out1
add action=accept chain=forward comment="Accept outgoing" out-interface=pppoe-out1
add action=drop chain=forward comment="Drop external" in-interface=pppoe-out1
add action=reject chain=forward comment="Reject everything else"

3.- Una vez finalizado, nos vamos al DHCPv6 Client y en pocos segundos, el Status pasaría de "searching" a "bound". Obteniendo de DIGI un prefijo /56.

1618488248645.png
1618488494234.png


Puede ocurrir que a veces se queda el Status en "searching" y no hay forma de obtener ningún prefijo, esto para mi fue un verdadero quebradero de cabeza y es que DIGI con cada nueva IPv4 te vuelca un prefijo IPv6 nuevo, como es normal, entonces probé lo siguiente: nos vamos a la interfaz PPPoE que tenemos creada y la deshabilitamos, dejamos unos segundos y volvemos habilitarla hasta que sincronice de nuevo.

Ahora ya el DHCPv6 Client ya lo tenemos como "bound" y con un nuevo prefijo. Tras este paso, se crean solos el Pool y el Route List.

4.- Ya solo nos queda, añadir una nueva dirección IPv6 a la interfaz Bridge, con los siguientes datos:

1618493349944.png


Donde ::192.168.88.1/64 es la dirección IP de nuestro Bridge pero en formato IPv6.
Pulsamos en "Apply" y obtenemos del Pool automáticamente el prefijo que recibimos de DIGI.

1618494180684.png


5.- Comprobamos ahora si nuestro PC ha obtenido direcciones IPv6 del router:

1618494590411.png


Y probamos si hay conectividad nativa IPv6

1618494771352.png


1618497050183.png


Pues bien, ya tenemos nuestro Mikrotik funcionando como un proveedor de direcciones SLAAC.

El siguiente video me ha aclarado bastante los pasos a seguir:

Actualización para versiones de RouterOS >v7 [03/01/2022] **​


Desde la aparición de la versión v7.x han implementado mejoras en la delegación de prefijos IPv6 con lo que ahora no es necesario seguir el anterior procedimiento a rajatabla.

Con la versión v7.x el módulo IPv6 ya viene integrado en el paquete de RouterOS por lo que al inicio del script de arranque ya genera una configuración base para IPv6.

**Esta descripción se basa en la conexión con el ISP mediante cliente PPPoE.

IPv6/Firewall (creado por defecto)

Código:
/ipv6 firewall address-list
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6
add address=::1/128 comment="defconf: lo" list=bad_ipv6
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6
add address=100::/64 comment="defconf: discard only " list=bad_ipv6
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
add address=::224.0.0.0/100 comment="defconf: other" list=bad_ipv6
add address=::127.0.0.0/104 comment="defconf: other" list=bad_ipv6
add address=::/104 comment="defconf: other" list=bad_ipv6
add address=::255.0.0.0/104 comment="defconf: other" list=bad_ipv6

/ipv6 firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=\
    established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
add action=accept chain=input comment="defconf: accept ICMPv6" protocol=icmpv6
add action=accept chain=input comment="defconf: accept UDP traceroute" port=33434-33534 protocol=udp
add action=accept chain=input comment="defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=udp src-address=\
    fe80::/10
add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=input comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=input comment="defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=input comment="defconf: drop everything else not coming from LAN" in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept established,related,untracked" connection-state=\
    established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" hop-limit=equal:1 protocol=icmpv6
add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=icmpv6
add action=accept chain=forward comment="defconf: accept HIP" protocol=139
add action=accept chain=forward comment="defconf: accept IKE" dst-port=500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=ipsec-esp
add action=accept chain=forward comment="defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=forward comment="defconf: drop everything else not coming from LAN" in-interface-list=!LAN

IPv6/DHCP Client

1641222808118.png
1641223173084.png


Código:
/ipv6 dhcp-client
add interface=pppoe-out1 pool-name=pool6 rapid-commit=no \
   request=address,prefix use-peer-dns=no

Al conectar el cliente PPPoE, el cliente IPv6 obtiene el prefijo /56 del ISP,

1641224128211.png


se crea el pool dinámicamente y delega el prefijo para el Bridge o las interfaces que queramos que trabajen con IPv6.

1641224617463.png
1641224800291.png


Código:
/ipv6 address
add address=::1 from-pool=pool6 interface=bridge-local
add from-pool=pool6 interface=vlan100

Si quisiéramos por ejemplo que nuestra red de invitados (en la imagen anterior interfaz "vlan100") también obtenga el prefijo IPv6 se añade manualmente desde "IPv6 Address List" pulsando en la + y seleccionando el pool (1) y la interfaz donde aplicarlo (2), finalmente pulsamos en "apply" (3) y observamos en el campo "Address" que se ha generado una dirección IPv6.

1641225720859.png


Después en IPv6/ND (Neighbor Discovery), creamos el correspondiente a la interfaz añadida.

1641226149515.png


Código:
/ipv6 nd
set [ find default=yes ] disabled=yes
add interface=bridge
add interface=vlan10

Y listo, ya tendrían direcciones IPv6 los hosts conectados a la red de invitados además de los hosts del bridge principal.

1641226677046.png


S@lu2.
 
Última edición:
Wow, magnifico explicado. Imagino sera igual para "todos"./// claro, algunos con PPPoE, otrod client dhcp pero similar
 
Genial, gracias por el tuto! Si te animas, prueba la beta de la V7 que creo que viene ya con IPv6 corriendo por defecto, y esta es su configuración:
Código:
/ipv6 nd
set [ find default=yes ] advertise-dns=yes advertise-mac-address=yes \
    disabled=no dns="" hop-limit=unspecified interface=all \
    managed-address-configuration=no mtu=unspecified other-configuration=no \
    ra-delay=3s ra-interval=3m20s-10m ra-lifetime=30m reachable-time=\
    unspecified retransmit-interval=unspecified
/ipv6 nd prefix default
set autonomous=yes preferred-lifetime=1w valid-lifetime=4w2d
/ipv6 settings
set accept-redirects=yes-if-forwarding-disabled accept-router-advertisements=\
    yes-if-forwarding-disabled disable-ipv6=no forward=yes \
    max-neighbor-entries=8192

Saludos!
 
Última edición:
Hostias compi @diamuxin, qué chasco me he llevado. Curioseando con IPv6 a raíz de tu comentario, me doy cuenta que ni Pepephone (masmóvil) ni O2 (telefónica) están entregando ahora mismo IPv6 en su WAN o_O

Mi gozo en un pozo, me da que me toca esperar para enredar con este tema.

Saludos!
 
Última edición:
Buenas, configurado y funcionando a la primera, gran tutorial, veremos si esto mejora algo la velocidad con digi por las noches o no…
 
Buenas, configurado y funcionando a la primera, gran tutorial, veremos si esto mejora algo la velocidad con digi por las noches o no…
El tema de la bajada de velocidad nocturna en Digi, puede venir por la saturación de usuarios en la OLT, especialmente cuando es fibra indirecta (comparte red con Movistar). No tiene nada que ver con la configuración o no del IPv6.

S@lu2.
 
El tema de la bajada de velocidad nocturna en Digi, puede venir por la saturación de usuarios en la OLT, especialmente cuando es fibra indirecta (comparte red con Movistar). No tiene nada que ver con la configuración o no del IPv6.

S@lu2.

Eso parece, pero Pocoyo por probar me ha dicho que pusiera el ipv6 a ver si mejoraba algo y como hemos venido a jugar… en cualquier caso es una cosa más configurada que supongo no hará daño.
 
Buenas, lo que ha dejado de funcionar desde que activé IPV6 es pi-hole, habrá que tocar algo en algún sitio?
 
Buenas, lo que ha dejado de funcionar desde que activé IPV6 es pi-hole, habrá que tocar algo en algún sitio?
Activa la IPv6 en el pi-hole también, y asegúrate de entregar ese formato de ip también en el dns del DHCP. Y, si le pones también al router un dns IPv6, en IP -> DNS, lo bordas.
Saludos!
 
Activa la IPv6 en el pi-hole también, y asegúrate de entregar ese formato de ip también en el dns del DHCP. Y, si le pones también al router un dns IPv6, en IP -> DNS, lo bordas.
Saludos!

Lo primero ok, ya lo puse.

Lo segundo, en donde tengo puesto el pi-hole como dns añado una línea pero con formato ipv6? Siendo el pihole 192.168.1.10 sería pasar esa ip a ipv6? Eso cómo se hace?

Lo tercero, qué DNS IPV6 pongo?
 
Lo segundo, en donde tengo puesto el pi-hole como dns añado una línea pero con formato ipv6? Siendo el pihole 192.168.1.10 sería pasar esa ip a ipv6? Eso cómo se hace?
Sospecho que metiéndote en la pi y haciendo un
Código:
ip addr
Ahí deberías ver la IPv6 del cacharro, de tipo link local (fe80:: ... etc). Ojo, que el DHCP de IPv6 no es el mismo que el de IPv4, ahí estás entregando IP's públicas (todas) así que el concepto de un DNS local no sé si tiene mucho sentido. Quizá pueda darse por la opción 23 del DHCP, pero es algo que no he probado. A ver si algún compi que tenga IPv6 implementado y tenga un pi-hole te puede echar una mano.

Lo tercero, qué DNS IPV6 pongo?
En IP -> DNS, puedes poner tanto direcciones IPv4 como IPv6 para los DNS servers. Ejemplo (Cloudflare)

1640970683595.png

Código:
/ip dns
set allow-remote-requests=yes servers=1.1.1.1,1.0.0.1,2606:4700:4700::1111,2606:4700:4700::1001

Saludos!
 
Sospecho que metiéndote en la pi y haciendo un
Código:
ip addr
Ahí deberías ver la IPv6 del cacharro, de tipo link local (fe80:: ... etc). Ojo, que el DHCP de IPv6 no es el mismo que el de IPv4, ahí estás entregando IP's públicas (todas) así que el concepto de un DNS local no sé si tiene mucho sentido. Quizá pueda darse por la opción 23 del DHCP, pero es algo que no he probado. A ver si algún compi que tenga IPv6 implementado y tenga un pi-hole te puede echar una mano.

Haciendo un ip addr me sale todo esto:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 70:85:c2:fc:3d:25 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
valid_lft 505sec preferred_lft 505sec
inet6 2a0c:5a80:1d03:7201:656d:d7e2:1dc2:f04f/64 scope global temporary dynamic
valid_lft 534971sec preferred_lft 16173sec
inet6 2a0c:5a80:1d03:7201:cb6f:aa54:9503:3dad/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591965sec preferred_lft 604765sec
inet6 2a0c:5a80:1d03:7200:532f:3e27:2a8a:b360/64 scope global temporary dynamic
valid_lft 534733sec preferred_lft 15935sec
inet6 2a0c:5a80:1d03:7200:7adf:57b3:9cb4:3575/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591965sec preferred_lft 604765sec
inet6 fe80::6e6c:45c7:50cd:acc0/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Veo un montón de direcciones ipv6, la única que empieza en fe80 es la última, es la que tengo que usar? Si es así ahora dónde le meto eso al mikrotik?

En IP -> DNS, puedes poner tanto direcciones IPv4 como IPv6 para los DNS servers. Ejemplo (Cloudflare)


Ver el adjunto 90246
Código:
/ip dns
set allow-remote-requests=yes servers=1.1.1.1,1.0.0.1,2606:4700:4700::1111,2606:4700:4700::1001

Saludos!

Eso creo que ya me lo coge solos los dns de digi, en ip dns tengo lo siguiente:

Dynamic Servers100.90.1.1
100.100.1.1
2a0c:5a80:0:2::1
2a0c:5a84:0:2::1

Deben ser los dns de digi…
 
Esa consola es la de la pi? Tiene la pi la 192.168.1.10 para IPv4? Supongo que sí, que será la última. Pero insisto, que no he tenido ocasión de probarlo, así que estoy hablando por hablar. Cuando pase por aquí @diamuxin, que te lo aclare él mejor, si tiene algo similar montado.

Saludos!
 
Esa consola es la de la pi? Tiene la pi la 192.168.1.10 para IPv4? Supongo que sí, que será la última. Pero insisto, que no he tenido ocasión de probarlo, así que estoy hablando por hablar. Cuando pase por aquí @diamuxin, que te lo aclare él mejor, si tiene algo similar montado.

Saludos!

Si te refieres a la tabla última eso es un copia pega de la sección ip-dns del mikrotik.

La pi está en en 192.168.1.10 y accedo sin problema a su Dashboard.

Lo que voy encontrando por ahí, al parecer hay que trabajarse más la configuración del pihole:

I got it working. Here's what I did:

  • When I initially set up my Pi-Hole, I only had IPv4 on my system. Thus Pi-Hole only downloaded IPv4-capable blacklists.
  • So I turned IPv6 on on my home router, and enabled DHCPv6.
  • I turned IPv6 on on my Pi-Hole computer, and rebooted. ip -o addr then showed that I had an IPv6 address. Actually, it has a couple of addresses which I don't understand yet.
  • It still didn't block IPv6 domain names.
  • I went into my computer (command line), and edited /etc/pihole/setupVars.conf. There I inserted my IPv6 address at IPV6_ADDRESS=2600:1700:(etc)
  • I also edited /etc/pihole/pihole-FTL.conf, and added AAAA_QUERY_ANALYSIS=yes.
  • I restarted pihole-FTL with: systemctl restart pihole-FTL
  • I went to the Pi-Hole web gui, and turned on DHCPv6 (SLAAC + RA). I turned on the Google IPv6 DNS checkboxes.
  • I rebooted my system.
  • I downloaded the blacklists again. This time it included IPv6 entries.
  • I enjoyed the Internet again. I'm not against ads. I buy stuff that I've seen in ads. I do, however, object to being chased all over the Internet. I do not concur. And I do object to having my precious bandwidth consumed. It's too much, you advertisers. You've gone over the line and I'll be happy to do what I can in my power to ensure I take back a bit of my online experience.
 
He hecho un pihole reconfigure porque creo que el asunto es que si ínstalas pihole sin ipv6 no descarga ni instala esa parte.

Al acabar el reconfigure al final me pone:

You may now configure your devices to use the Pi-hole as their DNS server
Pi-hole DNS (IPv4): 192.168.1.10
Pi-hole DNS (IPv6): 2a0c:5a80:1d03:7200:7adf:57b3:9cb4:3575
If you have not done so already, the above IP should be set to static.

Ahora creo que lo que falta es indicarle al mikrotik que use en ipv6 el dns de pihole en ipv6, he ido a la parte de ipv6 dchp client pero no es igual que el de ipv4, no tiene parte “networks”.
 
Buenas y feliz año.

En el foro de mikrotik proponen la siguiente solución:

Código:
/ipv6 dhcp-server option> add code=23 name=dnstest value="'fe80::6e6c:45c7:50cd:acc0'"

Lo probé y funciona, aunque por alguna razón escriben el código con option> y el > hay que quitarlo si no me da error, por suerte en terminal el mikrotik te marca en rojo lo que está mal del comando.

Lo de value es la dirección de mi pi-hole en ipv6 en local.

Ahora mi duda es si eso va a ser estático, es decir si esa dirección no la va a cambiar en un reinicio... Tengo puesto que 192.168.1.10 que es la ipv4 del pi-hole es estática, pero claro no la fe80::6e6c:45c7:50cd:acc0, no sé siquiera si este concepto tiene sentido...

Edito para decir que no funciona, curiosamente funciona en Windows pero no en el resto de dispositivos…
 
Última edición:
Actualizo para decir que si al iPad le digo que el dns es fe80::6e6c:45c7:50cd:acc0 entonces se produce el filtrado por pihole.

Así que falta un comando en mikrotik que haga que el fe80::6e6c:45c7:50cd:acc0 sea el DNS para todos…

He probado en ipv6 en dhcp crear uno nuevo con interface bridge, option dnstest (el que cree con el comando anterior) y pool6 (el pool de ipv6 creado), pero sin efecto ninguno…
 
Última edición:
Con la opción 23 no te va? Si lo estás haciendo bien, debería. Pásame un export de la config de ipv6, a ver si vemos algo raro.

Saludos!
 
Hola,

Estoy leyendo atento este hilo y he pasado para comentaros que mi escenario es diferente al del compi @Wedge78, yo utilizo IPv6 por delegación de prefijos (no uso el IPv6 DHCP Server), esto es, con el prefijo /56 que me entrega DIGI, asigna direcciones con ese prefijo a todos los hosts de mi LAN. En el pi-hole tengo marcado tanto la parte IPv6 como IPv4 de Cloudflare.

Quitando la parte del firewall, esta es mi config actual IPv6:

Bash:
/ipv6 address
add address=::1 from-pool=pool6 interface=bridge
add from-pool=pool6 interface=vlan10

/ipv6 dhcp-client
add interface=pppoe-out1 pool-name=pool6 rapid-commit=no request=\
    address,prefix use-peer-dns=no

/ipv6 nd
set [ find default=yes ] disabled=yes
add interface=bridge
add interface=vlan10

Aunque veo interesante lo que pretende hacer @Wedge78 ya que cada vez hay mas sitios web que funciona en dual-stack.

S@lu2.
 
Arriba