Дубль IP: как «чужой MAC» съел мой ComfyUI

Обложка

Вводные. Лаба на Proxmox, всё в LXC. Внутрянка на br1 (198.51.100.0/24). Снаружи — один вход через Caddy: обратный прокси, TLS сам. Админки и мониторинг — за ACL: только мой IP, остальным 403. ComfyUI (SD 1.5) живёт в lxc-comfy (198.51.100.18), раньше пыхтел на CPU, в этот день переехал на GPU: Radeon 760M, ROCm-торч, HSAOVERRIDEGFX_VERSION=11.0.0, ollama временно стопнул, чтобы не бодалась за GPU. ComfyUI слушает 8188, в мир — comfy.example-lab.ru. Параллельно ставил Frigate в свежем lxc-frigate.

Симптом. «Комфи 403, остальное открывается». photos.example-lab.ru — ок, beszel/uptime — ок, а comfy.example-lab.ru — 403, позже 502. Подозрение на ACL: «может, IP не тот?»

Хроника.

1) Логи Caddy: с телефона (открывал из Telegram) подряд два respond “Access denied” 403. Потом — 502: connect refused к 198.51.100.18:8188.

2) Внутри lxc-comfy: – ss -tlnp | grep 8188 → LISTEN 0.0.0.0:8188 (python) – curl http://127.0.0.1:8188/ → 200, UI отдался – curl http://198.51.100.18:8188/ -I → 200

Значит, жив и слушает на всех интерфейсах.

3) Снаружи (с хоста/через Caddy/с соседнего контейнера): – bash -lc '>/dev/tcp/198.51.100.18/8188' → Connection refused – tcpdump -i any -n port 8188 внутри lxc-comfy → 0 пакетов – tcpdump -i br1 -n host 198.51.100.18 and port 8188 → SYN доходит и прилетает RST

Если бы отвечал ComfyUI, был бы SYN-ACK. Значит, откликается кто-то другой.

4) Исключаем банальное: PVE firewall — пусто, ebtables — пусто, nft/iptables в контейнерах — ACCEPT, ip_forward=0 (но у нас L2-мост). Чисто.

Разгадка — ARP.ip neigh show 198.51.100.18 → lladdr «чужой MAC» – А у lxc-comfy MAC другой. – bridge fdb show | grep «чужой MAC» → этот MAC висит на порту lxc-frigate.

Бинго: у lxc-frigate оказался тот же IP 198.51.100.18. ARP резолвит адрес в «чужой MAC», трафик уезжает во Frigate, там 8188 не слушается — оттого RST. 403 здесь просто шум от ACL на первых попытках, корень — дубль IP.

Фикс. – Перекинул lxc-frigate на 198.51.100.19: pct set <frigate_id> --net0 name=eth0,bridge=br1,ip=198.51.100.19/24,gw=198.51.100.1 pct reboot <frigate_id>ip neigh flush 198.51.100.18 – Проверка: 198.51.100.18 снова указывает на MAC lxc-comfy. – comfy.example-lab.ru → 200, UI летает на GPU.

Мораль. Когда «не открывается», сперва проверь, твой ли это вообще адрес. Дубль IP — тихий убийца: ICMP может отвечать «кто-то один», а TCP будет резать RST с чужого контейнера. Диагностика по тропинке: ss (слушает?) → tcpdump (доходит?) → ARP/fdb (чей MAC?).

А вы чем страхуете лабу от дублей: DHCP-резервы, IPAM, arpwatch на br1 или что-то своё?

#network #lifehacks