# План внедрения: DNAT anycast → 95.163.53.117 в роли frr_anycast **Дата:** 2026-09-10 ## Цель Добавить в роль `frr_anycast` опциональную DNAT-трансляцию: трафик на anycast-адрес перенаправляется на `95.163.53.117`, до уже существующей SNAT/masquerade в `postrouting` (см. обсуждение в чате). ## Подход - `table inet nat` дополняется цепочкой `prerouting` (`hook prerouting priority dstnat`) с правилом `ip daddr dnat to ` — рендерится только когда `dnat_target_ip` задан. - `enable_dnat`/`dnat_target_ip` — новые опциональные переменные роли (дефолт выключено), выводятся из `DNAT_TARGET_IP` в env-файле: если задан — DNAT включается автоматически, отдельный булев флаг в env не нужен. - DNAT имеет смысл только при уже включённом `enable_snat` (иначе `nftables.conf` вообще не разворачивается) — добавляется pre-flight `assert`. - Применяется в окружении `site-cloud` (`DNAT_TARGET_IP=95.163.53.117` в `site-cloud.env`), площадка A не затрагивается (дефолт выключен). ## Definition of done - `nftables.conf.j2` рендерит `prerouting`-цепочку с DNAT при заданном `dnat_target_ip`, без него — не рендерит (площадка A не меняется, у неё `enable_snat: false`). - `render-check-cloud.sh` подтверждает: `dnat to 95.163.53.117` присутствует у всех 4 узлов, синтаксис `nft -c` валиден. - README и summary обновлены.