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

VK Cloud (MCS) — whitelist proxy ноды

Провайдер: VK Cloud (MCS — Mail.ru Cloud Solutions)
Console: https://cloud.vk.com
Auth: zobally@yandex.ru (Denis Boriskin), пароль в Vaultwarden
Project: mcs3162583767 (ca6d54369a4c42daa1a3be4bae10a28a)
OpenStack CLI: source credentials/vkcloud-openrc.sh && openstack ...

Дата сбора: 2026-04-16

Назначение

5 VM (4 prod srv-01/02/03/07 + 1 test) — российские IP-точки входа для whitelist-проксей (nftables DNAT через РФ к зарубежным VPN-серверам). Используются для обхода блокировок: РФ-IP → upstream VPN (AT/DE/NL и др.).

Итог консолидации (16 Apr 2026 — DONE)

10 VK + 1 test → 4 VK + 1 test. Все 10 floating IPs сохранены.

Финальная карта (5 VMs, 12 floating IPs)

VM Primary IP Extra IPs Ifaces PBR tables
srv-01 212.233.123.88 (ens7) 185.241.195.139 (eth0), 185.241.195.242 (ens8) 3 200, 201
srv-02 90.156.214.48 (ens3) 212.111.86.181 (ens7 — NL proxy) 2 — (dual role, не тронут)
srv-03 90.156.213.143 (ens3) 185.241.195.196 (ens7), 83.166.239.199 (ens8) 3 200, 201
srv-07 90.156.218.106 (ens3) 83.166.238.168 (ens7) 2 200
test 185.241.195.42 (ens3) 185.241.195.81 (ens7) 2 200

Удалённые VMs (srv-04, 05, 06, 08, 09, 10)

Экономия

До После
Compute 15 340 ₽/мес (10×1534) 7 670 ₽/мес (5×1534)
Network/IP ~2 280 ₽/мес ~2 280 ₽/мес (IPs те же)
Итого 17 620 ₽/мес ~9 950 ₽/мес
Экономия -7 670 ₽/мес (-43%)

Технический рецепт (для повторения)

Для каждой миграции флоатинг-IP на другую VK Cloud VM:

  1. openstack port create --network shiva_ext_network --fixed-ip subnet=<id> --security-group openall <port-name>
  2. openstack server add port <target-vm> <port-id> (hot-attach → ens8/ens7/eth0)
  3. В VM: ip link set <iface> up; ip addr add <internal>/24 dev <iface> + netplan
  4. sysctl net.ipv4.conf.<iface>.rp_filter=2
  5. PBR: ip route add default via 10.0.0.1 dev <iface> src <internal> table <N> + ip rule add iif <iface> table <N> + ip rule add from <internal> table <N>
  6. openstack floating ip unset --port <old-fip> + openstack floating ip set --port <new-port> <fip>
  7. Добавить в nftables: iifname "<iface>" ip daddr <internal> tcp dport X dnat to upstream:port + oifname "<iface>" ct status dnat snat to <internal>
  8. nft list ruleset > /etc/nftables.conf для persist

Ключевые подводные камни: - default SG устаревше-restrictive → нужно openall SG явно - два default route с metric=100 → asymmetric routing → TCP handshake ломается - нужен PBR: ip rule add iif <iface> table <N> чтобы reply трафик уходил через тот же интерфейс - VK Cloud anti-spoofing на port_security → SNAT src должен совпадать с port's allowed IP - rp_filter=1 дропает asymmetric → rp_filter=2 (loose)

CLI ограничения VK Cloud (важно для recovery)

OpenStack action VK policy
server rescue ❌ 403 Policy doesn't allow
server remove volume (root) ❌ 403 Can't detach root device
server set --password ✅ работает (qemu-guest-agent), НО PasswordAuthentication no в sshd
server rebuild --key-name ✅ работает, стирает root volume
volume snapshot create --force ✅ работает на in-use volume

При потере SSH доступа — единственный CLI-only путь это rebuild с потерей конфигов. Альтернатива — noVNC console через браузер с паролем установленным через set --password.

Тариф (одинаковый для всех 5 VM)

Параметр Значение
Платформа Intel Cascade Lake (Xeon Gen2)
vCPU 1 шт.
RAM 2048 МБ
Disk 20 ГБ
Цена 1 534 ₽/мес (≈51.13 ₽/день)

Биллинг — апрель 2026 (1-15 Apr)

Категория Сумма
Compute (10 × 1 534 ₽) 6 975.22 ₽ (за 14 дн.)
Floating IP / network 1 100.87 ₽
Доп. трафик / egress 660.22 ₽
Прочие сервисы 73.27 ₽
Итого за 15 дней 8 809.58 ₽
Экстраполяция на месяц ~17 620 ₽ (≈587 ₽/день)

Из них: - Компьют: 15 340 ₽/мес (10 нод × 1 534) - Сеть/IP/прочее: ~2 280 ₽/мес

Баланс

Лицевой счёт (16 Apr) 6 830.75 ₽
Расход в день (до консолидации) ~587 ₽
Расход в день (после консолидации) ~330 ₽ (5 VMs × 51 ₽ + сеть)
Runway после консолидации ~21 день → до 2026-05-07

После консолидации расход почти в 2 раза меньше — баланса хватит до начала мая. Текущая таблица биллинга выше отражает расход ДО консолидации (1-15 Apr на 10 нод).

Список нод — снапшот ДО консолидации (на 16 Apr 21:08 MSK)

⚠️ Эта таблица отражает состояние до удаления 6 VMs. После консолидации остались только srv-01/02/03/07/test (см. карту выше). После миграций FIP трафик перераспределился между ними — нагрузка на каждой выросла, но запас по CPU/conntrack пока в норме.

Hostname IP (Float) Uptime CPU% (5m) Mem% Disk% RX Mbps TX Mbps conntrack TCP est Заметки
whitelist-vk-01 212.233.123.88 22.3 d 25.7 24.0 29.4 590 589 28 674 4 ⚡ горячая, 50% всего трафика
whitelist-vk-02 90.156.214.48 1.0 d 7.8 22.4 31.4 119 118 3 922 12 🆕 недавно перезагружена
whitelist-vk-03 90.156.213.143 22.3 d 10.1 22.1 27.8 102 102 4 899 4
whitelist-vk-04 83.166.239.199 22.3 d 7.7 22.1 27.7 74 74 4 003 4
whitelist-vk-05 83.166.238.168 22.3 d 6.9 22.1 27.9 57 57 4 804 4
whitelist-vk-06 185.241.195.242 22.3 d 7.7 22.6 27.3 97 97 4 202 5 new float 9 Apr
whitelist-vk-07 90.156.218.106 22.3 d 5.3 21.8 17.3 48 48 2 173 7
whitelist-vk-08 185.241.195.196 22.3 d 0.7 20.6 17.5 0 0 10 4 💤 idle, 0 трафика — кандидат на ребаланс/вывод
whitelist-vk-09 185.241.195.139 22.3 d 6.0 20.4 17.4 53 52 3 117 4 new float 9 Apr
whitelist-vk-10 185.241.195.81 22.3 d 3.7 20.4 17.2 16 16 1 810 4 new float 9 Apr

Σ: ~1.15 Gbps вход / 1.15 Gbps выход, 57 614 conntrack, ~9.5% средняя CPU.

Анализ vk-01 (горячая нода)

Несмотря на 590 Mbps × 2 — ноду не выкручивает:

Метрика Текущее Лимит Запас
conntrack 24 406 131 072 5.4×
CPU (мгновенно) 3.3% (sys+softirq) 100% 30×
NIC errors/dropped 0 / 0 чисто
NIC missed 0 чисто
Softnet drops 0 чисто
qdisc fq drops 17 354 / 40 млрд (0.00004%) per-flow shaping, не overload
Ring buffer RX/TX 256 (max железа) без переполнения

Реалистичный потолок одной 1-vCPU ноды: ~1.5–2 Gbps до того как softirq упрётся в CPU0. Multi-queue NIC недоступен на 1 vCPU.

Особенности и инциденты

  • 9 Apr 2026: массовая потеря floating IP — vk-06/08/09/10 получили новые IP (старые остались привязаны к удалённым флоат-аллокациям). См. incidents/.
  • whitelist-vk-08 — idle 22 дня (0 conntrack, 0 трафика): кандидат на вывод или перебалансировку. Рекомендуется разлить часть нагрузки vk-01 (~590 Mbps) на vk-08.
  • vpn-whitelist-de-01 / nl-01 / at-01 — старые YC ноды, DECOMMISSIONED (заменены на whitelist-vk-*).

Рекомендации

  1. Балансировка: перевести часть vless-маршрутов с vk-01 (590 Mbps) на vk-08 (0 Mbps) — экономии нет, но потолок дальше.
  2. vk-02: только 1 день uptime — выяснить причину последнего ребута (плановый или авария).
  3. Вывод vk-08: если редистрибуция не востребована, можно отключить → -1 534 ₽/мес.
  4. Floating IP audit: проверить, что все 10 IP оплачены (после инцидента 9 Apr).

Связанные страницы