Заменил 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).
161 lines
7.7 KiB
Markdown
161 lines
7.7 KiB
Markdown
---
|
||
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`
|