Вообще у вас IPIfNonMatch, то есть для всех назначений, которые не указаны явно в rules будет выполняться разрешение через xray dns. Но это не значит, что вообще всё будет разрешаться через него. Домены, которые явно в rules совпали, не будут разрешены, пойдут в direct “как есть“ и разрешаться будут уже через системный dns. А +local собственно означает, что запросы DNS игнорируют роутинг вообще и уходят сразу в direct, где он опять же должен пойти на системный dns, чтобы получить адрес.
Только теперь я вижу 2 похода за DNS (фактически один, второй - это cache hit). Полагаю если я хочу чтобы все неизвестное резолвилось дополнительно и проверялось по ip (IPIfNonMatch) - избежать двух обращений в dns мне не удастся?
Докучи еще вопрос по sing-box клиенту появился - можно ли на нем настроить аналогичную схему с двойной проверкой по рулам (сначала по геосайту(домену) и потом по geoip)? С ходу показалось что он так не умеет - если по домену рул отработал, то все.
Ты не там пишешь domainStrategy. Это специфичная для Freedom настройка (а не для любого Outbound), поэтому её (как и другие настройки Freedom: fragment, noises, пр.) надо писать внутри раздела settings: