You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
3.7 KiB
149 lines
3.7 KiB
# TCP
|
|
|
|
TCP (Transmission Control Protocol) is currently one of the recommended transport protocols
|
|
|
|
It can be combined with various protocols in multiple ways.
|
|
|
|
## TcpObject
|
|
|
|
`TcpObject` corresponds to the `tcpSettings` item in the Transport Protocol.
|
|
|
|
```json
|
|
{
|
|
"acceptProxyProtocol": false,
|
|
"header": {
|
|
"type": "none"
|
|
}
|
|
}
|
|
```
|
|
|
|
> `acceptProxyProtocol`: true | false
|
|
|
|
Only used for inbound, indicating whether to accept the PROXY protocol.
|
|
|
|
The [PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt) is used to transmit the real source IP and port of the request. **If you are not familiar with it, please ignore this item.**
|
|
|
|
Common reverse proxy software (such as HAProxy and Nginx) can be configured to send it, and VLESS fallbacks xver can also send it.
|
|
|
|
When filled in as `true`, after the underlying TCP connection is established, the requesting party must first send PROXY protocol v1 or v2, otherwise the connection will be closed.
|
|
|
|
The default value is `false`
|
|
|
|
> `header`: [NoneHeaderObject](#noneheaderobject) | [HttpHeaderobject](#httpheaderobject)
|
|
|
|
Packet header obfuscation settings, the default value is `NoneHeaderObject`
|
|
|
|
::: tip
|
|
HTTP obfuscation cannot be proxied by other HTTP servers (such as Nginx), but it can be proxied by VLESS fallbacks path.
|
|
:::
|
|
|
|
### NoneHeaderObject
|
|
|
|
No header obfuscation
|
|
|
|
```json
|
|
{
|
|
"type": "none"
|
|
}
|
|
```
|
|
|
|
> `type`: "none"
|
|
|
|
Disable header obfuscation.
|
|
|
|
### HttpHeaderObject
|
|
|
|
HTTP header obfuscation. The configuration must be the same between connecting inbound and outbound.
|
|
|
|
```json
|
|
{
|
|
"type": "http",
|
|
"request": {},
|
|
"response": {}
|
|
}
|
|
```
|
|
|
|
> `type`: "http"
|
|
|
|
Enable HTTP header obfuscation.
|
|
|
|
> `request`: [HTTPRequestObject](#httprequestobject)
|
|
|
|
HTTP request template.
|
|
|
|
> `response`: [HTTPResponseObject](#httpresponseobject)
|
|
|
|
HTTP response template.
|
|
|
|
#### HTTPRequestObject
|
|
|
|
```json
|
|
{
|
|
"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 version, the default value is `"1.1"`
|
|
|
|
> `method`: string
|
|
|
|
The HTTP method, the default value is `"GET"`
|
|
|
|
> `path`: \[ string \]
|
|
|
|
paths, an array of strings. The default value is `["/"]`. When there are multiple values, a value is chosen randomly for each request.
|
|
|
|
> `headers`: map{ string, \[ string \]}
|
|
|
|
HTTP header, a key-value pair, each key represents the name of an HTTP header, and the corresponding value is an array.
|
|
|
|
Each request will include all the keys and randomly select a corresponding value. Please refer to the **default values** shown in the example above.
|
|
|
|
#### HTTPResponseObject
|
|
|
|
```json
|
|
{
|
|
"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 version, default is `"1.1"`
|
|
|
|
> `status`: string
|
|
|
|
HTTP status, default is `"200"`
|
|
|
|
> `reason`: string
|
|
|
|
HTTP status description, default value is `"OK"`
|
|
|
|
> `headers`: map {string, \[ string \]}
|
|
|
|
HTTP header, a key-value pair, each key represents the name of an HTTP header, and the corresponding value is an array.
|
|
|
|
Each request will include all the keys and randomly select a corresponding value. Please refer to the **default values** shown in the example above.
|