In teoria, il modo giusto per gestirlo è con DHCP Prefix Delegation e DNS dinamico.
Quindi, funzionerebbe così:
1) l'istanza di linux del router richiede un indirizzo IPv6 e una delega del prefisso IPv6 dall'ISP sull'interfaccia A
2) assegna uno / 64 dal prefisso delegato all'interfaccia B, che ha tutte le altre macchine. Pubblicizza questo prefisso tramite pacchetti RA e / o tramite il daemon del server DHCP di tua scelta
3) i client afferrano gli indirizzi IPv6 e si registrano nel DNS locale tramite il nome host, oppure rispondono alle richieste mDNS per quel nome se stanno eseguendo bonjour, Avahi, ecc.
4) regole del firewall e praticamente qualsiasi altra configurazione relativa alla rete si basa su nomi host, non su indirizzi IP. Questo è il modo IPv6: i nomi DNS sono buoni, gli indirizzi letterali sono cattivi perché sono difficili da ricordare e da digitare.
Il problema principale che troverai è che iptables e ip6tables supportano solo le regole basate su hostname risolvendo i nomi degli host una volta durante l'installazione della regola. Quindi probabilmente dovrai scrivere degli script per reinstallare le regole ogni volta che cambia il prefisso. Peggio ancora, se un host è offline o non risolvibile da mDNS o DDNS al momento dell'installazione della regola, le cose si romperanno silenziosamente.
In breve, le tabelle ip (6) sono semplicemente rotte per ogni caso in cui gli indirizzi IP cambiano, anche su IPv4. Ciò significa che è rotto per qualsiasi rete di dimensioni ragionevoli, almeno su un sistema che funge da router.
Un sacco di prodotti firewall commerciali gestiscono questo caso d'uso molto meglio (anche se molti sono basati su Linux, come SonicWall). Sospetto che si limitino a riscrivere gli FQDN periodicamente in base a TTL e ad aggiornare IPtables o i loro moduli del kernel di rete personalizzati.