200 lines
5.6 KiB
Markdown
200 lines
5.6 KiB
Markdown
---
|
||
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`
|