TCP

Режим транспорта TCP — один из рекомендуемых в настоящее время режимов транспорта.

Может использоваться в различных комбинациях с различными протоколами.

TcpObject

TcpObject соответствует элементу tcpSettings в конфигурации транспорта.

{
  "acceptProxyProtocol": false,
  "header": {
    "type": "none"
  }
}

acceptProxyProtocol: true | false

Только для входящих подключений, указывает, следует ли принимать PROXY protocol.

PROXY protocolОткрыть в новой вкладке используется для передачи реального исходного IP-адреса и порта запроса, если вы не знаете, что это такое, проигнорируйте этот параметр.

Распространенные программы для обработки обратного прокси (например, HAProxy, Nginx) можно настроить на его отправку, VLESS fallbacks xver также может его отправлять.

Если установлено значение true, то после установления TCP-соединения на самом нижнем уровне запрашивающая сторона должна сначала отправить PROXY protocol v1 или v2, иначе соединение будет закрыто.

Значение по умолчанию: false.

header: NoneHeaderObject | HttpHeaderobject

Настройки маскировки заголовка пакета данных, значение по умолчанию: NoneHeaderObject.

Подсказка

HTTP-маскировка не может быть разделена другими HTTP-серверами (например, Nginx), но может быть разделена с помощью VLESS fallbacks path.

NoneHeaderObject

Маскировка не выполняется.

{
  "type": "none"
}

type: "none"

Указывает, что маскировка не выполняется.

HttpHeaderObject

Конфигурация HTTP-маскировки должна быть одинаковой как на входящем, так и на исходящем соединении, и ее содержимое должно совпадать.

{
  "type": "http",
  "request": {},
  "response": {}
}

type: "http"

Указывает на выполнение HTTP-маскировки.

request: HTTPRequestObject

HTTP-запрос.

response: HTTPResponseObject

HTTP-ответ.

HTTPRequestObject

{
  "version": "1.1",
  "method": "GET",
  "path": ["/"],
  "headers": {
    "Host": ["www.baidu.com", "www.bing.com"],
    "User-Agent": [
      "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
      "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A456 Safari/601.1.46"
    ],
    "Accept-Encoding": ["gzip, deflate"],
    "Connection": ["keep-alive"],
    "Pragma": "no-cache"
  }
}

version: string

Версия HTTP, значение по умолчанию — "1.1".

method: string

Метод HTTP, значение по умолчанию — "GET".

path: [ string ]

Путь, массив строк. Значение по умолчанию — ["/"]. Если имеется несколько значений, то при каждом запросе случайным образом выбирается одно из них.

headers: map{ string, [ string ]}

HTTP-заголовки, пары ключ-значение, где каждый ключ представляет имя HTTP-заголовка, а соответствующее значение является массивом.

Каждый запрос будет содержать все ключи и случайно выбранное соответствующее значение. Значение по умолчанию см. в примере выше.

HTTPResponseObject

{
  "version": "1.1",
  "status": "200",
  "reason": "OK",
  "headers": {
    "Content-Type": ["application/octet-stream", "video/mpeg"],
    "Transfer-Encoding": ["chunked"],
    "Connection": ["keep-alive"],
    "Pragma": "no-cache"
  }
}

version: string

Версия HTTP, значение по умолчанию — "1.1".

status: string

Состояние HTTP, значение по умолчанию — "200".

reason: string

Описание состояния HTTP, значение по умолчанию — "OK".

headers: map {string, [ string ]}

HTTP-заголовки, пары ключ-значение, где каждый ключ представляет имя HTTP-заголовка, а соответствующее значение является массивом.

Каждый запрос будет содержать все ключи и случайно выбранное соответствующее значение. Значение по умолчанию см. в примере выше.