Skip to content
This repository has been archived by the owner on Jan 2, 2023. It is now read-only.

Установка в opt с использованием Entware. VPN конфигурация

gSpotx2f edited this page Feb 13, 2020 · 2 revisions

Эта конфигурация предполагает использование VPN для доступа к заблокированным хостам. Ruantiblock и необходимые зависимости будут установлены в дерево /opt. Перед началом убедитесь, что на роутере настроен и работает VPN-клиент и развёрнут репозиторий Entware.

Требования

  • Прошивка с ipset (любые сборки Padavan, кроме nano)

Зависимости

  • Развёрнутый репозиторий Entware
  • Настроенный и работающий VPN-клиент
  • Конверторы iconv и idn для преобразования кириллических доменов в punycode
  • Lua, luasocket, ltn12, luasec

Установка

1. Установка пакетов из репозитория Entware:

opkg install lua luasocket luasec idn iconv

2. Модуль ltn12.lua необходимо скачать в /opt/lib/lua:

mkdir -p /opt/lib/lua /opt/etc/ruantiblock
wget --no-check-certificate -O /opt/lib/lua/ltn12.lua https://raw.githubusercontent.com/diegonehab/luasocket/master/src/ltn12.lua

3. Скрипт ruantiblock.sh и модули необходимо скачать в /opt/usr/bin и разрешить выполнение:

mkdir -p /opt/usr/bin
wget --no-check-certificate -O /opt/usr/bin/ruantiblock.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock/master/opt/usr/bin/ruantiblock.sh
wget --no-check-certificate -O /opt/usr/bin/ruab_parser.lua https://raw.githubusercontent.com/gSpotx2f/ruantiblock/master/opt/usr/bin/ruab_parser.lua
wget --no-check-certificate -O /opt/usr/bin/ruab_parser.sh https://raw.githubusercontent.com/gSpotx2f/ruantiblock/master/opt/usr/bin/ruab_parser.sh
wget --no-check-certificate -O /opt/etc/ruantiblock/ruantiblock.conf https://raw.githubusercontent.com/gSpotx2f/ruantiblock/master/opt/etc/ruantiblock/ruantiblock_vpn_opt.conf
chmod +x /opt/usr/bin/ruantiblock.sh
chmod +x /opt/usr/bin/ruab*

4. Также стартовый скрипт S40ruantiblock необходимо скачать в /opt/etc/init.d и разрешить выполнение:

wget --no-check-certificate -O /opt/etc/init.d/S40ruantiblock https://raw.githubusercontent.com/gSpotx2f/ruantiblock/master/opt/etc/init.d/S40ruantiblock
chmod +x /opt/etc/init.d/S40ruantiblock

5. На устройствах с оперативной памятью 128мб и менее желательно подключить SWAP-файл на внешнем носителе

Файлы, создаваемые скриптом в процессе работы, будут располагаться в директории /opt/var/ruantiblock/ (будет создана автоматически при первом запуске скрипта).

Настройка прошивки

(параметры для VPN взяты с https://github.com/DontBeAPadavan/rublock-via-vpn/wiki)

1. В веб-интерфейсе роутера на странице Персонализация -> Скрипты в поле Выполнить после полного запуска маршрутизатора: (или в /etc/storage/started_script.sh) раскомментируйте следующие строки:

modprobe ip_set
modprobe ip_set_hash_ip
modprobe ip_set_hash_net
modprobe ip_set_list_set
modprobe xt_set

2. На странице Персонализация -> Скрипты в поле Выполнить после перезапуска правил брандмауэра: (или в /etc/storage/post_iptables_script.sh) добавьте следующие строки:

RUAB="/opt/usr/bin/ruantiblock.sh"
[ -x "$RUAB" ] && $RUAB renew-ipt

3. На странице LAN -> DHCP Server в поле Пользовательский файл конфигурации "dnsmasq.conf" (или в /etc/storage/dnsmasq/dnsmasq.conf) добавьте следующую строку:

conf-file=/opt/var/ruantiblock/ruantiblock.dnsmasq

4. На странице VPN клиент в поле Расширенная конфигурация OpenVPN (или в /etc/storage/openvpn/client) допишите следующую команду:

route-noexec

5. Параметр Направлять весь трафик через VPN интерфейс? должен быть выставлен в нет.

6. Содержимое поля Выполнить скрипт после подключения/отключения к VPN-серверу: (или /etc/storage/vpnc_server_script.sh) приведите к следующему виду:

#!/bin/sh

func_ipup()
{
    echo 0 > /proc/sys/net/ipv4/conf/$IFNAME/rp_filter
    ip route flush table 1
    ip rule del table 1
    ip rule add fwmark 1 table 1 priority 1000
    ip route add default via $IPREMOTE table 1
    return 0
}

func_ipdown()
{
   return 0
}

logger -t vpnc-script "$IFNAME $1"

case "$1" in
up)
  func_ipup
  ;;
down)
  func_ipdown
  ;;
esac

7. Можно добавить задание для обновления в Cron (прим.: обновление списка каждый 5-й день в 05:00). На странице Администрирование -> Сервисы включите Cron (Сервис Cron (планировщик)?) и в поле Задания планировщика (Crontab): (или в /etc/storage/cron/crontabs/admin) добавьте следующую строку:

0 5 */5 * * /opt/usr/bin/ruantiblock.sh update

Первый запуск

По завершении настройки перезагрузите роутер и выполните обновление:

/opt/usr/bin/ruantiblock.sh update

Или можно без перезагрузки роутера. Просто выполните в консоли:

modprobe ip_set
modprobe ip_set_hash_ip
modprobe ip_set_hash_net
modprobe ip_set_list_set
modprobe xt_set
/sbin/restart_vpn_client
/opt/etc/init.d/S40ruantiblock start
/opt/usr/bin/ruantiblock.sh update

После всего выше проделанного, попробуйте зайти на какой-нибудь заблокированный сайт с Вашего ПК или др. устройства в домашней сети.

Можно проверить идут ли пакеты через правила iptables (т.е. работает ли фильтрация правильно) в выводе статуса ruantiblock в консоли:

/opt/usr/bin/ruantiblock.sh status

Блок Iptables rules: содержит счётчики правил для ip-адресов, CIDR-диапазонов и ip-адресов, которые добавляет dnsmasq. При запросе заблокированного сайта или ip соответствующие счётчики растут.