# Fallback > **Fallback - одна из самых мощных функций Xray, эффективно предотвращающая активное зондирование и позволяющая свободно настраивать совместное использование нескольких служб на часто используемых портах.** Fallback обеспечивает Xray высокой степенью защиты от активного зондирования и имеет уникальный механизм резервирования первого пакета. Fallback также может разделять трафик различных типов по пути, что позволяет совместно использовать один порт для нескольких служб. В настоящее время вы можете использовать функцию fallback при использовании протоколов VLESS или Trojan, настроив `fallbacks`, и создавать очень разнообразные комбинации. ## Настройка `fallbacks` ```json "fallbacks": [ { "dest": 80 } ] ``` > `fallbacks`: \[ [FallbackObject](#fallbackobject) \] Массив, содержащий серию мощных конфигураций резервирования и разделения трафика. ### FallbackObject ```json { "name": "", "alpn": "", "path": "", "dest": 80, "xver": 0 } ``` **`fallbacks` - это массив, здесь приведено описание конфигурации одного из его элементов.** Элемент `fallbacks` является необязательным и может использоваться только для комбинации транспорта TCP+TLS. - Если этот элемент имеет дочерние элементы, в [Inbound TLS](../transport.md#tlsobject) необходимо установить `"alpn":["http/1.1"]`. Обычно сначала нужно настроить набор резервных путей по умолчанию с опущенными или пустыми `alpn` и `path`, а затем настроить другие разделения по мере необходимости. VLESS будет перенаправлять трафик с длиной первого пакета после дешифрования TLS менее 18 байт, неверной версией протокола или неудачной аутентификацией на адрес, указанный в `dest`. Для других комбинаций транспорта необходимо удалить элемент `fallbacks` или все его дочерние элементы. В этом случае Fallback не будет включен, VLESS будет ждать считывания необходимой длины, а в случае неверной версии протокола или сбоя аутентификации соединение будет немедленно разорвано. > `name`: string Попытка сопоставить TLS SNI (указание имени сервера), любое значение или пустая строка, по умолчанию "". > `alpn`: string Попытка сопоставить результат согласования TLS ALPN, любое значение или пустая строка, по умолчанию "". При необходимости VLESS попытается прочитать результат согласования TLS ALPN, и в случае успеха выведет в лог `realAlpn =`. Назначение: решает проблему несовместимости службы h2c Nginx с http/1.1, для которой в Nginx требуется написать две строки listen, по одной для 1.1 и h2c. Примечание: если в `fallbacks alpn` присутствует `"h2"`, в [Inbound TLS](../transport.md#tlsobject) необходимо установить `"alpn":["h2","http/1.1"]` для поддержки доступа h2. ::: tip `alpn`, установленный в Fallback, соответствует фактически согласованному ALPN, а `alpn`, установленный в Inbound TLS, - это список дополнительных ALPN во время рукопожатия. Это разные вещи. ::: > `path`: string Попытка сопоставить HTTP-путь первого пакета, любое значение или пустая строка, по умолчанию пустая строка, если не пустая, то должна начинаться с `/`, h2c не поддерживается. Интеллектуальность: при необходимости VLESS попытается просмотреть PATH (не более 55 байт; самый быстрый алгоритм, не выполняет полный разбор HTTP) и в случае успеха выведет в INFO-лог `realPath =`. Назначение: разделение трафика WebSocket или HTTP-маскировки для других входящих соединений, без лишней обработки, чистая переадресация трафика, теоретически более высокая производительность, чем у Nginx. Примечание: **входящее соединение, в котором находится fallbacks, должно быть TCP+TLS**, это необходимо для разделения трафика на другие входящие соединения WS, входящие соединения, на которые разделяется трафик, не нуждаются в настройке TLS. > `dest`: string | number Определяет, куда перенаправляется TCP-трафик после дешифрования TLS, в настоящее время поддерживаются два типа адресов (это поле является обязательным, иначе запуск невозможен): 1. TCP, формат `"addr:port"`, где addr поддерживает IPv4, доменное имя, IPv6, если указано доменное имя, TCP-соединение будет установлено напрямую (без использования встроенного DNS). 2. Unix domain socket, формат - абсолютный путь, например, `"/dev/shm/domain.socket"`, в начале можно добавить `@` для обозначения [abstract](https://www.man7.org/linux/man-pages/man7/unix.7.html), `@@` - для обозначения abstract с заполнением. Если указан только порт, можно использовать число или строку, например, `80`, `"80"`, обычно указывает на службу http в открытом виде (addr будет дополнен до `"127.0.0.1"`). > `xver`: number Отправка [PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt), специально для передачи реального исходного IP-адреса и порта запроса, заполняется версией 1 или 2, по умолчанию 0, то есть не отправляется. При необходимости рекомендуется указать 1. В настоящее время при указании 1 или 2 функциональность полностью идентична, отличается только структура, причем первая может быть распечатана, а вторая - двоичная. Входящие TCP- и WS-соединения Xray уже поддерживают прием PROXY protocol. ::: warning Если вы [настраиваете Nginx на прием PROXY protocol](https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/#configuring-nginx-to-accept-the-proxy-protocol), помимо установки `proxy_protocol`, необходимо также установить `set_real_ip_from`, иначе могут возникнуть проблемы. ::: ### Дополнительные замечания - Будет выполнено сопоставление с наиболее точным дочерним элементом, порядок дочерних элементов не имеет значения. Если настроено несколько дочерних элементов с одинаковыми `alpn` и `path`, будет использоваться последний. - Резервирование и разделение трафика - это переадресация на уровне TCP после дешифрования, а не на уровне HTTP, проверка PATH первого пакета выполняется только при необходимости. - Вы можете просмотреть больше советов и рекомендаций по использованию Fallbacks: - [Краткое описание функции Fallbacks](../../document/level-1/fallbacks-lv1) ## Теория Fallbacks