Route: Add vlessRoute and some local things

pull/740/head
iambabyninja 2025-08-30 09:59:17 +05:00
parent 2b97e6340c
commit eb2937be69
1 changed files with 30 additions and 8 deletions

View File

@ -31,12 +31,6 @@
- Разрешенный IP-адрес используется только при выборе маршрута, в пересылаемых пакетах данных по-прежнему используется исходное доменное имя;
- `"IPOnDemand"`: если при сопоставлении встречается любое правило на основе IP-адреса, доменное имя немедленно разрешается в IP-адрес для сопоставления;
> `domainMatcher`: "hybrid" | "linear"
Алгоритм сопоставления доменных имен. Используются разные алгоритмы в зависимости от настройки. Этот параметр влияет на все `RuleObject`, для которых не указан отдельный алгоритм сопоставления.
- `"hybrid"`: используется новый алгоритм сопоставления доменных имен, который работает быстрее и занимает меньше места. Значение по умолчанию.
- `"linear"`: используется старый алгоритм сопоставления доменных имен.
> `rules`: \[[RuleObject](#ruleobject)\]
@ -62,9 +56,12 @@
"ip": ["0.0.0.0/8", "10.0.0.0/8", "fc00::/7", "fe80::/10", "geoip:cn"],
"port": "53,443,1000-2000",
"sourcePort": "53,443,1000-2000",
"localPort": "53,443,1000-2000",
"network": "tcp",
"source": ["10.0.0.1"],
"sourceIP": ["10.0.0.1"],
"localIP": ["192.168.0.25"],
"user": ["love@xray.com"],
"vlessRoute": "53,443,1000-2000",
"inboundTag": ["tag-vmess"],
"protocol": ["http", "tls", "quic", "bittorrent"],
"attrs": { ":method": "GET" },
@ -120,6 +117,10 @@
- `a`: a является положительным целым числом, меньшим 65536. Правило вступает в силу, если порт источника равен a.
- Смесь двух вышеуказанных форматов, разделенных запятой ",". Например: `"53,443,1000-2000"`.
> `localPort`number | string
Порт локального `inbound`, формат соответствует `port`/`sourcePort`. Может быть полезно, когда `inbound` прослушивает диапазон портов.
> `network`: "tcp" | "udp" | "tcp,udp"
Допустимые значения: "tcp", "udp" или "tcp,udp". Правило вступает в силу, если тип соединения соответствует указанному.
@ -128,16 +129,37 @@
Конечно, другие варианты, явно подходящие для маршрутизации любого трафика, такие как указание диапазона портов **1-65535** или IP-адресов **0.0.0.0/0 + ::/0**, также имеют аналогичное действие.
> `source`: \[string\]
> `sourceIP`: \[string\]
Массив, каждый элемент которого представляет собой диапазон IP-адресов. Возможные форматы: IP-адрес, CIDR, GeoIP и загрузка IP-адресов из файла. Правило вступает в силу, если какой-либо элемент соответствует IP-адресу источника.
Псевдоним: `source`
> `localIP`: \[string\]
Формат такой же, как и у других IP. Используется для указания IP-адреса, используемого локальным `inbound` (при прослушивании всех IP-адресов с помощью `0.0.0.0` разные фактические входящие IP будут приводить к разным `localIP`).
Не работает для `UDP` (отслеживание невозможно из-за его дейтаграммной природы), всегда будет виден IP-адрес, на котором ведется прослушивание (`listen`).
> `user`: \[string\]
Массив, каждый элемент которого является адресом электронной почты. Правило вступает в силу, если какой-либо элемент соответствует пользователю-источнику.
Аналогично доменному имени, также поддерживается сопоставление с помощью регулярных выражений, начинающихся с `regexp:`. (Также необходимо заменить `\` на `\\`, см. объяснение в разделе `domain`)
> `vlessRoute` number | string
Когда седьмой и восьмой байты в конце `UUID` для `vless inbound` равны `00`, `vless` позволяет заменить эти две позиции любыми байтами и использовать их в качестве данных `vlessRoute`. Это дает пользователю возможность настраивать часть серверной маршрутизации по своему усмотрению, не изменяя никаких внешних полей.
```
--------------↓↓↓↓------------------
xxxxxxxx-xxxx-0000-xxxx-xxxxxxxxxxxx
```
В конфигурации используются данные, закодированные в `big-endian` как `uint16` (если вы не понимаете, что это значит, просто рассматривайте эти четыре символа как шестнадцатеричное число и преобразуйте его в десятичное). Например, `0001→1`, `000e→14`, `38b2→14514`. Причина такого подхода в том, что синтаксис здесь аналогичен `port`, что позволяет гибко указывать множество диапазонов для маршрутизации, так же как и для портов.
**Tip:** Это не влияет на безопасность аутентификации в других случаях. Для любого валидного `UUID`, 13-й символ очевидно не может быть `0` (поскольку он хранит версию `UUID`). Использование функции `Xray` для преобразования произвольной строки в `UUID` также не приведет к такому результату, поскольку генерируется `UUID v5`. Даже в этом случае для аутентификации остаются 14 байт.
> `inboundTag`: \[string\]
Массив, каждый элемент которого является тегом. Правило вступает в силу, если какой-либо элемент соответствует тегу входящего протокола.