8.9 KiB
8.9 KiB
OpenWrt + Podkop — Обход блокировок НИИКН
Схема работы
Клиент → MikroTik (192.168.1.1)
├── обычные сайты → интернет напрямую
└── заблокированные → 192.168.1.50 (OpenWrt) → AWG туннель → 78.17.4.225 (Финляндия)
Если OpenWrt упадёт: заблокированные сайты недоступны, остальной интернет и RDP работают штатно.
OpenWrt VM (Proxmox НИИКН)
| Параметр | Значение |
|---|---|
| VMID | 101 |
| IP | 192.168.1.50 |
| Версия | OpenWrt 24.10.0 |
| Serial console | /var/run/qemu-server/101.serial0 на pve-niikn (192.168.1.201) |
| Root пароль | 1qaz!QAZ |
| SSH | root@192.168.1.50 (пароль: 1qaz!QAZ) |
AWG туннель (AmneziaWG)
| Параметр | Значение |
|---|---|
| Сервер | 78.17.4.225:39202 (контейнер amnezia-awg2) |
| Клиентский IP | 10.8.1.16/32 (обновлено 2026-04-14) |
| Интерфейс | awg0 |
| Private key | 41XMQFlPlq6FU4EBhqjayPvcDQJU+c+WQjabqs3ILbI= |
| Public key (сервер) | cftJxWuBCyz9ZiLDi23ouMQNAky5aTAUZIRHNS6l7mc= |
| Preshared key | PiQ3bao3nSxQqJoiJugAG77ZjRXxorBS81YwoRaLzEc= |
| Persistent keepalive | 25 секунд |
Параметры обфускации (сервер и клиент должны совпадать)
| Параметр | Значение |
|---|---|
| Jc | 5 |
| Jmin | 10 |
| Jmax | 50 |
| S1 | 148 |
| S2 | 21 |
| S3 | 0 (клиент не поддерживает S3/S4, сервер тоже выставлен в 0) |
| S4 | 0 |
| H1 | 1666291593 |
| H2 | 2114876545 |
| H3 | 2135310789 |
| H4 | 2140829733 |
Важно: H-значения на сервере должны быть фиксированными числами (не диапазонами). Файл конфига сервера:
/opt/amnezia/awg/awg0.confвнутри контейнераamnezia-awg2на 78.17.4.225.
Полная конфигурация клиента (OpenWrt)
[Interface]
Address = 10.8.1.16/32
PrivateKey = 41XMQFlPlq6FU4EBhqjayPvcDQJU+c+WQjabqs3ILbI=
Jc = 5
Jmin = 10
Jmax = 50
S1 = 148
S2 = 21
S3 = 0
S4 = 0
H1 = 1666291593
H2 = 2114876545
H3 = 2135310789
H4 = 2140829733
[Peer]
PublicKey = cftJxWuBCyz9ZiLDi23ouMQNAky5aTAUZIRHNS6l7mc=
PresharedKey = PiQ3bao3nSxQqJoiJugAG77ZjRXxorBS81YwoRaLzEc=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 78.17.4.225:39202
PersistentKeepalive = 25
Podkop + sing-box
| Параметр | Значение |
|---|---|
| Версия | podkop v0.7.14 |
| Режим | VPN (connection_type=vpn) |
| Интерфейс | awg0 |
| Списки | russia_inside, telegram, meta |
| disable_quic | 1 (блокировка QUIC — браузеры используют TCP) |
| LuCI плагин | luci-app-podkop |
| DNS (sing-box) | 127.0.0.42:53 (FakeIP 198.18.0.0/15) |
| DNS (dnsmasq) | 192.168.1.50:53 → форвардит в 127.0.0.42 |
UCI конфигурация (/etc/config/podkop)
config settings 'settings'
option dns_type 'udp'
option dns_server '8.8.8.8'
option disable_quic '1'
list source_network_interfaces 'br-lan'
config section 'main'
option connection_type 'vpn'
option interface 'awg0'
list community_lists 'russia_inside'
list community_lists 'telegram'
list community_lists 'meta'
Что обходится
Список "meta":
- WhatsApp (whatsapp.com, whatsapp.net, wa.me, web.whatsapp.com)
- Threads
- Все сервисы Meta Platforms
Список "telegram":
- Telegram (все домены и IP)
Список "russia_inside":
- Российские сайты, заблокированные за рубежом
Настройка MikroTik (192.168.1.1)
Добавленные маршруты
/ip route add dst-address=198.18.0.0/15 gateway=192.168.1.50 comment=podkop-fakeip
FakeIP диапазон (198.18.0.0/15) направляется через OpenWrt → sing-box перехватывает и пускает через AWG.
DHCP — DNS для клиентов
/ip dhcp-server network set 0 dns-server=192.168.1.50
Клиенты получают DNS 192.168.1.50 (dnsmasq → sing-box FakeIP).
Как работает FakeIP схема
- Клиент запрашивает DNS для
instagram.com→ получает FakeIP198.18.0.239 - Клиент открывает соединение на
198.18.0.239 - MikroTik смотрит таблицу маршрутов:
198.18.0.0/15 → 192.168.1.50 - Пакет приходит на OpenWrt → nftables ставит fwmark → tproxy → sing-box
- sing-box знает реальный адрес (из FakeIP кэша) → подключается через awg0 → Финляндия
Firewall конфигурация (КРИТИЧНО!)
awg0 должен быть в WAN зоне:
# Проверить
uci show firewall.@zone[1].network
# Если awg0 нет в списке — добавить
uci add_list firewall.@zone[1].network='awg0'
uci commit firewall
/etc/init.d/firewall reload
Проверка:
nft list chain inet fw4 output | grep awg0
# Должно быть: oifname "awg0" jump output_wan
Доступные списки podkop
Все списки из https://github.com/itdoginfo/allow-domains:
russia_inside, russia_outside, telegram, youtube, meta, twitter, discord, tiktok, hdrezka, news, anime и др.
Добавить список:
uci add_list podkop.main.community_lists=youtube
uci commit podkop
podkop restart
Диагностика
Проверка туннеля на OpenWrt
# SSH доступ
ssh root@192.168.1.50 # пароль: 1qaz!QAZ
# Статус интерфейса
ip addr show awg0
# Должно быть: inet 10.8.1.16/32, state UP
# Пинг через туннель
ping -c 3 -I awg0 8.8.8.8
# Проверка podkop
podkop get_status
podkop get_sing_box_status
# Проверка FakeIP
nslookup instagram.com 127.0.0.42
# Должно вернуть: 198.18.x.x
Проверка handshake на сервере
ssh root@78.17.4.225 # пароль: vb8Se9VMdwh1P692PZ
docker exec amnezia-awg2 wg show awg0 | grep -A 5 '10.8.1.16'
# latest handshake должен быть < 2 минут
Проверка с клиента
# DNS запрос
nslookup instagram.com 192.168.1.50
# Должен вернуть FakeIP (198.18.x.x)
# Маршрут
traceroute -n 198.18.0.1
# Первый hop должен быть 192.168.1.50
Известные проблемы / Особенности
proto_amneziawg_check_installed: not found— баг в/lib/netifd/proto/amneziawg.sh:298, нефатальный, интерфейс поднимаетсяamneziawg-tools 1.0.20240213-r1не поддерживает S3/S4 → выставить в 0 на сервере- H-значения сервера должны быть фиксированными (не диапазонами
H1=x-y) - После перезагрузки: sing-box running, awg0 UP —
podkop status= "not running" это нормально (podkop не демон) - КРИТИЧНО: awg0 ДОЛЖЕН быть в firewall WAN зоне, иначе пакеты не уходят
- КРИТИЧНО для FakeIP-режима:
disable_quic=1обязателен, иначе браузеры используют HTTP/3 на UDP:443 мимо обхода (YouTube/Meta/Google) podkop restartможет сбрасыватьshutdown_correctlyв 0 — проверять после рестарта- sing-box установщик не всегда включает procd-автозапуск: проверять
/etc/init.d/sing-box enabled
История изменений
2026-04-14 — Восстановление работы
Проблемы:
- Старая конфигурация AWG (IP 10.8.1.4, устаревший приватный ключ)
- awg0 не был добавлен в firewall WAN зону
- Handshake не обновлялся 12+ часов
Исправлено:
- Обновлен приватный ключ:
41XMQFlPlq6FU4EBhqjayPvcDQJU+c+WQjabqs3ILbI= - Изменен IP на 10.8.1.16/32
- Добавлен awg0 в firewall WAN зону:
uci add_list firewall.@zone[1].network='awg0' - Перезапущен firewall и интерфейс awg0
Результат:
- ✅ Handshake актуален (< 3 минут)
- ✅ Пинг через туннель: 0% loss, ~23ms RTT
- ✅ FakeIP DNS работает
- ✅ WhatsApp, Instagram, Telegram полностью функциональны
- ✅ Transfer: 6.80 KiB received, 17.16 KiB sent