Инструкция по настройки роутера с OpenWrt для обхода блокировок.
Все DNS запросы идут через HTTPS (DOH).
Роутер перенаправляет запросы (на адреса из списка) через VPN.
Можно через ssh: https://openwrt.org/docs/guide-user/services/dns/doh_dnsmasq_https-dns-proxy
Для LiCI можно через интерфейс (System->Software) https-dns-proxy
Можно через ssh: https://openwrt.org/docs/guide-user/services/vpn/openvpn/client
Для LiCI можно через интерфейс (System->Software) luci-app-openvpnФайлы конфигурации .OVPN можно найти на (https://www.vpngate.net/en/)
Файл конфигурации .OVPN должен содержать строку
route-noexec, для того чтобы не создавать маршрутизацию по умолчанию через vpn при подключении
Применяем настройки фаервола:
uci commit firewall && /etc/init.d/firewall restart
Создаем файл /etc/pro-route/hosts для хранения хостов, которые нужно перенаправлять на vpn
185.167.98.127 # rutracker.org 45.132.105.85 # rutracker.org 104.20.42.23 # 4pda.ru 104.20.41.23 # 4pda.ru kinobase.org kinokrad.co kinokrad.net kinokong.ws kinokong.cc hdrezka.ag hdrezka.cm rezka.ag
Создаем скрипт /etc/pro-route/apply.sh (добавлет статический маршрут для адресов из файла hosts)
#!/bin/bash iface="$1" [ -z "$iface" ] && exit logger -t pro-route "Add custom routes for '$iface'" input="/etc/pro-route/hosts" while IFS= read -r line do host=$(echo $line | awk -F# '{print $1}') [ -z "$host" ] && continue route add $host $iface logger -t pro-route "Make route for '$host'" done < "$input"
Даем права на запуск скрипта /etc/pro-route/apply.sh
chmod +x /etc/pro-route/apply.sh
Добавляем код в /etc/openvpn.user. Скрипт будет выполнятся каждый раз при запуске интерфейса (т.к. при разрыве vpn соединения маршруты сбрасываются).
[ "$ACTION" = "up" ] && /bin/sh /etc/pro-route/apply.sh tun0
Соединение с vpn может быть установлено, но маршруты не пробрасываться, по этому проверяем через доступ к тестовому ресурсу. Так же проверяем шлюз, через который идет соединение, т.к. провайдер может подменять заблокированный ресурс на заглушку.
Создаем скрипт /etc/pro-route/check.sh
#!/bin/bash log(){ echo $1 logger -t pro-route $1 } host="$1" gate="$2" if [ -z "$host" ] || [ -z "$gate" ] then log "Bad params." exit fi success=False i=1 while [ $i -le 3 ] do log "Checking vpn connecton by host '$host' ($i)." res=$(/bin/traceroute $host -m 3 -w 3) if [[ "$res" = *"$gate"* ]] then success=True log "Success" break else log "Fail" fi sleep 3 i=$((i+1)) done if [ $success = False ] then log "Restart vpn" /etc/init.d/openvpn restart fiДаем права на запуск скрипта /etc/pro-route/check.sh
chmod +x /etc/pro-route/check.shДобавляем срипт в планировщик
*/10 * * * * /bin/sh /etc/pro-route/check.sh rutracker.org vpngate




