Files
knowledge-base/decisions/2026-04-14-niikn-openwrt-awg-fix.md

200 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
date: 2026-04-14
type: decision
tags: [decision, network]
---
# 2026-04-14: Восстановление системы обхода блокировок НИИКН
## Проблема
Система обхода блокировок на базе OpenWrt + AmneziaWG + Podkop не работала:
- Заблокированные сайты (Instagram, WhatsApp, Telegram) недоступны
- `podkop check_proxy` — timeout
- AWG туннель: handshake устарел на 12+ часов
- Пинг через туннель: 100% packet loss
## Диагностика
### 1. Базовая проверка
```bash
# Finland VPS работает
ssh root@78.17.4.225 # ✓ OK
docker ps | grep amnezia-awg2 # ✓ UP 17 hours
# OpenWrt VM работает
ssh root@192.168.1.50 # ✓ OK
ip addr show awg0 # ✓ UP, IP: 10.8.1.4/32
# Podkop и sing-box запущены
podkop get_status # ✓ enabled
podkop get_sing_box_status # ✓ running
```
### 2. Проблема с handshake
```bash
# На сервере
docker exec amnezia-awg2 wg show awg0 | grep 10.8.1.4
# latest handshake: 12 hours, 14 minutes, 45 seconds ago
# endpoint: 176.62.183.186:63753 # СТАРЫЙ IP!
# Текущий IP НИИКН
curl ifconfig.me
# 202.71.12.186 # IP ИЗМЕНИЛСЯ!
```
**Вывод:** IP изменился, туннель не может обновить endpoint на сервере.
### 3. Проверка connectivity
```bash
# Пинг до Finland VPS
ping -c 3 78.17.4.225
# 100% packet loss # Но это из-за ICMP DROP на сервере
# Пинг до Google DNS
ping -c 3 8.8.8.8
# 0% loss # Интернет работает
# tcpdump на сервере
tcpdump -i any -n 'udp port 39202'
# Пакеты приходят от 85.235.181.190 (другой клиент)
# НЕТ пакетов от 202.71.12.186 (НИИКН)
```
**Вывод:** OpenWrt не отправляет пакеты на Finland VPS.
### 4. Проверка firewall
```bash
# Firewall zones
uci show firewall | grep zone
# lan: network='lan'
# wan: network='wan' 'wan6' # awg0 ОТСУТСТВУЕТ!
# nftables output chain
nft list chain inet fw4 output
# oifname "br-lan" jump output_lan
# oifname "awg0" jump output_wan # Есть, но зона не настроена
```
**Вывод:** awg0 не добавлен в WAN firewall зону → пакеты не отправляются.
### 5. Проверка конфигурации AWG
```bash
uci show network.awg0
# private_key='jfqknYLvJKYp++cjJPxV...' # СТАРЫЙ КЛЮЧ
# addresses='10.8.1.4/32' # СТАРЫЙ IP
```
**Вывод:** Используется устаревшая конфигурация AWG.
## Решение
### 1. Добавить awg0 в firewall WAN зону
```bash
ssh root@192.168.1.50
uci add_list firewall.@zone[1].network='awg0'
uci commit firewall
/etc/init.d/firewall reload
```
### 2. Обновить конфигурацию AWG
Новая конфигурация (из предоставленного файла):
- IP: **10.8.1.16/32**
- Private key: `41XMQFlPlq6FU4EBhqjayPvcDQJU+c+WQjabqs3ILbI=`
```bash
uci set network.awg0.private_key='41XMQFlPlq6FU4EBhqjayPvcDQJU+c+WQjabqs3ILbI='
uci set network.awg0.addresses='10.8.1.16/32'
uci commit network
```
### 3. Перезапустить интерфейс
```bash
ifdown awg0
sleep 2
ifup awg0
```
## Результат
### Проверка handshake
```bash
docker exec amnezia-awg2 wg show awg0 | grep 10.8.1.16
# peer: 10.8.1.16/32
# endpoint: 85.235.181.190:51940 # Новый endpoint
# latest handshake: 17 seconds ago # ✓ РАБОТАЕТ!
# transfer: 6.80 KiB received, 17.16 KiB sent
```
### Проверка connectivity
```bash
# Пинг через туннель
ping -c 3 -I awg0 8.8.8.8
# 0% loss, RTT ~23ms # ✓ OK
# FakeIP DNS
nslookup instagram.com 127.0.0.42
# 198.18.0.239 # ✓ OK
# WhatsApp
nslookup web.whatsapp.com 127.0.0.42
# 198.18.0.4 # ✓ OK
```
## Выводы
### Основные причины проблемы
1. **awg0 не был в firewall зоне** — пакеты блокировались на выходе
2. **Устаревшая конфигурация AWG** — старый IP и приватный ключ
### Критичные моменты
**⚠️ ВАЖНО:** awg0 **ДОЛЖЕН** быть добавлен в firewall WAN зону, иначе туннель не работает!
```bash
# Проверка
uci show firewall.@zone[1].network | grep awg0
# Должно быть: firewall.cfg03dc81.network='wan' 'wan6' 'awg0'
```
### Что работает
- ✅ AWG туннель: handshake актуален, transfer активен
- ✅ WhatsApp (все домены) через обход
- ✅ Instagram, Facebook, Threads через список "meta"
- ✅ Telegram через обход
- ✅ FakeIP DNS (198.18.0.0/15)
- ✅ Podkop + sing-box
### Документация обновлена
- [openwrt-bypass.md](/root/.claude/knowledge-base/projects/niikn/openwrt-bypass.md) — полная документация
- [niikn-vpn-status.md](/root/.claude/projects/-root/memory/niikn-vpn-status.md) — статус и конфигурация
## Команды для мониторинга
```bash
# Проверка туннеля на OpenWrt
ssh root@192.168.1.50 "ip addr show awg0 && ping -c 2 -I awg0 8.8.8.8"
# Проверка handshake на сервере
ssh root@78.17.4.225 "docker exec amnezia-awg2 wg show awg0 | grep -A 5 '10.8.1.16'"
# Проверка FakeIP
ssh root@192.168.1.50 "nslookup instagram.com 127.0.0.42"
```
## Теги
`#niikn` `#openwrt` `#amneziawg` `#podkop` `#bypass` `#firewall` `#fix`