--- date: 2026-04-21 type: decision status: ACTIVE tags: [decision, niikn, mmfb, lionart, netbird, nspd, bypass, dns] --- # 2026-04-21: Обход блокировки nspd.gov.ru через NetBird Network Route > **Заменяет** [[2026-04-20-niikn-nspd-bypass-via-lionart]] (WG-туннель, откачен) и промежуточную попытку через socat+DNAT+hosts (утро 2026-04-21, не сработала из-за FakeIP в sing-box на OpenWrt). ## Проблема НСПД блокирует по WAF публичный IP НИИКН `85.235.181.190` (MTS Customers_P2P_B16, AS8359). Подробности корневой причины — [[2026-04-20-niikn-nspd-bypass-via-lionart]]. ## Почему предыдущие попытки не сработали ### WG-туннель НИИКН↔LionART (откачен 2026-04-20) Работал технически, но совпал с побочными изменениями (отключение podkop-fakeip route, смена DHCP DNS) → сотрудники пожаловались на общее замедление. Откачен. ### socat + DNAT + hosts (попытка 2026-04-21 утро, не полетела) Схема: `hosts: 195.26.30.163 nspd.gov.ru` → DNAT на MikroTik LionART (`src=85.235.181.190 → 10.253.1.253:4443`) → socat TCP4-LISTEN:4443 → nspd.gov.ru:443. **Почему не сработала:** 1. **OpenWrt 192.168.1.50 (podkop/sing-box) FakeIP-ил** весь домен `nspd.gov.ru` и поддомены в `198.18.0.0/15`. Windows получал FakeIP, шёл через podkop → awg0 (Финляндия), куда НСПД вообще не пускал. 2. **Auth-поддомены** (`sso.nspd.gov.ru`) не были в hosts → ломалась авторизация даже когда главная открывалась. 3. **Дублирующий Ethernet-маршрут** `2.63.246.0/24 via 192.168.1.1` с metric=1 конкурировал с wt0 при последующей попытке NetBird-route. ## Итоговое решение — NetBird Network Route + DNS override на OpenWrt ``` [Windows НИИКН] DNS запрос → 192.168.1.50 (OpenWrt dnsmasq) ↓ dnsmasq server=/nspd.gov.ru/8.8.8.8 (минует sing-box FakeIP 127.0.0.42) ↓ ответ: 2.63.246.71-76 (реальные IP) [Windows НИИКН] routing table: 2.63.246.0/24 → wt0 (NetBird, metric=1) ↓ WireGuard → 100.70.128.49 (pve-LionART) [pve-LionART 10.253.1.253] NetBird FORWARD + MASQUERADE ↓ default gateway 10.253.1.1 [MikroTik LionART 10.253.1.1] NAT masquerade на WAN ↓ src=195.26.30.163 (Telekom /27) [НСПД 2.63.246.0/24] HTTP 200 ✅ (вкл. sso / auth / api субдомены) ``` ### Ключевое отличие от WG-схемы 2026-04-20 - **Только подсеть `2.63.246.0/24`** идёт через туннель, не весь интернет → общий traffic не замедляется. - **NetBird push** доставляет маршрут на все 50 пиров в группе `All` автоматически → ничего устанавливать на Windows-машины НИИКН. - Удалённые сотрудники (Мексика, Казахстан) получают фикс автоматически. ## Конфигурация ### 1. NetBird Network Route (через API) ```bash TOKEN='nbp_YTEmAVpS0hLhnTeJ09q3wYaC0AAXjN21NPvM' # из 2026-04-16-unifi-migration-peredelki curl -X POST -H "Authorization: Token $TOKEN" -H "Content-Type: application/json" \ https://api.netbird.io/api/routes \ -d '{ "description": "NSPD bypass (2.63.246.0/24 → pve-LionART WAN 195.26.30.163)", "network_id": "nspd-bypass", "enabled": true, "peer": "cuisnd3l0ubs73bsbbl0", "network": "2.63.246.0/24", "metric": 9999, "masquerade": true, "groups": ["cqgcidrl0ubs73f2hgf0"] }' ``` | Поле | Значение | |------|----------| | Route ID | `d7ji3ajl0ubs73a92s40` | | Peer (exit) | `cuisnd3l0ubs73bsbbl0` = pve-LionART (100.70.128.49) | | Groups | `cqgcidrl0ubs73f2hgf0` = All (50 пиров) | | Masquerade | true (NetBird ставит iptables MASQUERADE для WG→WAN SNAT) | ### 2. OpenWrt 192.168.1.50 — dnsmasq DNS override Sing-box podkop FakeIP-ит весь `nspd.gov.ru` через community-list `russia_outside`. Решение — делегировать `nspd.gov.ru` на 8.8.8.8 напрямую, минуя sing-box: ```bash # ssh root@192.168.1.50 uci add_list dhcp.@dnsmasq[0].server='/nspd.gov.ru/8.8.8.8' uci commit dhcp /etc/init.d/dnsmasq restart ``` После этого dnsmasq для запросов `*.nspd.gov.ru` идёт на 8.8.8.8, не на `127.0.0.42:53` (sing-box). Проверка: ```bash nslookup nspd.gov.ru 192.168.1.50 # Должно вернуть 2.63.246.71-76, не 198.18.0.x ``` ### 3. Клиенты — ничего делать не нужно - NetBird-пиры в группе `All` получают маршрут `2.63.246.0/24 → wt0` автоматически. - Клиенты LAN НИИКН получают реальные IP НСПД через OpenWrt dnsmasq. - Если на машине остались старые hosts-записи `195.26.30.163 nspd.gov.ru` от снесённой попытки — убрать (браузер иначе пойдёт на 195.26.30.163:443, там никто не слушает). ## Cleanup старого socat-пути (выполнено 2026-04-21) ```bash # pve-LionART systemctl disable --now nspd-socat.service rm /etc/systemd/system/nspd-socat.service systemctl daemon-reload # MikroTik LionART /ip firewall nat remove [find comment="NSPD socat bypass for NIIKN"] # Windows 192.168.1.202 — hosts почищен вручную через WinRM ``` ## Диагностика ### Проверить NetBird route на клиенте ```powershell Get-NetRoute -DestinationPrefix "2.63.246.0/24" # Должно быть: InterfaceAlias=wt0, RouteMetric=1 Find-NetRoute -RemoteIPAddress 2.63.246.71 # Должно: InterfaceAlias=wt0 ``` ### Проверить DNS (не должен быть FakeIP) ```powershell Resolve-DnsName nspd.gov.ru -Server 192.168.1.50 -DnsOnly # Должно: 2.63.246.71-76, НЕ 198.18.0.x ``` ### Проверить трафик на pve-LionART ```bash ssh root@pve-LionART 'tcpdump -i wt0 -n "dst net 2.63.246.0/24" -c 10' ``` ## Откат ### NetBird route ```bash curl -X DELETE -H "Authorization: Token $TOKEN" \ https://api.netbird.io/api/routes/d7ji3ajl0ubs73a92s40 ``` ### OpenWrt DNS override ```bash uci del_list dhcp.@dnsmasq[0].server='/nspd.gov.ru/8.8.8.8' uci commit dhcp /etc/init.d/dnsmasq restart ``` ## Риски и ограничения 1. **NetBird зависимость** — если daemon упадёт на клиенте, маршрут `2.63.246.0/24` пропадёт и запросы уйдут через обычный WAN → WAF block. 2. **OpenWrt зависимость** — если OpenWrt 192.168.1.50 упадёт, DNS `nspd.gov.ru` вернётся к FakeIP (или перестанет резолвиться). Остальной интернет не ломается. 3. **Cert-pinning** — НСПД использует сертификат Минцифры. NetBird не трогает TLS, end-to-end между клиентом и НСПД. Проблем быть не должно. 4. **Росреестр разблочит 85.235.181.190** (заявка 8-800-100-34-34) — тогда можно удалить NetBird route и dnsmasq override, НСПД заработает напрямую. ## Теги `#niikn` `#mmfb` `#lionart` `#netbird` `#nspd` `#bypass` `#dns` `#fix`