Синтаксис правил маршрутизации
Короткий справочник для тех, кто правит конфиги руками. В конструкторе всё это подставляется само.
Как записать сайт
В Xray (и в Happ, который работает на Xray) условие по сайту — это строка с префиксом. Главная ловушка: строка без префикса означает не «этот сайт», а «адрес содержит эту строку».
| Запись | Что значит | Совпадёт | Не совпадёт |
|---|---|---|---|
domain:example.com | сам сайт и все поддомены | example.com, www.example.com, a.b.example.com | notexample.com |
full:example.com | только этот адрес | example.com | www.example.com |
example (без префикса) | адрес содержит строку | example.com, myexample.net | exam.com |
regexp:\.example\.(com|net)$ | регулярное выражение | a.example.com, b.example.net | example.org |
geosite:youtube | готовый список сайтов | youtube.com, googlevideo.com, ytimg.com… | — |
ext:file.dat:tag | список из своего файла | зависит от файла | — |
Регулярные выражения проверяются на каждый запрос, поэтому медленнее остальных. Если можно обойтись domain:, лучше обойтись.
IP-адреса
1.2.3.4— один адрес,10.0.0.0/8— диапазон (CIDR).geoip:ru— все адреса страны,geoip:private— домашние сети (192.168.x.x, 10.x.x.x).geoip:!ru— всё, кроме адресов страны.
domainStrategy: когда сверять IP
- AsIs — только по именам сайтов. Быстро, но правила по IP не сработают для сайтов, открытых по имени.
- IPIfNonMatch — сначала по именам; если ни одно правило не подошло, узнать IP и проверить IP-правила. Рекомендуется почти всегда.
- IPOnDemand — узнавать IP сразу, при первом IP-правиле. Точнее, но медленнее и больше DNS-запросов.
Порядок правил
Правила проверяются сверху вниз, срабатывает первое подходящее. Поэтому частные правила ставят выше общих: «mail.google.com напрямую» должно стоять выше, чем «google.com через VPN». Правило «всё остальное» — всегда последнее.
В Happ правила проверяются не по одному, а группами: все «блок», все «через VPN», все «напрямую» — в порядке, заданном в RouteOrder. Конструктор подбирает этот порядок так, чтобы как можно меньше нарушить ваш, и предупреждает, если что-то сдвинулось.
Что такое geosite и geoip
Это готовые списки сайтов и IP-адресов, которые приложение скачивает файлами geosite.dat и geoip.dat. Самые полные — от v2fly и Loyalsoldier. Если в правиле указана категория, которой нет в файле, приложение не запустится — конструктор проверяет это заранее. Состав всех категорий — в разделе категории geosite.