Warning

This translation was modified on 16 July 2024 and an updated version (30 August 2024) is available on the source page. View the original page

Freedom

Freedom - это исходящий протокол, который можно использовать для отправки (обычных) данных TCP или UDP в любую сеть.

OutboundConfigurationObject

{
  "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-сервер 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", если результаты разрешения не соответствуют требованиям, соединение не будет установлено.

СОВЕТ 1

При использовании режимов "UseIP" или "ForceIP" и указании sendThrough в конфигурации исходящего соединения 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

Уровень пользователя, для соединения будет использоваться локальная политика, соответствующая этому уровню пользователя.

Значение userLevel соответствует значению level в разделе policy. Если не указано, используется значение по умолчанию - 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 (протокол не используется).