Acho que você precisa fazer proxy de solicitações NDP para seus endereços IPv6 públicos. Eu não testei isso pessoalmente, mas esta é a teoria:
Seu ISP enviará tráfego para toda a rede IPv6 (2a04: 52c0: 101: xxx :: / 64) para o seu servidor. Isso significa que, quando alguém na Internet tenta se conectar a um endereço IP dentro dessa rede, o tráfego será enviado para o seu servidor, esperando que ele saiba como lidar com isso.
Seu servidor tem um endereço nessa rede (2a04: 52c0: 101: xxx :: 100). Quando recebe tráfego para outro endereço, ele o ignora, porque não é um endereço com o qual ele possa se identificar. Assim, o tráfego que vai para os dispositivos que recebem um endereço IP da rede designada pelo OpenVPN é interrompido em seu servidor.
Para fazer com que seu servidor perceba que precisa obter esse tráfego e enviá-lo "para baixo" pelo OpenVPN, você tem duas opções: usar uma rede IPv6 diferente para seus clientes OpenVPN (para que o roteamento tradicional funcione) ou fazer proxy do tráfego para o seu rede atual. A primeira é a melhor opção, mas o seu ISP pode não lhe atribuir mais de um / 64; o segundo é o proxy do NDP, semelhante ao proxy ARP no IPv4.
Usando o proxy do NDP, seu servidor obterá o tráfego para endereços não próprios e os reenviará aos clientes com o mesmo endereço IP conectado por meio do OpenVPN. Você terá que fazer isso para cada endereço IP em sua rede que pertença a um cliente OpenVPN.
Existem outras respostas na rede do StackExchange que abordam isso em detalhes:
Por favor, verifique as respostas para uma explicação mais completa.