Передача сета
Сет можно передать на другую установку b4 в виде общего сета: одного JSON-документа, который содержит стратегию, цели и файлы payload, которые сет использует, и ничего из привязанного к роутеру, откуда он взят. Редактор сета готовит его во вкладке Импорт/Экспорт, когда хаб сообщества включён в Настройки, Интеграции. Общий сет, вставленный в поле Импорт любой b4, проверяется, его файлы payload устанавливаются, и сет открывается в редакторе для сохранения.
JSON из Импорта/Экспорта, описанный в разделе Сеты, копирует сет как есть, вместе с маршрутизацией, и предназначен для переноса сета между собственными роутерами одного человека. Общий сет - это форма для передачи другому. Оба принимаются одним и тем же полем Импорт; b4 различает их по форме.
Тот же общий сет отправляет в хаб сообщества кнопка Опубликовать в хабе; другие пользователи b4 находят его на своей странице Сообщество. Публикация, модерация и версии описаны в разделе Хаб сообщества.
Что покидает роутер
Общий сет собирается по списку разрешённых настроек. Всё, чего в списке нет, не включается, и предпросмотр называет каждую отброшенную настройку и причину.
Передаётся:
- настройки TCP, UDP, фрагментации и фейковых пакетов, включая фильтры портов;
- цели: домены, адреса, имена категорий geosite и geoip, ASN, фильтры версии TLS и IP;
- DNS-перенаправление: включено ли оно, URL DoH, строгий режим и пины для доменов, которые сет таргетирует; URL DoH, чей хост не входит в известные публичные резолверы, отмечается при подготовке сета, а импорт отбрасывает всё DNS-перенаправление, чтобы не отправлять каждый запрос для доменов сета неизвестному резолверу;
- MSS clamp;
- маршрутизация в режиме блокировки, поскольку сет, который отправляет рекламу или трекеры в blackhole, не содержит ничего приватного.
Не включается:
- маршрутизация через интерфейс, прокси или Telegram-мост вместе с адресом, портом и учётными данными апстрима;
- фильтры устройств, которые называют MAC-адреса одной сети;
- эскалация, которая ссылается на id сета, существующего только на одном роутере;
- адрес DNS-сервера, на который сет перенаправляет запросы;
- обнаружение блокировки по IP;
- адреса Дискавери и переключатель мониторинга, которые описывают то, что проверяется в одной сети; предпросмотр называет адреса приватными;
- id сета и признак того, включён ли он.
Пин DNS сохраняется только тогда, когда закреплённый домен входит в цели сета и каждый адрес в нём публичный. Пин для другого домена или пин на внутренний адрес отбрасывается, и об этом сообщается.
ASN передаётся только номером, а не префиксами, которые хранит роутер автора; b4, импортирующий сет, загружает префиксы сам. Общий сет с ASN требует b4 1.83.0 или новее, а больше 50 ASN отмечается при подготовке сета.
Домены, похожие на внутренние для сети автора, не удаляются, а отмечаются: одиночная метка вроде nas, буквальный адрес или суффикс вроде .lan, .local или .home. В другой сети они ничего не значат, и перед передачей сета их имеет смысл удалить.
Файлы payload
Сет, чьи фейковые пакеты используют перехваченный ClientHello, ссылается на файл в captures/. Этот файл передаётся внутри общего сета, поэтому тот, кто его импортирует, отправляет тот же фейковый пакет, что и автор. Файл принимается, только если он разбирается как TLS ClientHello с именем сервера или как QUIC Initial с читаемым ClientHello, и только до 16 КБ. Если файла, на который ссылается сет, нет на роутере автора, ссылка не включается, и предпросмотр сообщает об этом: с обеих сторон фейковые пакеты в этом случае собираются из встроенного payload, то есть из того, что роутер автора уже и отправлял.
При импорте каждый файл записывается в captures/ и появляется в Настройки, Пэйлоады. Имя складывается из протокола и имени сервера, прочитанного из самого payload, с точками, заменёнными на подчёркивания, например tls_www_google_com.bin. Существующий файл с тем же именем и другим содержимым никогда не перезаписывается: импортированный сохраняется под именем с коротким суффиксом-хешем, и сет ссылается на него.
Что проверяет импорт
Импорт выполняется на роутере, а не в браузере, и сообщает, что пришлось изменить:
- формат общего сета; будущий формат отклоняется, а не читается частично;
- настройки, неизвестные этой версии b4, которые отбрасываются с пометкой, поскольку их могла создать более новая b4;
- минимальная версия b4, для которой сет подготовлен, в сравнении с запущенной;
- значения, которые эта версия b4 не принимает, например имя режима из более нового релиза: они заменяются значениями по умолчанию и перечисляются;
- хеш каждого файла payload против его содержимого и наличие каждого payload, на который ссылается сет;
- категории geosite и geoip, названные в сете, но отсутствующие в базах этого роутера, либо отсутствие базы вообще;
- ASN, чьих префиксов этот роутер ещё не загружал: они перечисляются, b4 загружает их в фоне после сохранения сета, а до тех пор они ни с чем не совпадают;
- пины, к которым применяется то же правило, что и при подготовке сета: пин для домена, который сет не таргетирует, или пин на внутренний адрес отбрасывается и называется, а оставшиеся перечисляются, чтобы их можно было проверить во вкладке DNS перед сохранением;
- URL DoH, чей хост не входит в известные публичные резолверы: DNS-перенаправление отбрасывается, а хост называется.
Сам сет проходит ту же проверку, что и сет, сохранённый из редактора, поэтому общий сет не может принести блок маршрутизации, фильтр устройств или адрес DNS-сервера, даже если JSON отредактировали вручную, чтобы их добавить.
Происхождение
Импортированный сет запоминает отпечаток стратегии, с которой он пришёл. Отпечаток покрывает только настройки, меняющие пакеты, и настройки DNS-перенаправления, поэтому изменение целей, фильтра портов или пинов правкой не считается. Карточка сета показывает Общий сет, пока стратегия не менялась, и Общий сет, изменён, когда она отличается.
Категории geosite
Имя категории имеет смысл только относительно файла geosite, в котором его ищут. Источники, предлагаемые в Настройки, Geodat настройки, различаются тем, что содержит категория с одним и тем же именем, а категория из одного источника может отсутствовать в другом. Общий сет записывает URL источников, которые использовал роутер автора, и импорт сообщает о каждой категории, которой нет в локальной базе. Категории передаются по имени; сами базы никогда не входят в общий сет.
Командные строки byedpi и zapret - это другой импорт, описанный в разделе Импорт из другого инструмента.