Incident 2026-05-28 ~05:45–13:52 MSK на vds-kzntsv. ~2.5ч активного outage + ~5.5ч на эфемерной статике до окончательного fix хостером. Revised RCA: наш netplan+systemd-networkd конфликтовал с provider's expected ifupdown stack. Их start/ipadd procedure ожидает чистый ifupdown и не может auto-recover когда networkd «держит» eth0. 8 дней работало потому что networkd сам тянул DHCP. Когда что-то на стороне Rusonyx разорвало DHCP-binding — auto-recovery не сработала. Fix: systemctl mask netplan + systemd-networkd* (на running system без stop — IP и SSH сохранились), Rusonyx ребутнул VM и положил чистый /etc/network/interfaces.d/ifcfg-eth0 через свой start/ipadd. Netmask /18, gw 89.253.192.1, чистый ifupdown. Wiki: - NEW concepts/vds-kzntsv-dhcp-outage-2026-05-28 — full RCA + recovery runbook (эфемерная статика + permanent-fix via ifupdown) + diagnostic dot-graph + revised lessons-learned + anti-pattern - NEW sources/vds-kzntsv-incident-2026-05-28 — timeline 05:25 backup OK → 08:43 statics → 13:52 final reset; provider's ifcfg-eth0 content; ticket text reference - UPDATE entities/vds-kzntsv — mask /18, ifupdown stack, kernel cmdline net.ifnames=0 объясняет eth0 naming, hypervisor hw80, pass-store путь, Known issues § - UPDATE concepts/rusonyx-vps-onboarding-quirks — quirk #9 переписан про /18 layout + canonical ifcfg, quirk #10 NEW про ifupdown vs netplan stack choice + bootstrap mask commands - UPDATE index.md + log.md Tasks: - STATUS header: incident RESOLVED summary - NEXT_SESSION: следующая сессия — cleanup netplan-artifacts (optional), registry GC (~20G pending), board-viewer-build unhealthy разбор Memory (out-of-repo): vds-kzntsv-rusonyx-network-recovery переписан с revised RCA — canonical bootstrap step «mask netplan/networkd» для всех Rusonyx Ubuntu VDS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
11 KiB
title, type, tags, sources, updated
| title | type | tags | sources | updated | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Rusonyx VPS onboarding quirks (Astra Облако / myvm.rusonyx.ru) | concept |
|
|
2026-05-20 |
Rusonyx VPS onboarding quirks
Quirks first-boot опыта на Rusonyx VDS (Astra Облако, https://myvm.rusonyx.ru) — для memory будущих сессий. Зафиксировано при активации vds-kzntsv 2026-05-20.
1. VNC console не открывается с первого раза
В Управление сервером → Консоль HTML5 noVNC может не загружаться (зависание на индикаторе соединения). Помогает кнопка «Остановить VNC» в той же панели — force-disconnect stale attachment'а на hypervisor side. После клика подождать ~5 сек, открыть консоль заново.
Если не помогает — ticket в support, без VNC реальной возможности зайти в box нет (см. quirk 2).
2. Stale системный образ Ubuntu — обязательный upgrade через VNC
Поставка содержит сотни pending updates, включая openssh-server и kernel. Письмо при активации прямо рекомендует последовательность:
apt update
apt upgrade
apt --fix-broken install
apt upgrade
И ключевая часть: «строго через VNC-консоль», потому что openssh-server upgrade'у переключают сервис, что разрывает SSH session и бьёт upgrade на половине.
По дороге будет 5+ dpkg interactive prompts (conffile conflicts). Ответы:
| Prompt | Правильный ответ | Reasoning |
|---|---|---|
/etc/ssh/sshd_config |
2 (keep local) | Rusonyx-modified sshd_config форсит PermitRootLogin yes + PasswordAuthentication yes для первого захода. Maintainer-версия дефолтит prohibit-password — потеряешь SSH-доступ если ключ ещё не залит. |
/etc/cloud/cloud.cfg |
N (keep current) | Rusonyx модифицировал под свой provisioning (network, ssh-key inject). Maintainer-версия может сломать их хуки. |
grub-pc /dev/vdaX target |
1 (/dev/vda whole-disk MBR) |
Опция 2 (на partition) — blocklist mechanism, less reliable. Опция 3 (skip) = box не загрузится. |
cloud-init local config (если появится) |
keep | По той же логике. |
После завершения — reboot (или ждать пока apt сам запустит).
3. SSH initial password — одноразовый
Активационное письмо даёт root + одноразовый пароль. Первый шаг bootstrap'а (после VNC-upgrade) — push своего SSH key и harden sshd:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Через drop-in file /etc/ssh/sshd_config.d/00-hardening.conf (префикс 00- чтобы выиграть first-match precedence над 50-cloud-init.conf который форсит PasswordAuthentication yes).
4. Подключение через SSH с password на Windows
OpenSSH for Windows не имеет -pw flag (как plink/PuTTY) или sshpass. Для одноразового password-bootstrap:
- plink.exe (
C:\Program Files\PuTTY\plink.exe) — supports-pw, доступен если PuTTY установлен. - Pipe
echo y | plink ...для auto-accept first-time host key (plink кэширует в registry). - После push pubkey → переключаемся на native OpenSSH
ssh -i(plink больше не нужен).
5. Hypervisor-side VNC ≠ guest-side VNC service
В гостевой системе нет VNC service'а — VNC console работает на qemu/KVM hypervisor side. Поэтому request «зайди и передёрни vnc service из гостя» невозможен. Управляется только через Rusonyx web panel.
6. Default firewall — open?
Из наблюдений 2026-05-20: после reboot SSH:22 поднимался автоматом, не было видно guest-side ufw default-deny. Но ICMP ping проходил до VNC-fix, при том что все TCP-порты были filtered. Похоже, Rusonyx имеет perimeter firewall, который автоматически allow'ит TCP только когда VPS становится «active» в их учёте — корреляция с моментом первой VNC-сессии. Не воспроизводимо post-factum; для будущих VDS — стоит сначала открыть VNC, потом ждать что SSH станет доступен.
7. Tariff именования
«160 SSD» переименован в «160 NVMe» (та же цена, апгрейд по IOPS). Если в старой переписке/доках видите «160 SSD» — это actually 160 NVMe. Аналогично могут быть переименования для 80/220+ тарифов.
8. Welcome-email рекомендации
Содержит только команды apt upgrade, не упоминает:
- Что VNC может быть stale.
- Какие dpkg prompts и правильные ответы.
- Initial password — одноразовый, нужно сменить на ключ.
См. также: support-ticket draft в vds-kzntsv-bootstrap-2026-05-20 с конкретными suggestions для Rusonyx.
9. Сеть = /18, не /24. Gw в той же subnet
Rusonyx прописывает VM в /18 (netmask 255.255.192.0), не в /24. Адреса 89.253.192.0 – 89.253.255.255 — это один большой L2 broadcast domain, gateway 89.253.192.1 сидит внутри него.
Каноническая ifupdown-конфигурация (то что прописывает их start/ipadd procedure):
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 89.253.255.94
netmask 255.255.192.0
post-up ip ro add 169.254.0.0/16 dev eth0 metric 400
post-up ip ro add 89.253.192.1 dev eth0 metric 400
post-up ip ro add default via 89.253.192.1 dev eth0 metric 400
post-up ip ro add 89.253.192.0/18 via 89.253.192.1 dev eth0 src 89.253.255.94 metric 400
post-up ip ro del 89.253.192.0/18 dev eth0 proto kernel scope link src 89.253.255.94
Тонкость: их post-up сначала добавляет 89.253.192.0/18 через gw (routed), потом удаляет автоматически добавленный kernel-route (directly attached). То есть весь трафик внутри /18 идёт через gw, не L2-broadcast — типичный hosting-pattern для изоляции клиентов друг от друга (proxy-ARP / routed-on-host).
Эфемерная статика для recovery (если конфиг утерян):
sudo ip addr add 89.253.255.94/18 dev eth0 # /18 — gw сам в подсети, link-route не нужен
sudo ip route add default via 89.253.192.1 dev eth0
Если по какой-то причине /18 не приемлем — fallback с /24 и link-route к gw:
sudo ip addr add 89.253.255.94/24 dev eth0
sudo ip route add 89.253.192.1 dev eth0 # link-scope route к gw
sudo ip route add default via 89.253.192.1
DNS resolvers: 89.253.252.30, 89.253.252.31.
Как обнаружить gw/netmask для конкретной VM:
- Соседний VPS у того же хостера —
ip route+ip addrпокажут. /etc/network/interfaces.d/ifcfg-<iface>на самой VM (если конфиг present) — provider's canonical setup.- Cached DHCP lease (если уцелел):
cat /run/systemd/netif/leases/*→ полеROUTER=. - Активационное письмо при выдаче VPS.
- Support ticket — последний resort.
Подробный кейс где это пригодилось — vds-kzntsv-dhcp-outage-2026-05-28.
10. Network stack: ifupdown (NOT netplan)
Rusonyx provisioning ожидает ifupdown + networking service, не netplan/systemd-networkd. Их start/ipadd/ipdel procedure (вызывается при start VM / IP add-remove / network reset) кладёт /etc/network/interfaces.d/ifcfg-<iface> и ребутает networking.
Header в их /etc/network/interfaces:
# Autoconfigured by Provider's start/ipadd/ipdel procedure.
# !!! DO NOT MANUALLY EDIT OR DELETE THIS FILE !!!
Проблема: Ubuntu 24.04 base ships netplan + systemd-networkd. cloud-init часто оставляет /etc/netplan/50-cloud-init.yaml с dhcp4: true. После первого boot оба стека активны параллельно.
Скорее всего 8 дней работает потому что DHCP сам всё резолвит. Но если что-то на стороне хостера разорвёт DHCP-binding (rare, но случается — см. инцидент 2026-05-28), их auto-recovery start/ipadd не сможет применить static config, потому что networkd «держит» eth0. → VM лежит до тикета.
Канон setup после bootstrap для Rusonyx Ubuntu VDS:
sudo systemctl disable systemd-networkd.service systemd-networkd.socket systemd-networkd-wait-online.service
sudo systemctl mask systemd-networkd.service systemd-networkd.socket systemd-networkd-wait-online.service
sudo systemctl mask netplan # preventive
# leave networking enabled (default)
Безопасно на running system — disable/mask без stop не убивают текущий процесс. Изменение вступает только при следующем boot.
Anti-pattern: прописывать persistent статику через /etc/netplan/*.yaml. Использовать ifupdown (/etc/network/interfaces.d/*), а лучше — попросить хостера через тикет «настройте дефолтную конфигурацию» — они через start/ipadd пропишут это сами.
Подробный кейс — vds-kzntsv-dhcp-outage-2026-05-28.
Когда применять
- Любой новый Rusonyx VDS (Astra Облако).
- Возможно частично применимо к другим Russian VDS-providers с custom OS templates (REG.RU, FirstByte, RuVDS), но конкретные dpkg prompt'ы вендор-specific.
Ссылки
vds-kzntsv-bootstrap-2026-05-20— где впервые столкнулись.vds-kzntsv— текущий live host.