Files
knowledge-base/projects/niikn/openwrt-bypass.md

4.9 KiB
Raw Blame History

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

AWG туннель (AmneziaWG)

Параметр Значение
Сервер 78.17.4.225:39202 (контейнер amnezia-awg2)
Клиентский IP 10.8.1.4/32
Интерфейс awg0
Private key jfqknYLvJKYp++cjJPxV/dn8IQNPyaPhR/2bc4PK5+4=
Public key (сервер) cftJxWuBCyz9ZiLDi23ouMQNAky5aTAUZIRHNS6l7mc=
Preshared key PiQ3bao3nSxQqJoiJugAG77ZjRXxorBS81YwoRaLzEc=

Параметры обфускации (сервер и клиент должны совпадать)

Параметр Значение
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.

Podkop + sing-box

Параметр Значение
Версия podkop v0.7.14
Режим VPN (connection_type=vpn)
Интерфейс awg0
Списки russia_inside, telegram
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'

Настройка 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 схема

  1. Клиент запрашивает DNS для instagram.com → получает FakeIP 198.18.x.x
  2. Клиент открывает соединение на 198.18.x.x
  3. MikroTik смотрит таблицу маршрутов: 198.18.0.0/15 → 192.168.1.50
  4. Пакет приходит на OpenWrt → nftables ставит fwmark → tproxy → sing-box
  5. sing-box знает реальный адрес (из FakeIP кэша) → подключается через awg0 → Финляндия

Доступные списки 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

Известные проблемы / Особенности

  • 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 не демон)
  • Битый feed убран из /etc/opkg/customfeeds.conf