Три корзины: Direct, Proxy, Block
В документации Happ маршрутизация описана через три категории, и каждый адрес попадает ровно в одну из них.
Direct означает «идти напрямую, мимо туннеля». Сюда кладут то, что должно видеть ваш настоящий адрес: местные сайты, банки, государственные сервисы. Proxy означает «идти через туннель». Block означает «не пускать вообще»: соединение обрывается на месте, в эту категорию складывают рекламные и трекерные адреса.
Правила пишутся не списками сайтов, а ссылками на готовые наборы. Запись вида geosite с названием страны означает весь набор её сайтов, geoip с названием сервиса означает диапазоны его адресов. Один такой набор заменяет тысячи строк.
Про то, зачем это нужно с точки зрения пользы, написано в материале про умную маршрутизацию. Здесь разбирается устройство самого механизма.
Что делает globalProxy
Отдельный параметр включает режим, в котором весь трафик идёт через соединение без разбора.
Это выключатель для всей описанной выше логики. Пока он выключен, работают три категории. Когда включён, разделение перестаёт иметь значение, и наружу через туннель уходит всё подряд.
Выбор здесь не про удобство, а про задачу. Если вам важно, чтобы ни один запрос не ушёл мимо туннеля, глобальный режим её решает. Если важно, чтобы местные сервисы работали быстро и видели ваш настоящий адрес, он всё ломает: банк получит запрос из другой страны, сайт доставки покажет чужой город, а местное видео пойдёт через полмира.
Почему domainStrategy по умолчанию IPIfNonMatch
У правил есть стратегия разрешения доменов, и по умолчанию она стоит в значении IPIfNonMatch. Название выглядит техническим, а поведение за ним простое.
Сначала адрес проверяется по имени домена. Если имя совпало с каким-то правилом, решение принято, и дальше ничего не нужно. Если ни одно правило по имени не подошло, имя разрешается в адрес, и проверка идёт по нему.
Это компромисс между скоростью и точностью. Проверка по имени бесплатна, проверка по адресу требует запроса к серверу имён. Стратегия по умолчанию делает второй шаг только тогда, когда первого не хватило. Побочный эффект: часть решений о маршруте зависит от того, что вернул резолвер, а это связывает маршрутизацию с DNS, устройство которого разобрано в материале про настройку DNS в Happ.
Гео-файлы обновляются не чаще раза в неделю
Наборы адресов живут в отдельных файлах, которые клиент скачивает и хранит на диске. В документации указан их предел обновления: не чаще одного раза в неделю, даже если сам профиль обновляется каждый час.
Ограничение сделано намеренно. Эти файлы весят немало, меняются медленно, и качать их каждый час бессмысленно. Но у него есть следствие, которое стоит знать: адрес, появившийся в наборе вчера, может доехать до вашего клиента только через несколько дней.
Отсюда понятное объяснение странности, которую иногда описывают: правило вроде правильное, а конкретный сайт всё равно идёт не туда. Если набор у вас недельной давности, он просто ещё не знает про этот адрес.
Если файл повредился при загрузке, поведение будет другим: клиент выдаст ошибку, и этот случай разобран в материале про ошибку гео-файлов.
Когда правила начинают противоречить друг другу, сброс настроек клиента возвращает категории к исходному состоянию.