diff --git a/docs/ru/config/outbounds/freedom.md b/docs/ru/config/outbounds/freedom.md new file mode 100644 index 0000000..b2b5291 --- /dev/null +++ b/docs/ru/config/outbounds/freedom.md @@ -0,0 +1,73 @@ +# Freedom + +Freedom - это исходящий протокол, который можно использовать для отправки (обычных) данных TCP или UDP в любую сеть. + +## OutboundConfigurationObject + +```json +{ + "domainStrategy": "AsIs", + "redirect": "127.0.0.1:3366", + "userLevel": 0, + "fragment": { + "packets": "tlshello", + "length": "100-200", + "interval": "10-20" // в миллисекундах + }, + "proxyProtocol": 0 +} +``` + +> `domainStrategy`: "AsIs"
+> "UseIP" | "UseIPv6v4" | "UseIPv6" | "UseIPv4v6" | "UseIPv4"
+> "ForceIP" | "ForceIPv6v4" | "ForceIPv6" | "ForceIPv4v6" | "ForceIPv4" + +Значение по умолчанию: `"AsIs"`. + +Если целевой адрес является доменным именем, настройте соответствующее значение для режима работы Freedom: + +- При использовании `"AsIs"` Xray будет напрямую использовать системный стек для установления соединения, приоритет и выбор IP будут зависеть от системных настроек. По некоторым причинам UDP-соединения, использующие доменные имена, будут игнорировать системные настройки и отдавать приоритет IPv4. +- При указании других значений для разрешения будет использоваться [встроенный DNS-сервер](../dns.md) Xray-core. Если DNSObject отсутствует, будет использоваться системный DNS. Если существует несколько подходящих IP-адресов, ядро случайным образом выберет один IP-адрес в качестве целевого. +- `"IPv4"` означает попытку подключения только с использованием IPv4, `"IPv4v6"` - попытку подключения с использованием IPv4 или IPv6, но с предпочтением IPv4 для доменных имен с поддержкой обоих протоколов. (То же самое относится и к v4v6, но в обратном порядке, поэтому здесь не приводится). +- Если в настройках встроенного DNS указан параметр `"queryStrategy"`, фактическое поведение будет объединено с этой опцией, и будут разрешаться только те типы IP, которые включены в обе опции. Например, `"queryStrategy": "UseIPv4"` и `"domainStrategy": "UseIP"` фактически эквивалентны `"domainStrategy": "UseIPv4"`. +- При использовании опций, начинающихся с `"Use"`, если результаты разрешения не соответствуют требованиям (например, доменное имя имеет только результат разрешения IPv4, но используется UseIPv6), будет выполнен откат к AsIs. +- При использовании опций, начинающихся с `"Force"`, если результаты разрешения не соответствуют требованиям, соединение не будет установлено. + +::: tip СОВЕТ 1 +При использовании режимов `"UseIP"` или `"ForceIP"` и указании `sendThrough` в [конфигурации исходящего соединения](../outbound.md#outboundobject) Freedom будет автоматически определять необходимый тип IP (IPv4 или IPv6) на основе значения `sendThrough`. Если вручную указать один тип IP (например, UseIPv4), но он не совпадает с локальным адресом, указанным в `sendThrough`, соединение не будет установлено. +::: + +> `redirect`: адрес_порт + +Freedom будет принудительно отправлять все данные на указанный адрес (а не на адрес, указанный во входящем соединении). + +Его значение представляет собой строку, например: `"127.0.0.1:80"`, `":1234"`. + +Если адрес не указан, например, `":443"`, Freedom не будет изменять исходный целевой адрес. +Если порт равен `0`, например, `"xray.com: 0"`, Freedom не будет изменять исходный порт. + +> `userLevel`: number + +Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. + +Значение userLevel соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0. + +> `fragment`: map + +Некоторые пары "ключ-значение" для управления исходящей TCP-фрагментацией, которые в некоторых случаях могут обмануть систему цензуры, например, обойти черный список SNI. + +`"packets"`: поддерживаются два режима фрагментации: "1-3" - это фрагментация потока TCP, применяемая к первым трем операциям записи данных на стороне клиента. "tlshello" - это фрагментация пакета TLS-рукопожатия. + +`"length"`: длина фрагмента пакета (в байтах). + +`"interval"`: интервал фрагментации (в миллисекундах). + +> `proxyProtocol`: number + +Протокол PROXY обычно используется в сочетании с `redirect` для перенаправления на Nginx или другой сервер, на котором включен протокол PROXY. Если сервер не поддерживает протокол PROXY, соединение будет разорвано. + +Значение proxyProtocol - это номер версии протокола PROXY, возможные значения: `1` или `2`. Если не указано, используется значение по умолчанию - `0` (протокол не используется). + + + +