Перейти к содержанию

Проверка MASQUERADE в amnezia-awg2 — задача 26

Закрыто 24.08.2026 без удаления правил. Первоначально два правила для 10.8.1.0/24 были ошибочно приняты за дубликат. Проверка полного вывода iptables -t nat -S POSTROUTING показала разные выходные интерфейсы: eth0 и eth1.

Фактическая схема

В контейнере amnezia-awg2:

Правило Назначение
172.29.172.1/32 → 10.8.1.12/32, -o awg0, MASQUERADE Узкий обратный путь VPS nginx к Open WebUI на ragserver
destination 127.0.0.11/32DOCKER_POSTROUTING Служебное правило Docker DNS
source 10.8.1.0/24, -o eth0, MASQUERADE Выход VPN-клиентов через основную сеть контейнера 172.29.172.0/24
source 10.8.1.0/24, -o eth1, MASQUERADE Выход VPN-клиентов в Docker-сеть 172.17.0.0/16

Интерфейсы и маршруты на момент проверки:

eth0  172.29.172.2/24
eth1  172.17.0.2/16
awg0  10.8.1.0/24

default via 172.29.172.1 dev eth0
10.8.1.0/24 dev awg0
172.17.0.0/16 dev eth1
172.29.172.0/24 dev eth0

Правило через eth0 активно и имело около 1,3 млн пакетов / 274 MiB. Правило через eth1 имело нулевые счётчики, но оно отличается по интерфейсу и не является точным дубликатом.

Безопасная диагностика

Нельзя удалять правило по номеру строки: перед правилами Amnezia находится узкий SNAT для rag-api, а номера меняются при любом обновлении.

sudo docker exec amnezia-awg2 \
  iptables -t nat -L POSTROUTING -n -v --line-numbers

sudo docker exec amnezia-awg2 \
  iptables -t nat -S POSTROUTING

sudo docker exec amnezia-awg2 ip -br address
sudo docker exec amnezia-awg2 ip route

Точным дубликатом считаются только две полностью одинаковые строки в выводе iptables -t nat -S POSTROUTING, включая -s, -d и -o.

Что было проверено

  • В awg0.conf нет PostUp и PreDown; старая гипотеза об их повторном выполнении не подтвердилась.
  • После переоформления awg-rag через GUI и обновления контейнерной конфигурации набор правил остался корректным.
  • ragserver имеет свежий handshake на 10.8.1.12.
  • Open WebUI через VPN и публичный rag-api /healthz отвечают HTTP 200.

Решение

Правила не удалять, cron-cleanup не устанавливать. Если в будущем появятся две полностью одинаковые строки, сначала снять iptables-save, определить источник создания и удалять правило только по полному match, а не по line number.


Первоначальный runbook: 08.08.2026. Диагностика и закрытие: 24.08.2026.