Happ VPN

domainStrategy: что это

Автор
Екатерина Лебедева, редактор раздела knowledge base
Проверил:
Артём Волков
Проверено:
Опубликовано:
, обновлено
Версия гайда:
1.0

Коротко

domainStrategy — параметр профиля маршрутизации Happ, который определяет, резолвит ли Xray домен в IP-адрес до проверки правил маршрутизации, после неё или не резолвит вовсе. Значение по умолчанию — IPIfNonMatch.

domainStrategy управляет тем, в какой момент Xray-core превращает доменное имя в IP-адрес при проверке правил маршрутизации. Значение AsIs вообще не резолвит домен на этапе маршрутизации и передаёт его дальше как есть. IPIfNonMatch сначала проверяет правила по домену и только при отсутствии совпадения делает DNS-запрос и проверяет ещё раз, уже по IP. IPOnDemand резолвит домен в IP сразу, ещё до проверки любых правил. В профиле маршрутизации Happ по умолчанию используется IPIfNonMatch — этот параметр напрямую влияет на то, сработают ли правила по GeoIP для конкретного запроса.

domainStrategy — параметр профиля маршрутизации, который задаёт, в какой момент Xray-core резолвит доменное имя в IP-адрес при проверке правил: до, после или совсем без резолвинга на этом этапе.

Суть domainStrategy

Когда правило маршрутизации написано по IP-адресу, Xray-core должен сначала узнать, какой IP стоит за доменным именем в запросе, — а для этого нужен DNS-запрос. Но правило по доменному имени такого запроса не требует вовсе. domainStrategy решает, в каком порядке всё это происходит.

Формально это одно поле профиля маршрутизации, но от него зависит, насколько активно в маршрутизации вообще участвуют правила по IP и коды GeoIP: при одних значениях домен резолвится всегда, при других — только иногда, а при третьих не резолвится для маршрутизации вовсе.

Документация Happ приводит domainStrategy как часть примера профиля по умолчанию со значением IPIfNonMatch, а в продвинутых параметрах маршрутизации перечисляет все три допустимых значения этого поля.

Как это выглядит в Happ

Три значения domainStrategy по-разному расставляют момент резолвинга домена относительно проверки правил:

ЗначениеКогда резолвится доменОсобенность
AsIsНикогда на этапе маршрутизацииДомен передаётся дальше как есть, IP-правила не участвуют
IPIfNonMatchТолько если правило по домену не нашлосьЗначение по умолчанию в профиле Happ
IPOnDemandВсегда, до проверки любых правилБольше DNS-запросов, но IP-правила проверяются для каждого соединения

Разница особенно заметна, если в одном профиле сочетаются правила GeoSite по доменам и GeoIP по адресам. При IPIfNonMatch домен сначала пытаются сопоставить с категориями geosite, и лишь при неудаче включается резолвинг для проверки по geoip. При AsIs до этой второй проверки дело просто не доходит.

Пример в профиле маршрутизации

Так параметр выглядит в составе профиля — условный пример с явно заданным значением:

JSON
{
  "DomainStrategy": "IPIfNonMatch",
  "ProxySites": ["geosite:google"],
  "ProxyIp": ["geoip:amazon"]
}

С таким набором правил запрос к домену из категории geosite:google будет пойман ещё на этапе проверки по имени, а резолвинг в IP для сравнения с geoip:amazon произойдёт только для доменов, не попавших ни в одну категорию по имени.

Чем domainStrategy отличается от похожих терминов

domainStrategy стоит рядом с другими настройками DNS и маршрутизации, но отвечает за более узкую задачу — момент резолвинга.

ТерминЗа что отвечаетОтличие от domainStrategy
Удалённый DNSКаким сервером резолвить домены, идущие через проксиНе решает, когда именно происходит резолвинг ради маршрутизации
Локальный DNSКаким сервером резолвить домены, идущие напрямуюТоже относится к самому резолвингу, а не к его месту в проверке правил
GeoIPГруппы IP-адресов для правилРаботает только тогда, когда domainStrategy вообще позволяет резолвинг
Профиль маршрутизацииВсе правила целикомdomainStrategy — одно из его полей, а не отдельная сущность

Как настроить DNS-параметры профиля целиком, включая RemoteDNS и DomesticDNS, разобрано на странице DNS в Happ.

Главное

  • domainStrategy — один из параметров профиля маршрутизации Happ, а не отдельная настройка сети или DNS.
  • Значение по умолчанию в профиле Happ — IPIfNonMatch: сначала проверка по домену, резолвинг в IP только если правило по домену не найдено.
  • AsIs не резолвит домен на этапе маршрутизации вовсе и передаёт его следующему этапу как есть, без DNS-запроса ради проверки правил.
  • IPOnDemand всегда резолвит домен в IP-адрес перед проверкой любых правил, что означает дополнительный DNS-запрос для каждого нового соединения.
  • От значения domainStrategy зависит, дойдёт ли вообще очередь до правил GeoIP, — они работают с IP-адресами, а не с доменными именами.

Частые вопросы

Какое значение domainStrategy стоит по умолчанию в Happ?

В примере профиля по умолчанию из документации Happ указано значение IPIfNonMatch. Это компромиссный вариант: Xray сначала проверяет, подходит ли запрос под правило по доменному имени, и только если подходящего правила нет, делает DNS-запрос и повторно проверяет правила уже по полученному IP-адресу.

Чем AsIs отличается от IPIfNonMatch?

При AsIs Xray вообще не пытается резолвить домен на этапе маршрутизации — доменное имя передаётся следующему этапу как есть, без дополнительного DNS-запроса ради проверки правил. При IPIfNonMatch резолвинг всё же может произойти, но только как второй шаг, если правило по самому домену не нашлось. AsIs экономит DNS-запросы, но делает недоступными правила, завязанные только на IP-адрес.

Зачем нужен IPOnDemand, если он делает больше DNS-запросов?

IPOnDemand полезен, когда правила маршрутизации в основном построены на IP-адресах и кодах GeoIP, а не на доменных именах, и точность важнее числа DNS-запросов. Резолвинг домена в IP происходит сразу, ещё до проверки любых правил, поэтому IP-правила точно получают шанс сработать для каждого запроса, в отличие от AsIs.

Как domainStrategy влияет на правила по GeoIP и GeoSite?

Правила GeoSite проверяются по доменному имени и не зависят от domainStrategy. А правила GeoIP работают только с IP-адресами, поэтому при значении AsIs, когда резолвинга на этапе маршрутизации нет, такие правила фактически не успевают сработать для домена — до сравнения по IP просто не доходит очередь.

Можно ли задать domainStrategy отдельно для разных подписок?

Да: domainStrategy — это поле профиля маршрутизации, а у каждой подписки в Happ свой независимый набор профилей. Значит, для одной подписки можно оставить IPIfNonMatch по умолчанию, а для другой, где важна точность IP-правил, задать IPOnDemand в её собственном профиле.

Нужно ли менять domainStrategy обычному пользователю Happ?

Обычно нет: значение по умолчанию IPIfNonMatch — это сбалансированный вариант, который подходит большинству профилей со смешанными правилами по доменам и адресам. Менять его имеет смысл, если профиль маршрутизации целиком построен на кодах GeoIP или если нужно снизить число DNS-запросов, и тогда за этим параметром обычно следит провайдер, который составляет профиль.

Упомянутые темы

Разделы по теме

Источники

  1. Документация Happ: геонастройки и маршрутизация — обращение 28 сентября 2026