Files
ayurishchevandClaude Sonnet 5 1e287ee81c Add DNAT anycast -> backend in frr_anycast nftables config
Трафик на anycast-адрес (172.31.255.10) теперь сначала DNAT'ится на
реальный backend (DNAT_TARGET_IP=95.163.53.117 для site-cloud) в
prerouting, и только потом проходит уже существующий sNAT/masquerade
в postrouting — обе цепочки в одной table inet nat, порядок хуков
гарантирует правильную последовательность.

DNAT включается автоматически по факту заданного dnat_target_ip (без
отдельного булева флага), выключен по умолчанию — площадка A не
затронута. Pre-flight assert не даёт задать dnat_target_ip без
enable_snat (иначе nftables.conf вообще не разворачивается).

render-check-cloud.sh дополнен проверкой DNAT-правила и валидацией
синтаксиса каждого nftables.conf через `nft -c -f`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bc3HkMiDwooSyLBLoMKNyF
2026-09-10 17:25:09 +03:00

58 lines
3.1 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Все специфичные для окружения "Облачная площадка" параметры разворачивания
# (updated_dia.png). Источник истины: значения из этого файла и только из
# него подставляются в шаблоны роли frr_anycast — сама роль site-специфичных
# значений не содержит.
#
# Топология: 4 узла (vR01..vR04), один AS 65200, общий anycast-адрес на всех.
# У каждого узла 2 приватных интерфейса-сегмента:
# - "основной канал" (синий) — общий L2-сегмент с Client Edge Router-M1/M2
# (площадка "Основная", ASN 65104) — анонсы БЕЗ as-path prepend;
# - "резервный канал" (розовый) — общий L2-сегмент с Client Edge Router-B1/B2
# (площадка "Резервная", ASN 65103) — анонсы С as-path prepend.
# Т.к. M1/M2/B1/B2 сидят на общих для всех vR сегментах, bgp_neighbors —
# ОДИН список на всё окружение (см. group_vars/site_cloud.yml), а не per-node.
#
# Использование: SITE_ENV_FILE=site-cloud.env ./run.sh site-cloud.yml [...]
# --- site-wide ---
LOCAL_ASN=65200
ANYCAST_PREFIX=172.31.255.10/32
DUMMY_IFACE=dummy0
PRIV_MAIN_IFACE=ens7 # сегмент к "Основная площадка" (M1/M2), синий/основной канал
PRIV_BACKUP_IFACE=ens8 # сегмент к "Резервная площадка" (B1/B2), розовый/резервный канал
EXT_IFACE=ens9 # внешний интерфейс — интернет-egress для sNAT
FRR_APT_SERIES=frr-8 # ветка репозитория deb.frrouting.org
DNAT_TARGET_IP=95.163.53.117 # DNAT: трафик на ANYCAST_PREFIX -> этот адрес (до masquerade)
# SSH/подключение (пользователь и ключ, которые Terraform выдал ВМ при создании)
SSH_USER=ansible
SSH_PRIVATE_KEY_FILE=~/.ssh/site-cloud-deploy
# --- Основная площадка (синий/основной канал, БЕЗ as-path prepend) ---
MAIN_ASN=65104
MAIN1_NEIGHBOR_IP=192.168.200.10 # Client Edge Router-M1 (main)
MAIN2_NEIGHBOR_IP=192.168.200.11 # Client Edge Router-M2 (main)
# --- Резервная площадка (розовый/резервный канал, С as-path prepend) ---
BACKUP_ASN=65103
BACKUP1_NEIGHBOR_IP=192.168.201.10 # Client Edge Router-B1 (backup)
BACKUP2_NEIGHBOR_IP=192.168.201.11 # Client Edge Router-B2 (backup)
AS_PATH_PREPEND_COUNT=3
# --- per-node (только то, что реально уникально на узел) ---
VR01_MGMT_IP=192.168.100.21
VR01_ROUTER_ID=172.31.0.1
VR01_PLATFORM=PA2 # информационно, роль это значение не использует
VR02_MGMT_IP=192.168.100.22
VR02_ROUTER_ID=172.31.0.2
VR02_PLATFORM=ME1
VR03_MGMT_IP=192.168.100.23
VR03_ROUTER_ID=172.31.0.3
VR03_PLATFORM=PA2
VR04_MGMT_IP=192.168.100.24
VR04_ROUTER_ID=172.31.0.4
VR04_PLATFORM=ME1