теоретически, правильный способ справиться с этим-делегирование префикса DHCP и динамический DNS.
Итак, это будет работать так:
1) ваш маршрутизатор Linux экземпляр запрашивает адрес IPv6, а также делегирование префикса IPv6 от интернет-провайдера на интерфейсе a
2) он присваивает один /64 из делегированного префикса интерфейсу B, который имеет все другие машины. Это объявляет этот префикс через пакеты RA и / или через демона сервера DHCP по вашему выбору
3) клиенты захватывают IPv6-адреса и регистрируются в локальной DNS по имени хоста или отвечают на запросы mDNS для этого имени, если они работают bonjour, Avahi и т. д.
4) правила брандмауэра и почти любая другая сетевая конфигурация основаны на именах хостов, а не на IP-адресах. Это путь IPv6: DNS-имена хорошие, литеральные адреса плохие, потому что их трудно запомнить и ввести.
основная проблема, которую вы найдете в том, что iptables и ip6tables поддерживает только правила на основе имен узлов, разрешая hostnames после во время установки правило. Поэтому вам, вероятно, придется написать сценарий для повторной установки правил при каждом изменении префикса. Хуже того, если узел находится в автономном режиме или не разрешен mDNS или DDNS во время установки правила, все будет ломаться молча.
короче говоря, таблицы ip (6) просто ломаются для любого случая, когда IP-адреса меняются, даже на IPv4. Это означает, что для любой сети разумных размеров, по крайней мере, на система, действующая как маршрутизатор.
многие коммерческие продукты брандмауэра справляются с этим вариантом использования намного лучше (хотя многие из них основаны на linux, например SonicWall). Я подозреваю, что они просто периодически повторно разрешают FQDN на основе TTL и обновляют IPtables или свои пользовательские сетевые модули ядра.