Модуль маршрутизации позволяет направлять входящие данные через разные исходящие подключения в соответствии с различными правилами, что позволяет реализовать проксирование по требованию.
Например, распространенным сценарием использования является разделение трафика на внутренний и внешний.
Xray может определять трафик из разных регионов с помощью внутренних механизмов и отправлять его через разные исходящие подключения.
-`"AsIs"`: использовать только доменные имена для выбора маршрута.
Значение по умолчанию.
-`"IPIfNonMatch"`: если доменное имя не соответствует ни одному правилу, разрешить доменное имя в IP-адрес (запись A или AAAA) и снова выполнить сопоставление.
- Если у домена есть несколько записей A, Xray попытается сопоставить все записи A, пока одна из них не совпадет с каким-либо правилом.
- Разрешенный IP-адрес используется только для выбора маршрута, в пересылаемых пакетах данных по-прежнему используется исходное доменное имя.
-`"IPOnDemand"`: при сопоставлении с любым правилом, основанным на IP-адресе, доменное имя немедленно разрешается в IP-адрес для сопоставления.
> `domainMatcher`: "hybrid" | "linear"
Алгоритм сопоставления доменных имен.
Этот параметр влияет на все `RuleObject`, для которых не указан алгоритм сопоставления.
-`"hybrid"`: использовать новый алгоритм сопоставления доменных имен, который работает быстрее и занимает меньше памяти.
Значение по умолчанию.
-`"linear"`: использовать старый алгоритм сопоставления доменных имен.
> `rules`: \[[RuleObject](#ruleobject)\]
Массив, каждый элемент которого представляет собой правило.
Для каждого соединения маршрутизатор проверяет правила сверху вниз.
Когда встречается первое подходящее правило, соединение перенаправляется на исходящее подключение, указанное в его`outboundTag` или `balancerTag`.
::: tip
Если ни одно правило не подходит, трафик отправляется через первое исходящее подключение по умолчанию.
Массив, каждый элемент которого представляет собой конфигурацию балансировщика нагрузки.
Если правило указывает на балансировщик нагрузки, Xray выбирает исходящее подключение через этот балансировщик нагрузки и перенаправляет трафик через него.
Это необязательный параметр. Формат настройки зависит от стратегии балансировки нагрузки.
В настоящее время этот параметр можно использовать только со стратегией `leastLoad`.
### Пример конфигурации балансировщика нагрузки
```json
"routing": {
"rules": [
{
"inboundTag": [
"in"
],
"balancerTag": "round"
}
],
"balancers" : [
{
"selector": [
"out"
],
"strategy": {
"type":"roundRobin"
},
"tag": "round"
}
]
}
"inbounds": [
{
// Настройки входящего подключения
"tag": "in"
}
]
"outbounds": [
{
// Настройки исходящего подключения
"tag": "out1"
},
{
// Настройки исходящего подключения
"tag": "out2"
}
]
```
### Предопределенные списки доменов
Этот список включен в каждый установочный пакет Xray и называется `geosite.dat`.
Этот файл содержит некоторые распространенные доменные имена.
Формат использования: `geosite:filename`, например `geosite:google` означает сопоставление с доменными именами, указанными в файле в разделе `google`, для маршрутизации или фильтрации DNS.
Распространенные доменные имена:
-`category-ads`: содержит доменные имена распространенных рекламных сервисов.
-`category-ads-all`: содержит доменные имена распространенных рекламных сервисов, а также доменные имена поставщиков рекламы.
-`cn`: эквивалентно объединению `geolocation-cn` и `tld-cn`.
-`apple`: содержит большинство доменных имен Apple.
-`google`: содержит большинство доменных имен Google.
-`microsoft`: содержит большинство доменных имен Microsoft.
-`facebook`: содержит большинство доменных имен Facebook.
-`twitter`: содержит большинство доменных имен Twitter.
-`telegram`: содержит большинство доменных имен Telegram.
-`geolocation-cn`: содержит доменные имена распространенных сайтов, расположенных в Китае.
-`tld-!cn`: содержит доменные имена верхнего уровня, не используемые в Китае, например, домены, оканчивающиеся на `.tw` (Тайвань), `.jp` (Япония), `.sg` (Сингапур), `.us` (США), `.ca` (Канада) и т.д.