Skip to content
/ kvas Public
forked from qzeleza/kvas

shadowsocks клиент для роутеров keenetic

Notifications You must be signed in to change notification settings

wildrun0/kvas

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KVAS - выборочный обход блокировок для Keenetic

shadowsocks клиент для роутеров keenetic

Данный пакет позволяет осуществлять контроль и поддерживать в актуальном состоянии список разблокировки хостов или "Белый список". При обращении к любому хосту из этого списка, весь трафик будет идти через фактические любое VPN соединение, заранее настроенное на роутере, или через Shadowsocks соединение.


Здесь реализуется связка ipset+vpn|shadowsocks+dnsmasq(wildcard)+dnscrypt-proxy2.


Пакет представляет собой обвязку или интерфейс командной строки для работы с белым списком.

Особо выделю, возможность данного пакета, в связи с использованием в нем dnsmasq с wildcard, работать с любыми доменными именами третьего и выше уровней. Т.е. в белый список достаточно добавить *domen.com и маршрутизация трафика будет идти по выбранному vpn при обращении, как к sub1.domen.com, так и к любому другому подломанному имени subN.domen.com.

Тема на форуме Keenetic - forum.keenetic.com

Changelog

Список последних изменений можно посмотреть здесь

Текущие ограничения ⚠️

  1. Данный пакет использует возможности Entware - без установленного Entware он не работает
  2. В пакете используются некоторые функции API от Keenetic, потому на других роутерах он работать не будет. Хотя это ограничение возможно обойти.
  3. Пакет работает пока только на IPv4.

Возможности

  1. Квас работает на всех роутерах Keenetic, в виду легковесности задействованных пакетов (начиная с версии 0.9 beta 9 работает на всех платформах: mips, mipsel, aarch64)
  2. Квас использует dnsmasq, с поддержкой регулярных выражений, а это в свою очередь дает одно, но большое преимущество: можно работать с соцсетями и прочими высоко-нагруженными сайтами, добавив лишь корневые домены по этим сайтам.
  3. Квас позволяет просматривать/добавлять/удалять/очищать/обновлять/импортировать и экспортировать доменные имена списка разблокировки или белого списка.
  4. Квас позволяет отображать статус/отключать/включать блокировку рекламы
  5. Квас позволяет отображать статус/отключать/включать шифрование DNS
  6. Квас позволяет тестировать и выводить отладочную информацию по всем элементам связки ipset+shadowsocks+dnsmasq+dnscrypt-proxy2

Начиная с версии 1.0 beta 8 добавлена возможность подключения AdGuard Home в качестве DNS сервера.

Навигация

  1. Установка
    1. Подготовительные действия
    2. Установка пакета
  2. Диагностика в случае проблем
  3. Пример использования
  4. Подробный разбор команд
    1. Управление списками
    2. Работа с файловым списком
    3. Управление обновлениями маршрутов
    4. Настройка AdGuard Home
    5. Управление интерфейсами (bridge)
    6. Управление VPN
    7. Управление DNS
    8. Управление ssr
    9. Управление dnsmasq
    10. Отладка ошибок
    11. Помощь
  5. Помощь проекту

Установка

Подготовительные действия

  1. Подготовьте к работе свою учетную запись VPN
    1. Это может быть Shadowsocks
      1. Приобретите на стороне учетную запись Shadowsocks клиента, либо установите свой сервер на docker (дело на 5 минут).

        Внимание! Практика показывает, что аренду сервера необходимо осуществлять у зарубежного провайдера! Это поможет решить проблемы с частичным открытием доменов из "белого списка".

      2. Получите и приготовьте четыре параметра:

        1. IP адрес или доменное имя Shadowsocks сервера
        2. Номер удаленного порта Shadowsocks сервера
        3. Пароль для доступа на Shadowsocks сервер
        4. Метод шифрования на стороне Shadowsocks сервера
    2. Это может быть любое другое VPN соединение из списка: OpenVPN, Wireguard, IKE, PPPOE, CdcEthernet, L2TP, SSTP
  2. Если выбрали VPN соединение отличное от Shadowsocks - настройте его на своем роутере и проверьте его работоспособность.
  3. Установите entware
  4. Установите необходимые компоненты в WUI роутера: Общие настройки -> Изменить набор компонентов:
    1. Модули ядра подсистемы Netfilter
    2. Пакет расширения Xtables-addons для Netfilter
  5. Зайдите в админ панель роутера по адресу: https://<IP роутера>/a (будьте бдительны - символ ‘а’ в конце адреса не описка) и введите в поле Command следующую команду opkg dns-override, затем нажмите кнопку Send request.
  6. Далее, необходимо сохранить настройки, в том же поле введите команду system configuration save, затем нажмите кнопку Send request.
  7. И затем, необходимо перегрузить роутер, для этого, в том же поле введите system reboot, после чего, нажмите Send request.

Установка пакета

  1. После перезагрузки устройства, скачайте требуемую версию пакета на роутер, например в папку /opt/apps/packages/. Крайнюю версию пакета всегда можно найти по этой ссылке.

Важно! Запись файлов разрешена только в каталог /opt и далее в глубь по дереву каталога /opt.

  1. Удалите предыдущую версию пакета (если она была установлена ранее) командой opkg remove kvas.

Если ранее пакет был уже установлен, то при запросе об удалении файлов конфигурации можете их не удалять, тогда не придется повторно вводить данные установки соединения.

  1. Установите новую версию, как пример: opkg install /opt/apps/packages/kvas_0.9-10_all.ipk
  2. В процессе установки введите, полученные Вами данные на подготовительном шаге (учетные данные shadowsocks).
  3. Далее, отвечайте на вопросы по ходу установки.

Диагностика в случае проблем

Как и было описано выше есть два уровня диагностики

Для проверки работы наберите kvas test

В случае отсутствия результата наберите kvas debug > ./kvas.debug и отправьте мне в личку сформированный файл.

Примеры использования

kvas add ya.ru     - добавляем ya.ru в список разблокировки без поддержки регулярных выражений.
kvas add *ya.ru    - добавляем ya.ru в список разблокировки c поддержкой регулярных выражений.
kvas import ./list - добавляем хосты из файла в списочный файл.
kvas rm google     - удаляем все хосты со словом google внутри из списочного файла.
kvas show          - выводим все хосты из списка разблокировки.
kvas test          - тестируем работу всех служб.
kvas debug > ./log - сохраняем лог отладочной информации в файл.
kvas purge         - удаляем все хосты из списка разблокировки.

Подробный разбор команд

Управление списками

Команда Аргументы
kvas add / kvas new [*][хост]
kvas del / kvas rm [*][хост]
kvas purge / kvas clear -
add[new]     - добавляем один хост в список разблокировки, аргументом
               является добавляемый хост.
               * - в начале домена включает режим wildcard.
               без * - режим wildcard отключен.
    
del[rm]      - удаляем указанный хост из списка разблокировки.
purge[clear] - полностью очищаем список разблокировки.

Работа с файловым списком

Команда Аргументы
kvas show / kvas list -
kvas export [файл]
kvas import [файл]
show[list] - выводим список всех хостов в списках разблокировки
             и блокировки.

export     - экспорт списочного файла в указанный файл.

import     - добавляем хосты из указанного файла в списочный файл
             допускается использование комментариев с символом '#'.

Управление обновлениями маршрутов

Команда Аргументы
kvas update -
kvas period [период]
update - обновляем список IP адресов для хостов для dnsmasq.

period - установка/просмотр периода обновления IP адресов
         для списочного файла. Период должно указывать
         в форматах: m,h,d,w,n, например:

            2m - обновляем каждые две минуты
            2h - обновляем каждые два часа
            3d - обновляем каждые три дня
            4w - обновляем каждые четыре недели
            2M - обновляем каждых два месяца

         Возможен только один из вариантов, например:
         10m или 2h, по умолчанию -период обновления каждые
         12 часов или 2 раза в сутки.

AdGuard Home

Команда Аргументы
kvas adguard -
kvas adguard on -
kvas adguard off -
kvas adguard test -
kvas adguard edit -
adguard      - выводит состояние режима блокировки рекламы.
adguard test - тестирует правила создания ipset для AdGuard Home
adguard on   - включаем, блокировку рекламы.
adguard off  - отключаем, блокировку рекламы.
adguard edit - редактируем список источников блокировки рекламы.

               Обработке подлежат лишь те, файлы, которые содержат
               записи в формате 0.0.0.0 <домен> или 127.0.0 <домен>.

Шифрование DNS запросов

Команда Аргументы
kvas crypt -
kvas crypt on -
kvas crypt off -
crypt     - выводим статус шифрования dns (включено/отключено).
crypt on  - включаем,  шифрование dns (пакет dnscrypt-proxy2).
crypt off - отключаем, шифрование dns.

Интерфейсы

Команда Аргументы
kvas bridge -
kvas bridge add all
kvas bridge del all
bridge         - выводит список доступных гостевых интерфейсов
bridge add all - разрешаем доступ к VPN всем существующим гостевым сетям
bridge del all - запрещаем доступ к VPN для всех гостевых сетей.

Управление VPN

Команда Аргументы
kvas vpn -
kvas vpn set -
kvas vpn reset -
vpn       - отображаем текущий тип VPN соединения и его состояние.
vpn set   - меняем текущий VPN интерфейс, путем выбора из списка доступных.
vpn reset - обновляем таблицу правил iptables для vpn подключения: чистим ее и затем заполняем.

Управление DNS

Команда Аргументы
kvas dns -
kvas dns [IPv4]
kvas dns test -
dns       - отображаем текущий DNS (по умолчанию) для работы пакета.
dns <DNS> - устанавливаем DNS (по умолчанию) для пакета в значение <DNS>.
dns test  - тестируем работу DNS (по умолчанию) в пакете.

Управление ssr

Команда Аргументы
kvas ssr -
kvas ssr new -
kvas ssr reset -
kvas ssr port [порт] / ничего
ssr          - отображаем текущий тип VPN соединения и его состояние (тоже что и ключ 'vpn').

ssr new      - меняет настройки учетной записи shadowsocks сервера на другие настройки, 
               в случае смены сервера или иных данных учетной записи

ssr port     - отображаем текущий локальный порт Shadowsocks соединения.
ssr port <N> - меняем текущий локальный порт Shadowsocks соединения на <N>.
ssr reset    - обновляем таблицу правил iptables для Shadowsocks соединения: чистим ее и затем заполняем.

Управление dnsmasq

Команда Аргументы
kvas dnsmasq -
kvas dnsmasq port [порт] / ничего
kvas dnsmasq ip [ip] / ничего
dnsmasq          - отображаем текущие порт и IP, которые прослушивает служба dnsmasq.
dnsmasq port     - отображаем текущий порт, который прослушивает служба dnsmasq.
dnsmasq port <N> - меняем текущий порт, который прослушивает служба dnsmasq на <N>.
dnsmasq ip       - отображаем текущий IP, который прослушивает служба dnsmasq.
dnsmasq ip <N>   - меняем текущий IP, который прослушивает служба dnsmasq на <N>.

Отладка

Команда Аргументы
kvas test -
kvas debug -
test  - проверка работы всех служб, задействованных в работе КВАСА.
debug - вывод отладочной информации в случае сбоев в работе КВАСА.

Помощь

Команда Аргументы
kvas version / kvas ver -
kvas help -
version | ver - отображаем версию утилиты.
help  - справка.

Помощь проекту

Поддержать проект можете, путем своего участия в проекте (пишите в "личку"), либо путем перевода любой суммы средств на этот кошелек ЮМани.

Releases

No releases published

Packages

No packages published

Languages

  • Shell 96.5%
  • Roff 3.5%