Files
knowledge-base/decisions/2026-04-21-niikn-nspd-netbird-route.md
dttb 9a203fef4a niikn: обход блокировки nspd.gov.ru через NetBird route
Заменил socat+DNAT+hosts (утренняя попытка 2026-04-21 не решила авторизацию,
поддомены sso/auth через FakeIP sing-box уходили в awg0→Финляндию где тоже
блок) на два централизованных изменения:

- NetBird Network Route 2.63.246.0/24 → pve-LionART для группы All:
  pushed на все 50 пиров автоматически, никаких действий на Windows-клиентах.
- OpenWrt dnsmasq override server=/nspd.gov.ru/8.8.8.8: минует sing-box
  FakeIP, клиенты LAN НИИКН получают реальные 2.63.246.71-76 и Windows
  маршрутизирует их через wt0 (NetBird) → pve-LionART → Telekom (195.26.30.163),
  WAF НСПД пропускает. Работает для главной + всех поддоменов (sso/auth/api).

Снесено:
- nspd-socat.service на pve-LionART
- DNAT "NSPD socat bypass for NIIKN" на MikroTik LionART
- bat-снипы niikn-nspd-hosts-install/uninstall
- hosts-записи + дубликат Ethernet-маршрута на WIN-BC0OTBOBBCH (192.168.1.202)

Протестировано: fallback через awg0 для non-NetBird клиентов не работает —
НСПД блочит hosting Amnezia-Финляндии тоже. Единственный known-good exit
сейчас — pve-LionART/Telekom 195.26.30.163. Non-NetBird машины НИИКН не
откроют НСПД до установки NetBird.

Добавлен отчёт для руководства НИИКН (projects/niikn/nspd-incident-report.md).
2026-04-21 11:07:20 +03:00

7.7 KiB
Raw Blame History

date, type, status, tags
date type status tags
2026-04-21 decision ACTIVE
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)

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:

# 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).

Проверка:

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)

# 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 на клиенте

Get-NetRoute -DestinationPrefix "2.63.246.0/24"
# Должно быть: InterfaceAlias=wt0, RouteMetric=1
Find-NetRoute -RemoteIPAddress 2.63.246.71
# Должно: InterfaceAlias=wt0

Проверить DNS (не должен быть FakeIP)

Resolve-DnsName nspd.gov.ru -Server 192.168.1.50 -DnsOnly
# Должно: 2.63.246.71-76, НЕ 198.18.0.x

Проверить трафик на pve-LionART

ssh root@pve-LionART 'tcpdump -i wt0 -n "dst net 2.63.246.0/24" -c 10'

Откат

NetBird route

curl -X DELETE -H "Authorization: Token $TOKEN" \
     https://api.netbird.io/api/routes/d7ji3ajl0ubs73a92s40

OpenWrt DNS override

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