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 9e87334 commit 760e86b
Showing 1 changed file with 84 additions and 88 deletions.
172 changes: 84 additions & 88 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,157 +22,153 @@ Telegram-чат проекта: https://t.me/keenetic_pbr
- Настраиваемые таблицы маршрутизации и приоритеты
- Автоматическая настройка для списков `dnsmasq`

## Установка (однострочная команда)
## Предварительная подготовка роутера
1. Работоспособность пакета проверялась на **Keenetic OS** версии **4.2.1**. Работоспособность на версии **3.x.x** возможна, но не гарантируется.
2. Необходимо установить дополнительные компоненты на ваш роутер в разделе Управление -> Параметры системы:
- **Сетевые функции / Протокол IPv6**
- Этот компонент необходим для возможности установки компонента "Модули ядра подсистемы Netfilter".
- **Пакеты OPKG / Поддержка открытых пакетов**
- **Пакеты OPKG / Модули ядра подсистемы Netfilter**
- **Пакеты 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-накопитель, который будет постоянно вставлен в роутер

Подключитесь к вашему EntWare через SSH и выполните следующую команду:
## Установка

### Автоматическая установка

Подключитесь к вашему OPKG по SSH и выполните следующую команду:

```bash
opkg install curl jq && curl -sOfL https://raw.githubusercontent.com/maksimkurb/keenetic-pbr/refs/heads/main/install.sh && sh install
```

## Установка (ручной метод)
### Ручная установка

1. Перейдите на страницу [релизов](https://github.com/maksimkurb/keenetic-pbr/releases) и скопируйте URL для последнего `.ipk` файла
для вашей архитектуры
для вашей архитектуры.

2. Скачайте `.ipk` файл на ваш маршрутизатор:
```bash
curl -LO <URL-to-latest-ipk-file-for-your-architecture>
```

3. **Установите его с помощью OPKG:**
3. Установите его с помощью OPKG:

```bash
opkg install keenetic-pbr-*-entware.ipk
```

Это установит Keenetic PBR и настроит его на вашем маршрутизаторе.
Во время установки пакет `keenetic-pbr` заменяет оригинальный файл конфигурации **dnsmasq**.
Резервная копия будет сохранена в `/opt/etc/dnsmasq.conf.orig`.

## Настройка

Установщик заменяет оригинальный файл конфигурации **dnsmasq**.
Резервная копия вашего оригинального файла сохраняется как `/opt/etc/dnsmasq.conf.orig`.

Отредактируйте конфигурацию в следующих файлах в соответствии с вашими потребностями:

- **Конфигурация Keenetic-PBR:** `/opt/etc/keenetic-pbr/keenetic-pbr.conf`
- **Конфигурация dnsmasq:** `/opt/etc/dnsmasq.conf`
- **(обязательно) Конфигурация keenetic-pbr:** `/opt/etc/keenetic-pbr/keenetic-pbr.conf`
- В данном файле вы должны настроить необходимые ipset, списки и выходные интерфейсы
- **(опционально) Конфигурация dnsmasq:** `/opt/etc/dnsmasq.conf`
- Данный файл можно перенастроить под свои нужды, например заменить upstream DNS сервер на свой

### 1. Редактирование `keenetic-pbr.conf`

Откройте `/opt/etc/keenetic-pbr/keenetic-pbr.conf` и отредактируйте его по мере необходимости.
Откройте `/opt/etc/keenetic-pbr/keenetic-pbr.conf` и отредактируйте его по мере необходимости:

Основное, что вы, вероятно, захотите изменить — это `interface` для маршрутизации.
1. Необходимо поправить поле `interface`, указав туда интерфейс, через который будет идти исходящий трафик, попавший под критерии списков.
2. Также необходимо добавить списки (локальный или удалённый по URL)

```ini
**Пример конфигурации:**
```toml
#---------------------#
# Общие настройки #
#---------------------#
[general]
# Путь к бинарному файлу `ipset`
ipset_path = "ipset"

# Выходной каталог для маршрутизационных списков
lists_output_dir = "/opt/etc/keenetic-pbr/lists.d"

# Загруженные списки будут сохранены в этом каталоге для dnsmasq
dnsmasq_lists_dir = "/opt/etc/dnsmasq.d"

# Если true, keenetic-pbr будет суммировать IP-адреса и CIDR перед применением к ipset
summarize = true

ipset_path = "ipset" # Путь к бинарному файлу `ipset`
lists_output_dir = "/opt/etc/keenetic-pbr/lists.d" # В эту папку будут скачиваться списки
dnsmasq_lists_dir = "/opt/etc/dnsmasq.d" # Загруженные списки будут сохранены в этом каталоге для dnsmasq
summarize = true # Если true, keenetic-pbr будет суммировать IP-адреса и CIDR перед применением к ipset

#-------------#
# IPSET 1 #
#-------------#
[[ipset]]
# Имя ipset
ipset_name = "vpn"

# Очищать ipset каждый раз перед его загрузкой
flush_before_applying = true
ipset_name = "vpn" # Название ipset
flush_before_applying = true # Очищать ipset каждый раз перед его заполнением

[ipset.routing]
# Целевой интерфейс для маршрутизации
interface = "nwg1"

# Этот fwmark будет применяться ко всем пакетам с IP-адресами из этого ipset
fwmark = 1001
interface = "nwg1" # Куда будет направляться трафик для IP, попавших в этот ipset
fwmark = 1001 # Этот fwmark будет применяться к пакетам, попавшим под критерии списков
table = 1001 # Номер таблицы маршрутизации (ip route table), туда будет добавляться default gateway на интерфейс, указанный выше
priority = 1001 # Приоритет правила маршрутизации (ip rule priority), чем число меньше, тем выше приоритет

# Номер таблицы маршрутизации для ip route
table = 1001

# Приоритет для ip rule
priority = 1001

# Списки для импорта в ipset/dnsmasq
# Список 1 (ручное перечисление адресов)
[[ipset.list]]
# Имя списка 1
name = "local"
# Список хостов списка 1
hosts = ["ifconfig.co", "myip2.ru", "1.2.3.4", "141.201.11.0/24"]

hosts = [
"ifconfig.co",
"myip2.ru",
"1.2.3.4",
"141.201.11.0/24",
]

# Список 2 (скачивание через URL)
[[ipset.list]]
# Имя списка 2
name = "list-name"
# URL списка 2 (файл должен содержать домены, IP адреса и CIDR, по одному на каждой строчке)
url = "https://some-url/list1.lst"

name = "remote-list-1"
url = "https://some-url/list1.lst" # Файл должен содержать домены, IP адреса и CIDR, по одному на каждой строчке

# Список 3 (скачивание через URL)
[[ipset.list]]
# Имя списка 3
name = "re-filter-ipsum"
# URL списка 3 (файл должен содержать домены, IP адреса и CIDR, по одному на каждой строчке)
name = "remote-list-2"
url = "https://some-url/list2.lst"

# Вы можете добавлять столько ipset, сколько хотите:

# [[ipset]]
# ipset_name = "direct"
# flush_before_applying = true
#
# [ipset.routing]
# interface = "ppp0"
# fwmark = 998
# table = 998
# priority = 998
#
# [[ipset.list]]
# name = "list-name"
# url = "https://some-url/list1.lst"
#
# [[ipset.list]]
# name = "re-filter-ipsum"
# url = "https://some-url/list2.lst"
#
# [[ipset]]
# ipset_name = "direct"
# ...
#
# [ipset.routing]
# ...
#
# [[ipset.list]]
# ...
```

### 2. Скачивание списков
### 2. Скачивание и обработка списков

После редактирования конфигурационного файла скачайте файлы списков
После редактирования конфигурационного файла введите данную команду, чтобы скачать файлы списков:

```bash
keenetic-pbr download
```

### 3. Включение DNS-override
> [!IMPORTANT]
> Эту команду необходимо запустить даже в том случае, если все списки являются локальными. Данная команда экспортирует все списки из настроек в папку `lists.d`.
### 3. Включение DNS Override

Для того, чтобы Keenetic использовал `dnsmasq` в качестве DNS-сервера, необходимо включить DNS-Override.

> [!NOTE]
> Данный этап не нужен, если ваши списки содержат только IP-адреса и CIDR и не указывают доменных имён.

1. Откройте следующий URL в браузере:
```
http://<router-ip-address>/a
```
2. Введите следующие команды:
1. `opkg dns-override`
2. `system configuration save`
2. Введите следующие команды по очереди:
- `opkg dns-override`
- `system configuration save`

> [!TIP]
> Если вы решите отключить DNS-Override в будущем, выполните команды `no opkg dns-override` и `system configuration save`.
### 4. Перезапуск OPKG и проверка работы маршрутизации

Перезапустите OPKG и убедитесь, что маршрутизация на основе политики работает должным образом.

Для этого откройте адрес, которого нет в ваших списках (напр. https://2ip.ru) и адрес, который есть в ваших списках (напр. https://ifconfig.co) и сравните IP-адреса, они должны быть разными.

## Обновление списков
Списки обновляются ежедневно автоматически с помощью cron.

Вы можете обновить списки вручную, выполнив следующие команды:
Списки обновляются автоматически ежедневно с помощью `cron`.

В случае, если вы редактировали настройки `keenetic-pbr.conf` и хотите обновить списки вручную, выполните следующие команды по SSH:

```bash
keenetic-pbr download
Expand Down

0 comments on commit 760e86b

Please sign in to comment.