Aceptar y reenviar el range IPv6 entrante a otra interfaz

Tengo una configuration OpenVPN trabajando con IPv4. En preparación para el soporte de IPv6, hice lo siguiente:

  • ens3 interfaz (puede llegar a Internet) tiene una dirección / 64 de ISP
  • Divido el / 64 en dos / 65
  • ens3 ahora tiene …. :: / 65
  • El server OpenVPN está configurado para usar ….: 8000 :: / 65
  • por lo tanto tun0 (dispositivo OpenVPN) tiene ….: 8000 :: 1/65
  • cuando los clientes se conectan, obtienen direcciones del range correcto asignado, por ejemplo, ….: 8000 :: 1000/65

El problema: la comunicación IPv6 sólo funciona en dirección saliente. El tráfico entrante no funciona, porque la puerta de enlace de ISP pide ejemplo ICMP6, neighbor solicitation, who has ....:8000::1000 que llega a ens3 pero mi server no responde a esto. Supongo que tengo que decirle a mi server y ens3 a aceptar packages para el ….: 8000 :: / 65 range y lo envía a tun0 ?! Pero no estoy seguro de cómo hacer esto.

En caso de que esto sea relevante, utilizo firewalld en una máquina de Fedora.

EDITAR

Después de @ kasperd me señaló a una buena explicación de los prefijos enrutados, seguí leyendo sobre esto.

No he encontrado documentation sobre cómo puedo solicitar un prefijo enrutado de mi proveedor de alojamiento. Así que supongo que tengo que quedarme con mis auto-split / 65 prefijos. Por favor, dime cómo mejorar si esto no es una solución limpia!

Con el fin de responder a las requestes de vecinos mencionados, es necesario habilitar a NDP proxying. sysctl -w net.ipv6.conf.all.proxy_ndp=1

Para un número fijo de clientes, ahora se puede hacer ip neigh add proxy ....:8000::1000 dev ens3 . Para automatizar este process con OpenVPN, se pueden agregar las siguientes dos líneas a la configuration del server OpenVPN:

 script-security 2 learn-address ./proxy-ndp 

Con la escritura del proxy-ndp beeing

 #!/bin/bash extif=ens3 op="$1" addr="$2" if [[ "$addr" != *":"* ]]; then # no IPv6 exit 0 fi case "$op" in add|update) /usr/sbin/ip neigh replace proxy "$addr" dev "$extif" ;; delete) /usr/sbin/ip neigh del proxy "$addr" dev "$extif" ;; esac 

Además, si el reenvío IPv6 no está presente, se debe habilitar esto con sysctl -w net.ipv6.conf.all.forwarding=1 . El último paso es permitir el reenvío entre las interfaces de networking. Desde que utilizo firewalld, el command es firewall-cmd --direct --add-rule ipv6 filter FORWARD 0 -i tun0 -o ens3 -j ACCEPT .