mirror of
https://github.com/remnawave/panel.git
synced 2026-04-18 12:23:53 +00:00
docs: enhance node plugins documentation
This commit is contained in:
@@ -21,7 +21,7 @@ title: Node Plugins β
|
||||
|
||||
<img src={require('/node-plugins/plugins-preview.webp').default} width="100%" style={{borderRadius: '8px'}} alt="Node Plugins" />
|
||||
|
||||
## Требования
|
||||
## Требования {#requirements}
|
||||
|
||||
Для корректной работы плагинов в обязательном порядке требуется добавить директиву `cap_add: NET_ADMIN` в конфигурацию Remnawave Node.
|
||||
|
||||
@@ -46,12 +46,24 @@ services:
|
||||
- SECRET_KEY=<SECRET_KEY>
|
||||
```
|
||||
|
||||
Так же вы должны убедиться, что на хостовой машине доступен `nftables`. Впрочем, он уже установлен по умолчанию на большинстве дистрибутивов.
|
||||
#### nftables {#nftables}
|
||||
|
||||
Убедитесь, что на хостовой машине доступен `nftables`. На большинстве современных дистрибутивов он уже установлен по умолчанию.
|
||||
|
||||
```bash title="Проверка версии nftables"
|
||||
nft --version
|
||||
```
|
||||
|
||||
#### Linux-ядро {#linux-kernel-version}
|
||||
|
||||
Требуется версия ядра **5.17** или выше.
|
||||
|
||||
```bash title="Проверка версии ядра"
|
||||
uname -r
|
||||
```
|
||||
|
||||
> **Примечание:** если версия ядра ниже 5.17, плагин работать не будет. Обновите ядро или обратитесь к документации вашего дистрибутива.
|
||||
|
||||
:::danger
|
||||
|
||||
Отнеситесь к настройке плагинов с осторожностью, плагины Torrent Blocker и Blacklist будут работать напрямую с фаерволом на вашем сервере.
|
||||
@@ -63,49 +75,133 @@ nft --version
|
||||
|
||||
```nftables title="nftables"
|
||||
table ip remnanode {
|
||||
counter processed {
|
||||
packets 53172 bytes 7154272
|
||||
}
|
||||
|
||||
counter blacklist {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
counter torrent-blocker {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
counter egress-filter-ip {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
counter egress-filter-port {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
set blacklist {
|
||||
type ipv4_addr
|
||||
flags timeout
|
||||
counter
|
||||
}
|
||||
|
||||
set torrent-blocker {
|
||||
type ipv4_addr
|
||||
flags timeout
|
||||
counter
|
||||
}
|
||||
|
||||
set egress-filter-ip {
|
||||
type ipv4_addr
|
||||
flags timeout
|
||||
counter
|
||||
}
|
||||
|
||||
set egress-filter-port {
|
||||
type inet_proto . inet_service
|
||||
flags timeout
|
||||
counter
|
||||
}
|
||||
|
||||
chain input {
|
||||
type filter hook input priority filter - 10; policy accept;
|
||||
ip saddr @blacklist log prefix "blacklist: " drop
|
||||
ip saddr @torrent-blocker log prefix "torrent-blocker: " drop
|
||||
counter name "processed"
|
||||
ip saddr @blacklist log prefix "blacklist: " counter name "blacklist" drop
|
||||
ip saddr @torrent-blocker log prefix "torrent-blocker: " counter name "torrent-blocker" drop
|
||||
}
|
||||
|
||||
chain forward {
|
||||
type filter hook forward priority filter - 10; policy accept;
|
||||
ip saddr @blacklist log prefix "blacklist: " drop
|
||||
ip saddr @torrent-blocker log prefix "torrent-blocker: " drop
|
||||
counter name "processed"
|
||||
ip saddr @blacklist log prefix "blacklist: " counter name "blacklist" drop
|
||||
ip saddr @torrent-blocker log prefix "torrent-blocker: " counter name "torrent-blocker" drop
|
||||
}
|
||||
|
||||
chain output {
|
||||
type filter hook output priority filter - 10; policy accept;
|
||||
ip daddr @egress-filter-ip counter name "egress-filter-ip" drop
|
||||
meta l4proto . th dport @egress-filter-port counter name "egress-filter-port" drop
|
||||
}
|
||||
}
|
||||
table ip6 remnanode6 {
|
||||
counter processed {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
counter blacklist6 {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
counter torrent-blocker6 {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
counter egress-filter-ip6 {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
counter egress-filter-port6 {
|
||||
packets 0 bytes 0
|
||||
}
|
||||
|
||||
set blacklist6 {
|
||||
type ipv6_addr
|
||||
flags timeout
|
||||
counter
|
||||
}
|
||||
|
||||
set torrent-blocker6 {
|
||||
type ipv6_addr
|
||||
flags timeout
|
||||
counter
|
||||
}
|
||||
|
||||
set egress-filter-ip6 {
|
||||
type ipv6_addr
|
||||
flags timeout
|
||||
counter
|
||||
}
|
||||
|
||||
set egress-filter-port6 {
|
||||
type inet_proto . inet_service
|
||||
flags timeout
|
||||
counter
|
||||
}
|
||||
|
||||
chain input {
|
||||
type filter hook input priority filter - 10; policy accept;
|
||||
ip6 saddr @blacklist6 log prefix "blacklist: " drop
|
||||
ip6 saddr @torrent-blocker6 log prefix "torrent-blocker: " drop
|
||||
counter name "processed"
|
||||
ip6 saddr @blacklist6 log prefix "blacklist: " counter name "blacklist6" drop
|
||||
ip6 saddr @torrent-blocker6 log prefix "torrent-blocker: " counter name "torrent-blocker6" drop
|
||||
}
|
||||
|
||||
chain forward {
|
||||
type filter hook forward priority filter - 10; policy accept;
|
||||
ip6 saddr @blacklist6 log prefix "blacklist: " drop
|
||||
ip6 saddr @torrent-blocker6 log prefix "torrent-blocker: " drop
|
||||
counter name "processed"
|
||||
ip6 saddr @blacklist6 log prefix "blacklist: " counter name "blacklist6" drop
|
||||
ip6 saddr @torrent-blocker6 log prefix "torrent-blocker: " counter name "torrent-blocker6" drop
|
||||
}
|
||||
|
||||
chain output {
|
||||
type filter hook output priority filter - 10; policy accept;
|
||||
ip6 daddr @egress-filter-ip6 counter name "egress-filter-ip6" drop
|
||||
meta l4proto . th dport @egress-filter-port6 counter name "egress-filter-port6" drop
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +209,7 @@ table ip6 remnanode6 {
|
||||
|
||||
</details>
|
||||
|
||||
## Структура конфигурации
|
||||
## Структура конфигурации {#configuration-structure}
|
||||
|
||||
<img src={require('/node-plugins/configuration.webp').default} width="100%" style={{borderRadius: '8px'}} alt="Node Plugins" />
|
||||
|
||||
@@ -135,6 +231,11 @@ table ip6 remnanode6 {
|
||||
"enabled": false,
|
||||
"whitelistIps": []
|
||||
},
|
||||
"egressFilter": {
|
||||
"enabled": false,
|
||||
"blockedIps": [],
|
||||
"blockedPorts": []
|
||||
},
|
||||
"sharedLists": []
|
||||
}
|
||||
```
|
||||
@@ -145,7 +246,7 @@ table ip6 remnanode6 {
|
||||
|
||||
:::
|
||||
|
||||
## Torrent Blocker
|
||||
## Torrent Blocker {#torrent-blocker}
|
||||
|
||||
:::danger
|
||||
|
||||
@@ -155,7 +256,7 @@ table ip6 remnanode6 {
|
||||
|
||||
Torrent Blocker – это плагин, который блокирует IP-адрес, с которого был обнаружен Torrent-трафик.
|
||||
|
||||
### Конфигурация
|
||||
### Конфигурация {#torrent-blocker-configuration}
|
||||
|
||||
```json
|
||||
"torrentBlocker": {
|
||||
@@ -186,7 +287,7 @@ Torrent Blocker – это плагин, который блокирует IP-а
|
||||
| `ip` | array | Список IP-адресов, которые будут игнорироваться плагином. Можно использовать списки из конфигурации Shared Lists. |
|
||||
| `userId` | array | Список ID пользователей, которые будут игнорироваться плагином |
|
||||
|
||||
### Техническая информация
|
||||
### Техническая информация {#technical-information}
|
||||
|
||||
Плагин использует одно из нововведений в Xray-Core – `webhook` (PR: [#5722](https://github.com/XTLS/Xray-core/pull/5722)). Поэтому для работы плагина необходима версия Xray-Core **??.??.??** или выше.
|
||||
|
||||
@@ -252,7 +353,7 @@ Torrent Blocker – это плагин, который блокирует IP-а
|
||||
|
||||
</details>
|
||||
|
||||
### Принцип работы
|
||||
### Принцип работы {#principle-of-operation}
|
||||
|
||||
В рамках Xray-Core **невозможно** полностью блокировать Torrent-трафик. Xray-Core способен отслеживать только ~10-30% torrent-трафика, поэтому под "блокировкой" имеется в виду то, что после изначального обнаружения хотя бы одного `пакета` – IP-адрес, с которого пришел этот пакет, будет заблокирован на время, указанное в конфигурации.
|
||||
|
||||
@@ -318,11 +419,11 @@ Torrent Blocker – это плагин, который блокирует IP-а
|
||||
|
||||
</details>
|
||||
|
||||
## Blacklist
|
||||
## Blacklist {#blacklist}
|
||||
|
||||
Blacklist – это плагин, который перманентно блокирует IP-адрес, который находится в списке.
|
||||
Blacklist – это плагин, который перманентно блокирует IP-адрес, который находится в списке. **Blacklist фильтрует входящий (ingress) трафик**.
|
||||
|
||||
### Конфигурация
|
||||
### Конфигурация {#blacklist-configuration}
|
||||
|
||||
```json
|
||||
"blacklist": {
|
||||
@@ -336,7 +437,7 @@ Blacklist – это плагин, который перманентно бло
|
||||
| `enabled` | boolean | Включает или выключает плагин, по умолчанию выключен |
|
||||
| `ip` | array | Список IP-адресов, которые будут заблокированы плагином. Можно использовать списки из конфигурации Shared Lists. |
|
||||
|
||||
### Принцип работы
|
||||
### Принцип работы {#blacklist-about}
|
||||
|
||||
IP-адреса, указанные в списке – будут заблокированы в `nftables`.
|
||||
|
||||
@@ -346,7 +447,7 @@ Blacklist – это очень опасный инструмент. Будьт
|
||||
|
||||
:::
|
||||
|
||||
## Connection Drop
|
||||
## Connection Drop {#connection-drop}
|
||||
|
||||
Connection Drop – это не полноценный плагин, а небольшая надстройка для того, чтобы была возможность добавлять IP-адреса в whitelist для функционала Connection Drop.
|
||||
|
||||
@@ -360,7 +461,7 @@ Connection Drop – это не полноценный плагин, а небо
|
||||
|
||||
:::
|
||||
|
||||
### Конфигурация
|
||||
### Конфигурация {#connection-drop-configuration}
|
||||
|
||||
```json
|
||||
"connectionDrop": {
|
||||
@@ -374,11 +475,32 @@ Connection Drop – это не полноценный плагин, а небо
|
||||
| `enabled` | boolean | Включает или выключает плагин, по умолчанию выключен |
|
||||
| `whitelistIps` | array | Список IP-адресов, которые будут добавлены в whitelist для функционала Connection Drop. |
|
||||
|
||||
## Shared Lists
|
||||
## Egress Filter {#egress-filter}
|
||||
|
||||
Egress Filter — плагин для блокировки **исходящего** трафика. Позволяет запретить подключения к определённым IP-адресам или портам на стороне назначения.
|
||||
Например, можно заблокировать доступ к конкретным IP-адресам внутренних _(например, 10.0.0.1, 10.0.0.2)_ или внешних сервисов _(например, 8.8.8.8, 8.8.4.4)_ или закрыть нежелательные порты _(например, 25, 465, 587)_.
|
||||
|
||||
### Конфигурация {#egress-filter-configuration}
|
||||
|
||||
```json
|
||||
"egressFilter": {
|
||||
"blockedIps": [],
|
||||
"blockedPorts": [],
|
||||
"enabled": false
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Type | Description |
|
||||
| -------------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
|
||||
| `blockedIps` | array | Список IP-адресов, которые будут заблокированы плагином. Можно использовать списки из конфигурации Shared Lists. |
|
||||
| `blockedPorts` | array | Список портов, которые будут заблокированы плагином. |
|
||||
| `enabled` | boolean | Включает или выключает плагин, по умолчанию выключен |
|
||||
|
||||
## Shared Lists {#shared-lists}
|
||||
|
||||
Shared Lists – это список IP-адресов, которые могут быть использованы в других плагинах.
|
||||
|
||||
### Конфигурация
|
||||
### Конфигурация {#shared-lists-configuration}
|
||||
|
||||
```json
|
||||
"sharedLists": [
|
||||
@@ -408,7 +530,7 @@ Shared Lists – это список IP-адресов, которые могу
|
||||
}
|
||||
```
|
||||
|
||||
## Executor
|
||||
## Executor {#executor}
|
||||
|
||||
<img src={require('/node-plugins/executor.webp').default} width="100%" style={{borderRadius: '8px'}} alt="Executor" />
|
||||
|
||||
@@ -418,7 +540,7 @@ Shared Lists – это список IP-адресов, которые могу
|
||||
Для его работы **необязательно** иметь включенные плагины, однако директива `cap_add: NET_ADMIN` должна быть **обязательно** включена.
|
||||
:::
|
||||
|
||||
### Block IPs
|
||||
### Block IPs {#block-ips}
|
||||
|
||||
<img src={require('/node-plugins/executor-ip-block.webp').default} width="100%" style={{borderRadius: '8px'}} alt="Node Plugins" />
|
||||
|
||||
@@ -430,12 +552,12 @@ Shared Lists – это список IP-адресов, которые могу
|
||||
|
||||
:::
|
||||
|
||||
### Unblock IPs
|
||||
### Unblock IPs {#unblock-ips}
|
||||
|
||||
<img src={require('/node-plugins/executor-ip-unblock.webp').default} width="100%" style={{borderRadius: '8px'}} alt="Node Plugins" />
|
||||
|
||||
Команда предназначена для **снятия блокировки IP-адресов**. При ее выполнении – будет отправлен запрос на снятие IP-адреса из таблицы `nftables`.
|
||||
|
||||
### Reset nftables
|
||||
### Reset nftables {#reset-nftables}
|
||||
|
||||
Команда предназначена для **сброса таблицы `nftables`**. При ее выполнении – будет отправлен запрос на пересоздание таблицы `nftables`.
|
||||
|
||||
Reference in New Issue
Block a user