Em teoria, o jeito certo de lidar com isso é com Delegação de Prefixo DHCP e DNS dinâmico.
Então, funcionaria assim:
1) a sua instância do roteador linux solicita um endereço IPv6, bem como uma delegação de prefixo IPv6 do ISP na interface A
2) ele atribui um / 64 do prefixo delegado para a interface B, que possui todas as outras máquinas. Anuncia este prefixo através de pacotes RA e / ou através do daemon do servidor DHCP da sua escolha
3) os clientes pegam endereços IPv6 e registram-se no DNS local pelo nome do host, ou respondem às solicitações do mDNS para esse nome se estiverem executando bonjour, Avahi, etc.
4) regras de firewall e praticamente qualquer outra configuração relacionada à rede é baseada em nomes de host, não em endereços IP. Essa é a maneira do IPv6: nomes DNS bons, endereços literais ruins porque são difíceis de lembrar e digitar.
O principal problema que você encontrará é que iptables e ip6tables suportam apenas regras baseadas em nomes de host resolvendo nomes de hosts uma vez durante a instalação da regra. Então você provavelmente terá que escrever algum script para reinstalar as regras sempre que o prefixo mudar. Pior, se um host estiver offline ou não puder ser resolvido por mDNS ou DDNS no momento da instalação da regra, as coisas serão interrompidas silenciosamente.
Em suma, as tabelas ip (6) são simplesmente quebradas para qualquer caso em que os endereços IP mudem, mesmo no IPv4. Isso significa que ele é quebrado para qualquer rede de tamanho razoável, pelo menos em um sistema que age como um roteador.
Muitos produtos de firewall comerciais lidam com esse caso de uso muito melhor (embora muitos sejam baseados em Linux, como o SonicWall). Eu suspeito que eles simplesmente resolvam os FQDNs periodicamente com base no TTL e atualizem os IPtables ou seus módulos de kernel de rede personalizados.