Реестр известных дыр, которые сейчас НЕ закрыты. Каждая запись описывает: что не так, почему так получилось, как (потенциально) исправить, какой риск.
При закрытии — двигаем запись в раздел Closed с датой и MR/коммитом.
llama.vpn.4gain.pro через public IP fireflyЧто не так: traefik-маршрут llama-vpn защищён middleware vpn-only (ipAllowList), но в Swarm ingress traefik видит source-IP как overlay 10.0.x.x. Этот диапазон попадает в allowlist (10.0.0.0/8, добавленный с комментарием "иначе traefik сам не сможет проксировать"), поэтому любой запрос с public IP firefly + Host-заголовком llama.vpn.4gain.pro пропускается.
Подтверждение (на 2026-05-01):
curl -k -H "Host: llama.vpn.4gain.pro" \
--resolve llama.vpn.4gain.pro:443:5.101.14.132 \
https://llama.vpn.4gain.pro/v1/models
# → HTTP 200, реальный список моделей
Риск: средний. DNS-record llama.vpn → 10.9.0.191 (RFC1918) не резолвится снаружи, поэтому обычные клиенты не находят. Но кто знает hostname (например прочитал в этой wiki, в git-репо или в leaked-конфиге) — обходит DNS-protection через Host-spoof и получает полный доступ к LLM.
Возможные fix'ы:
10.9.0.191:443 (только awg0-интерфейс), wildcard *.vpn.4gain.pro cert, проксировать на 127.0.0.1:8089. Полностью изолирует от public IP.proxyProtocol (или forwardedHeaders.trustedIPs) на entrypoints traefik. ipAllowList тогда увидит реального клиента. Затрагивает ВСЕ маршруты — careful rollout, проверить все интеграции.Где живёт:
/mnt/swarm/traefik_data/custom/pro-4gain-llama.yml — маршрут/mnt/swarm/traefik_data/custom/_middlewares.yml — middleware vpn-only с broad 10.0.0.0/8sm2c-cloud-llm (templates/traefik-route.yml.j2)⚠ Та же проблема повторяется на
inventory.vpn.4gain.pro—sm2c-cloud-inventoryиспользует тот жеvpn-onlymiddleware. Решение единое: исправляем middleware (b) или меняем deploy-схему (a) — закрывает оба маршрута сразу.
Проблема: 3 shared-runner'а на firefly стояли в gitlab/gitlab-runner:v14.2.0. Docker engine v29+ требует API 1.40+, а runners 14.x шлют 1.25 → CI падали на Preparing the "docker" executor.
Фикс:
gitlab/gitlab-runner:v14.2.0 → gitlab/gitlab-runner:latest (фактически 18.11.1).--add-host gitlab.4gain.pro:10.19.1.150 registry.4gain.pro:10.19.1.150 к runner-контейнерам (hairpin NAT не работает).config.toml каждого [[runners]] блока добавлены extra_hosts (для dind-build-контейнеров) и volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"].ansible/roles/sm2c-cloud-gitlab/templates/docker-compose.yml.j2 добавлен extra_hosts: блок и runner_image: latest в defaults.docker system prune -a -f --volumes освободил 22 GB на cs-root (был 100% full).Полный паттерн зафиксирован в GitLab CI/CD — паттерн forGain.
Подтверждение: pipeline 2036 на forgain/applications/free-claude-code — success.
(пусто — переносить сюда записи при закрытии, с датой и ссылкой на коммит/MR)
Changelog
inventory.vpn (claude/forGain)