From cad5b37c0fdf616ac18428b10a165ebd1ac01398 Mon Sep 17 00:00:00 2001 From: Meow <197331664+Meo597@users.noreply.github.com> Date: Thu, 16 Apr 2026 20:58:03 +0800 Subject: [PATCH] Geodata: Support reversed CIDR rules in IP rules --- docs/config/routing.md | 4 ++-- docs/en/config/routing.md | 2 +- docs/ru/config/routing.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/config/routing.md b/docs/config/routing.md index a436c2e4..80391716 100644 --- a/docs/config/routing.md +++ b/docs/config/routing.md @@ -104,11 +104,11 @@ 一个数组,数组内每一项代表一个 IP 范围。当某一项匹配目标 IP 时,此规则生效。有以下几种形式: - IP:形如 `"127.0.0.1"`。 -- [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing):形如 `"10.0.0.0/8"`,也可以用 `"0.0.0.0/0"` `"::/0"` 来指定所有 IPv4 或者 IPv6. +- [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing):形如 `"10.0.0.0/8"`,也可以用 `"0.0.0.0/0"` `"::/0"` 来指定所有 IPv4 或者 IPv6。 - 预定义 IP 列表:此列表预置于每一个 Xray 的安装包中,文件名为 `geoip.dat`。使用方式形如 `"geoip:cn"`,必须以 `geoip:`(小写)开头,后面跟双字符国家代码,支持几乎所有可以上网的国家。 - 特殊值:`"geoip:private"`,包含所有私有地址,如 `127.0.0.1`。 - - 反选 `!` 功能,`"geoip:!cn"` 表示非 geoip:cn 中的结果。多个反选项之间是 `AND` 关系,而正选项、正选项和所有的反选项之间是 `OR` 关系,例如 `ip: ["geoip:!cn", "geoip:!us", "geoip:telegram"]` 匹配非美国并且非中国的 IP,或者是 telegram 的 IP。 - 从文件中加载 IP:形如 `"ext:file:tag"`,必须以 `ext:`(小写)开头,后面跟文件名和标签,文件存放在 [资源目录](./features/env.md#资源文件路径) 中,文件格式与 `geoip.dat` 相同标签必须在文件中存在。 +- 反选 `!` 功能:`"!10.0.0.0/8"` 表示非 `10.0.0.0/8`,`"!geoip:cn"` 表示非 `geoip:cn` 中的结果。多个反选项之间是 `AND` 关系,而正选项、正选项和所有的反选项之间是 `OR` 关系,例如 `ip: ["geoip:!cn", "!geoip:us", "geoip:telegram"]` 匹配非美国并且非中国的 IP,或者是 telegram 的 IP。 > `port`:number | string diff --git a/docs/en/config/routing.md b/docs/en/config/routing.md index 1569c6a0..9a025d78 100644 --- a/docs/en/config/routing.md +++ b/docs/en/config/routing.md @@ -107,8 +107,8 @@ An array, where each item represents an IP range. The rule takes effect when an - **[CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)**: Like `"10.0.0.0/8"`. You can also use `"0.0.0.0/0"` or `"::/0"` to specify all IPv4 or IPv6. - **Predefined IP list**: This list is pre-installed in every Xray installation package, named `geoip.dat`. Usage is like `"geoip:cn"`. Must start with `geoip:` (lowercase), followed by a two-character country code. Supports almost all countries with internet access. - **Special value**: `"geoip:private"`, includes all private addresses, such as `127.0.0.1`. - - **Inverse selection `!`**: `"geoip:!cn"` means results not in geoip:cn. Multiple inverse options have an `AND` relationship, while positive options, or positive options and all inverse options, have an `OR` relationship. For example, `ip: ["geoip:!cn", "geoip:!us", "geoip:telegram"]` matches IPs that are not from the US AND not from China, OR are Telegram IPs. - **Load IPs from file**: In the form of `"ext:file:tag"`. Must start with `ext:` (lowercase), followed by filename and tag. The file is stored in the [Resource Directory](./features/env.md#resource-file-path). The file format is the same as `geoip.dat`, and the tag must exist in the file. +- **Inverse selection `!`**: `"!10.0.0.0/8"` means anything not in `10.0.0.0/8`, and `"!geoip:cn"` means results not in `geoip:cn`. Multiple inverse options have an `AND` relationship, while positive options, or positive options together with all inverse options, have an `OR` relationship. For example, `ip: ["geoip:!cn", "!geoip:us", "geoip:telegram"]` matches IPs that are not from the US AND not from China, OR are Telegram IPs. > `port`: number | string diff --git a/docs/ru/config/routing.md b/docs/ru/config/routing.md index c7ef5019..2b1ac05a 100644 --- a/docs/ru/config/routing.md +++ b/docs/ru/config/routing.md @@ -103,8 +103,8 @@ - [CIDR](https://ru.wikipedia.org/wiki/Бесклассовая_междоменная_маршрутизация): например, `"10.0.0.0/8"`, также можно использовать `"0.0.0.0/0"` `"::/0"` для указания всех IPv4- или IPv6-адресов. - Предопределенный список IP-адресов: этот список встроен в каждый установочный пакет Xray, имя файла - `geoip.dat`. Формат использования: `"geoip:код_страны"`, должно начинаться с `geoip:` (в нижнем регистре), за которым следует двухбуквенный код страны, поддерживаются почти все страны с доступом в Интернет. - Специальное значение: `"geoip:private"`, включает в себя все частные адреса, например, `127.0.0.1`. -- Функция инверсии `!`: `"geoip:!cn"` обозначает результаты, не входящие в `geoip:cn`. Несколько условий с отрицанием объединяются логическим **AND**, а положительные условия и совокупность всех отрицательных условий — логическим **OR**. Например, `ip: ["geoip:!cn", "geoip:!us", "geoip:telegram"]` соответствует IP, которые не относятся к США **И** не относятся к Китаю, **ИЛИ** являются IP Telegram. - Загрузка IP-адресов из файла: имеет вид `"ext:файл:тег"`, должно начинаться с `ext:` (в нижнем регистре), за которым следует имя файла и тег, файл хранится в [каталоге ресурсов](./features/env.md#путь-к-файлу-ресурсов), формат файла такой же, как у `geoip.dat`, тег должен существовать в файле. +- Функция инверсии `!`: `"!10.0.0.0/8"` обозначает всё, что не входит в `10.0.0.0/8`, а `"!geoip:cn"` — результаты, не входящие в `geoip:cn`. Несколько условий с отрицанием объединяются логическим **AND**, а положительные условия и совокупность всех отрицательных условий — логическим **OR**. Например, `ip: ["geoip:!cn", "!geoip:us", "geoip:telegram"]` соответствует IP, которые не относятся к США **И** не относятся к Китаю, **ИЛИ** являются IP Telegram. > `port`: number | string