--- date: 2026-05-04 type: playbook tags: [niikn, network, gov-ru, troubleshooting, playbook] --- # Playbook: gov-сайты не открываются из НИИКН Для оператора (Claude / Олег) — пошаговый алгоритм когда сотрудник НИИКН говорит «.gov.ru / .ru не работает». Все компоненты проверены 2026-05-04. ## Архитектура bypass ``` Клиент НИИКН (192.168.1.x, Win+Yandex Browser) └─ DNS → 192.168.1.50 (OpenWrt dnsmasq → podkop FakeIP по умолчанию) └─ для исключённых доменов (sev/zakupki/nspd/...) → форвард в 77.88.8.8 / 8.8.8.8 → реальный IP └─ маршрут к реальному IP: ├─ обычный → MikroTik (192.168.1.1) → MTS WAN 85.235.181.190 └─ для bypass-сетей (2.63.246/24, 95.167.245/24, 87.250.251/24) → 192.168.1.201 (pve-niikn) → wt0 (NetBird) → pve-LionART → WAN LionART 195.26.30.163 ``` **Ключевой узел** — pve-LionART (`100.70.128.49` в NetBird, peer ID `cuisnd3l0ubs73bsbbl0`) — чистый российский WAN. ## Шаг 1. Триаж — какой класс проблемы С pve-LionART прогнать сайт: ```bash sshpass -p '1qaz!QAZ' ssh -o StrictHostKeyChecking=no root@100.70.128.49 " getent hosts SITE curl -sk -A 'Mozilla/5.0' -o /dev/null -w 'HTTP:%{http_code}\n' --max-time 10 https://SITE/ echo | openssl s_client -servername SITE -connect SITE:443 -connect_timeout 6 2>/dev/null | openssl x509 -noout -issuer 2>/dev/null " ``` И с НИИКН (через OpenWrt → MTS): ```bash sshpass -p '1qaz!QAZ' ssh root@100.70.120.229 "sshpass -p '1qaz!QAZ' ssh root@192.168.1.50 ' nslookup SITE 127.0.0.1 | tail -3 curl -sk -A Mozilla -o /dev/null -w \"HTTP:%{http_code}\\n\" --max-time 10 https://SITE/ '" ``` Соотношение результатов → класс: | LionART | НИИКН curl | DNS на НИИКН | Класс | Решение | |---------|-----------|--------------|-------|---------| | 200 | 200 | реальный IP | Норма | (вообще не должно жаловаться) | | 200 | 4xx/000 | `198.18.x.x` (FakeIP) | **A. FakeIP подмена** (sev, culture, gosuslugi) | Шаг 2А | | 200 | 000/forbidden | реальный IP | **B. WAF-блок MTS-IP** (nspd) | Шаг 2Б | | 4xx unknown CA | то же | любое | **C. ru-trust cert на клиенте** (nspd с Jan 2026) | Шаг 2В | | handshake failure / TLS alert | то же | любое | **D. ГОСТ-mTLS / клиент-сертификат** (lk.zakupki) | Шаг 2Г | | 403 без UA, 200 с UA | (то же) | любое | **E. Anti-bot WAF** (uookn.sev) | A или Б — UA проблема не у нас | ## Шаг 2А. FakeIP подмена (только DNS-фикс) Симптом: `nslookup SITE 127.0.0.1` → `198.18.x.x`. **Каждый раз когда я вижу FakeIP для gov-сайта — этот override либо потерян, либо никогда не был**. ```bash ssh root@100.70.120.229 ssh root@192.168.1.50 # 1qaz!QAZ оба DOMAIN=sev.gov.ru # ROOT-домен достаточно — покрывает все поддомены uci -q del_list dhcp.@dnsmasq[0].server="/$DOMAIN/77.88.8.8" uci -q del_list dhcp.@dnsmasq[0].server="/$DOMAIN/8.8.8.8" uci add_list dhcp.@dnsmasq[0].server="/$DOMAIN/77.88.8.8" uci add_list dhcp.@dnsmasq[0].server="/$DOMAIN/8.8.8.8" uci commit dhcp /etc/init.d/dnsmasq restart rm -f /tmp/sing-box/cache.db /etc/init.d/sing-box restart ``` После этого клиенту: `ipconfig /flushdns` (или просто перезапустить браузер). ## Шаг 2Б. WAF-блок MTS-IP (DNS + NetBird route + MikroTik route) Симптом: с LionART 200, c НИИКН (real IP) → 000/блок-страница «Forbidden Rule …». Решение — пустить только этот CIDR через NetBird → pve-LionART. ```bash # 1. CIDR подсети сайта (через RIPE) curl -s "https://stat.ripe.net/data/network-info/data.json?resource=$IP" | python3 -c "import json,sys; print(json.load(sys.stdin)['data']['prefix'])" # 2. NetBird route через API (token в credentials.md → "Netbird (netbird.io cloud)") NB="nbp_YTEmAVpS0hLhnTeJ09q3wYaC0AAXjN21NPvM" curl -s -X POST -H "Authorization: Token $NB" -H "Content-Type: application/json" \ https://api.netbird.io/api/routes \ -d '{"network":"","network_id":"","description":"<описание>","peer":"cuisnd3l0ubs73bsbbl0","masquerade":true,"metric":9999,"groups":["cqgcidrl0ubs73f2hgf0"],"enabled":true,"network_type":"IPv4"}' # 3. MikroTik route (на 192.168.1.1) sshpass -p 'OL260380eg' ssh -o KexAlgorithms=+diffie-hellman-group14-sha1 \ -o HostKeyAlgorithms=+ssh-rsa AI@192.168.1.1 \ '/ip/route/add dst-address= gateway=192.168.1.201 comment=" via NetBird->LionART"' # 4. MASQUERADE и MSS clamp на pve-niikn — уже стоят в systemd unit # iptables-nspd-restore.service. Если новый интерфейс — обновить. # 5. DNS override на OpenWrt (см. шаг 2А) чтобы podkop не подменял на FakeIP ``` **Известные группы / peers (NetBird):** - group `cqgcidrl0ubs73f2hgf0` = «All» (default) - peer `cuisnd3l0ubs73bsbbl0` = pve-lionart (наш чистый exit) ## Шаг 2В. ru-trust cert на клиенте (для Минцифра-сертификатов) Симптом: `openssl x509 -issuer` показывает `Russian Trusted Sub CA` или `Russian Trusted Root CA`. Chrome/Edge ругается «ERR_CERT_AUTHORITY_INVALID». Yandex Browser работает нативно. Быстро для одного ПК — PowerShell от админа через RustDesk: ```powershell $tmp=$env:TEMP iwr https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer -OutFile $tmp\r.cer iwr https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer -OutFile $tmp\s.cer Import-Certificate -FilePath $tmp\r.cer -CertStoreLocation Cert:\LocalMachine\Root Import-Certificate -FilePath $tmp\s.cer -CertStoreLocation Cert:\LocalMachine\CA ``` Если `gu-st.ru` блочат — поменять на оригинальный путь `https://www.gosuslugi.ru/crt`. Если и тот не открывается — embed cert base64 прямо в скрипт. Альтернатива без CSP-вмешательства: открывать gov-сайты в **Yandex Browser** (он встроенно доверяет Минцифре). ## Шаг 2Г. ГОСТ-mTLS / клиент-сертификат Симптом: TLS handshake failure / SSL alert от сервера независимо от выходного IP. Пример — `lk.zakupki.gov.ru`, многие ЛК Госуслуг для юр.лиц. **Сетью не решается.** Юзеру нужен: - КриптоПро CSP установлен - Сертификат ЭЦП на токене (Rutoken / JaCarta) или в реестре - Плагин для браузера (CryptoPro Browser Plugin) Помочь могу только подсказать — установка обычно делается централизованно. ## Шаг 2Д. Anti-bot WAF Симптом: `curl -sk` → 403, но `curl -sk -A 'Mozilla/5.0'` → 200. Пример — `uookn.sev.gov.ru` на Bitrix BotProtect. **Действий не нужно** — все нормальные браузеры отправляют User-Agent. Если жалобы при таком сценарии — значит у юзера ещё какая-то проблема (DNS-кэш / неправильный браузер / настройки прокси). Прогнать шаг 2А на всякий случай. ## Текущий реестр overrides + routes ### OpenWrt 192.168.1.50 — dnsmasq.server (форсируем реальный DNS вместо FakeIP) Проверка списка: `uci show dhcp | grep server=` | Домен | Когда добавлен | Класс | |-------|--------------|-------| | `nspd.gov.ru` | 2026-04-20 (восст. 2026-05-04) | A+B (DNS + NetBird route) | | `sev.gov.ru` | 2026-04-28 (восст. 2026-05-04) | A | | `zakupki.gov.ru` | 2026-04-? (восст. 2026-05-04) | A+B | | `gosuslugi.ru` | 2026-05-04 | A | | `rosreestr.gov.ru` | 2026-05-04 | A (но MTS-блок остаётся, нужно расширять до B при обращении) | | `culture.gov.ru` | 2026-04-30 (восст. 2026-05-04) | A | | `economy.gov.ru` | 2026-05-04 | A (fgistp.economy.gov.ru — Минэк ФГИС ТП) | | `ozon.ru` (вся зона `*.ozon.ru`) | 2026-05-29 | `russia_outside` FakeIP'ил → выход в Финляндию → Ozon гео-блокирует зарубежные IP («Доступ ограничен»). Override → прямой MTS (РФ-IP). curl всё равно 403 (анти-бот по fingerprint, одинаков с MTS и LionART) — **браузер проходит JS-challenge**. | ⚠️ **Эти overrides периодически теряются** при работе с podkop / реконфигах OpenWrt. Если жалоба — проверять uci show dhcp в первую очередь. > **Аудит + восстановление 2026-05-29:** при разборе жалобы (diadoc/ozon/ЕИС) в живом `uci show dhcp` оставались только `nspd` + `ozon` — остальные gov-overrides снова слетели, из-за чего `zakupki.gov.ru` (ЕИС), `gosuslugi`, `sev`, `rosreestr`, `culture`, `economy` уходили в FakeIP→Финляндию и не открывались. **Восстановлены все** (`/$D/77.88.8.8` + `/8.8.8.8`), `dnsmasq` рестарт. Проверка с офисного ПК (maul-pc) и pve-niikn: `zakupki.gov.ru`→**200** (через LionART-route `95.167.245.0/24`), `gosuslugi`/`sev`/`rosreestr`/`culture`/`economy`→**200** (через MTS напрямую). Прочие РФ-маркетплейсы (WB/СберМаркет/Я.Маркет/М.Видео/Авито) — direct, ок; `russia_outside` ловит узко (ozon, gosuslugi, zakupki). > > ⚠️ `lk.zakupki.gov.ru` (личный кабинет ЕИС) — **ГОСТ-TLS only**: TLS alert 40 (handshake_failure) с обоих путей (MTS и LionART), CIDR `94.25.0.0/17` Ростелеком. **Маршрутом НЕ лечится** (см. Шаг 2Г). Открывать в **Yandex Browser** (нативный ГОСТ) + КриптоПро CSP/ЭЦП для входа. > > ✅ **podkop/туннель проверены 2026-05-29:** заблокированные работают (youtube/instagram→200, whatsapp соединяется с maul-pc), tproxy-счётчик растёт (8.3M пакетов), awg0 несёт трафик. Туннель Финляндия жив. ### NetBird Routes (через API) → pve-LionART | Network | Network ID | CIDR | Назначение | |---------|-----------|------|-----------| | `nspd-bypass` | `d7ji3ajl0ubs73a92s40` | `2.63.246.0/24` | nspd.gov.ru | | `zakupki-bypass` | `d7s61o2fadhs73bjk520` | `95.167.245.0/24` | zakupki.gov.ru main | | `telemost-bypass` | `d7s61oafadhs73bjk750` | `87.250.251.0/24` | telemost.yandex.ru | | `diadoc-bypass` | `d8cljnbl0ubs7386r1ug` | `46.17.203.0/24` | diadoc.ru / Контур (AS49675) — MTS WAN чёрная дыра (TCP timeout 12с); LionART достаёт. **2026-05-29** | ### MikroTik 192.168.1.1 — static routes ``` /ip/route/print where comment~"NetBird" ``` Должны быть routes `2.63.246.0/24`, `95.167.245.0/24`, `87.250.251.0/24`, `46.17.203.0/24` → `192.168.1.201`. ### pve-niikn 192.168.1.201 — iptables (persist через systemd) `/etc/systemd/system/iptables-nspd-restore.service`: - POSTROUTING: `-s 192.168.1.0/24 -o wt0 -j MASQUERADE` - mangle FORWARD MSS clamp на wt0 (важно — MTU 1280) ## Что делать когда юзер говорит "не открывается" **90% случаев:** просто запусти шаг 2А с восстановлением dnsmasq overrides на OpenWrt + сказать клиенту перезапустить браузер. Это решает большинство «вчера работало, сегодня нет». **Если шаг 2А не помог:** триаж по таблице → 2Б/2В/2Г. **Если ru-trust требуется массово:** готовить .ps1 для раскатки через RustDesk на все ПК НИИКН. ## Связанные - [decisions/2026-05-04-niikn-nspd-via-netbird-lionart.md](../../decisions/2026-05-04-niikn-nspd-via-netbird-lionart.md) — финальная схема NetBird→LionART - [decisions/2026-04-28-niikn-uookn-sev-gov-fakeip-fix.md](../../decisions/2026-04-28-niikn-uookn-sev-gov-fakeip-fix.md) — sev.gov.ru - [decisions/2026-04-30-niikn-culture-gov-fakeip-fix.md](../../decisions/2026-04-30-niikn-culture-gov-fakeip-fix.md) — culture.gov.ru - [openwrt-bypass.md](openwrt-bypass.md) — общая схема OpenWrt + AmneziaWG + podkop - [mikrotik.md](mikrotik.md) — MikroTik НИИКН конфиг