Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
maksimkurb committed Nov 12, 2024
1 parent 760e86b commit d5753c4
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 0 deletions.
12 changes: 12 additions & 0 deletions .github/docs/domain-routing.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions .github/docs/ip-routing.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions .github/workflows/build-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:
branches:
- main
paths-ignore:
- '.github/docs/**'
- '.editorconfig'
- '.gitignore'
- 'LICENSE'
Expand Down
42 changes: 42 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,47 @@ Telegram-чат проекта: https://t.me/keenetic_pbr
- Настраиваемые таблицы маршрутизации и приоритеты
- Автоматическая настройка для списков `dnsmasq`

## Принцип работы

Данный пакет содержит следующие скрипты и утилиты:
```
/opt
├── /usr
│ └── /bin
│ └── keenetic-pbr # Утилита для скачивания и обработки списков, их импорта в ipset, а также генерации файлов конфигурации для dnsmasq
└── /etc
├── /keenetic-pbr
│ └── /keenetic-pbr.conf # Файл конфигурации keenetic-pbr
├── /ndm
│ ├── /netfilter.d
│ │ └── 50-keenetic-pbr-fwmarks.sh # Скрипт добавляет iptables правило для маркировки пакетов в ipset с определённым fwmark
│ └── /ifstatechanged.d
│ └── 50-keenetic-pbr-routing.sh # Скрипт добавляет ip rule для направления пакетов с fwmark в нужную таблицу маршрутизации и создаёт её с нужным default gateway
├── /cron.daily
│ └── 50-keenetic-pbr-lists-update.sh # Скрипт для автоматического ежедневного обновления списков
└── /dnsmasq.d
└── (config files) # Папка с сгенерированными конфигурациями для dnsmasq, заставляющими его класть IP-адреса доменов из списков в нужный ipset
```

### Маршрутизация пакетов на основе IP-адресов и подсетей
**keenetic-pbr** автоматически загружает ip-адреса и подсети из списков в нужные `ipset`. Далее пакеты на IP-адреса, которые попадают в этот `ipset`, маркируются определённым `fwmark` и на основе правил маршрутизации переадресовываются на конкретный интерфейс.

**Схема процесса:**
![IP routing scheme](./.github/docs/ip-routing.svg)

### Маршрутизация пакетов на основе доменов
Для маршрутизации на основе доменов используется `dnsmasq`. Каждый раз, когда клиенты локальной сети делают DNS-запрос, `dnsmasq` проверяет, есть ли домен в списках, и если есть, то добавляет его ip-адреса в `ipset`.

> [!NOTE]
> Чтобы маршрутизация доменов работала, клиентские устройства не должны использовать собственные DNS-сервера. Их DNS-сервером должен быть IP роутера, иначе `dnsmasq` не увидит эти пакеты и не добавит ip-адреса в нужный `ipset`.
> [!IMPORTANT]
> Некоторые приложения и игрушки используют собственные способы получения ip-адресов для своих серверов. Для таких приложений маршрутизация по доменам не будет работать, т.к. эти приложения не делают DNS-запросов. Вам придётся узнавать IP-адреса/подсети серверов этих приложений и добавлять их в списки самостоятельно.
**Схема процесса:**
![Domain routing scheme](./.github/docs/domain-routing.svg)


## Предварительная подготовка роутера
1. Работоспособность пакета проверялась на **Keenetic OS** версии **4.2.1**. Работоспособность на версии **3.x.x** возможна, но не гарантируется.
2. Необходимо установить дополнительные компоненты на ваш роутер в разделе Управление -> Параметры системы:
Expand All @@ -32,6 +73,7 @@ Telegram-чат проекта: https://t.me/keenetic_pbr
- **Пакеты OPKG / Пакет расширения Xtables-addons для Netfilter**
- На данный момент этот пакет не обязателен, поскольку его возможности не используются keenetic-pbr, но его возможности могут пригодиться в будущем. Инструкция к модулю [доступна по ссылке](https://manpages.ubuntu.com/manpages/trusty/en/man8/xtables-addons.8.html).
3. Вам необходимо установить среду Entware на Keenetic ([инструкция](https://help.keenetic.com/hc/ru/articles/360021214160-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F-Entware-%D0%BD%D0%B0-USB-%D0%BD%D0%B0%D0%BA%D0%BE%D0%BF%D0%B8%D1%82%D0%B5%D0%BB%D1%8C)), для этого понадобится USB-накопитель, который будет постоянно вставлен в роутер
4. Также необходимо настроить второе (третье, четвёртое, ...) соединение, через которое вы хотите направить трафик попадающий под списки. Это может быть VPN-соединение или второй провайдер (multi-WAN).

## Установка

Expand Down

0 comments on commit d5753c4

Please sign in to comment.