mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2026-10-10 00:08:31 +03:00
* Update tunnel English docs * Change file name. Add file for compatibility. * Update supported inbound protocols in English docs
81 lines
3.0 KiB
Markdown
81 lines
3.0 KiB
Markdown
# Tunnel(Dokodemo-Door)
|
|
|
|
Tunnel, formerly known as dokodemo-door, listens on multiple local ports and forwards all incoming data through an outbound to a specified server port, achieving the effect of port mapping.
|
|
|
|
## InboundConfigurationObject
|
|
|
|
```json
|
|
{
|
|
"address": "8.8.8.8",
|
|
"port": 53,
|
|
"portMap": {
|
|
"5555": "1.1.1.1:7777",
|
|
"5556": ":8888", // overrides port only
|
|
"5557": "example.com:" // overrides address only
|
|
},
|
|
"network": "tcp",
|
|
"followRedirect": false,
|
|
"userLevel": 0
|
|
}
|
|
```
|
|
|
|
> `address`: address
|
|
|
|
The address to forward the traffic to. It can be an IP address like `"1.2.3.4"` or a domain name like `"xray.com"`. It is a string type, default `"localhost"`.
|
|
|
|
When `followRedirect` (see below) is set to `true`, `address` can be empty.
|
|
|
|
> `port`: number
|
|
|
|
The specified port on the destination address to forward the traffic to, range \[0, 65535\], numeric type. If not filled or set to 0, it defaults to the listening port.
|
|
|
|
> `portMap`: map[string]string
|
|
|
|
A map maps local ports and required remote addresses/ports (if the inbound listens on several ports). If a local port is not included, handles according to `address`/`port` setting.
|
|
|
|
> `network`: "tcp" | "udp" | "tcp,udp"
|
|
|
|
The supported network protocol type. For example, when specified as `"tcp"`, it will only receive TCP traffic. The default value is `"tcp"`.
|
|
|
|
> `followRedirect`: true | false
|
|
|
|
When set to `true`, dokodemo-door will recognize data forwarded by iptables and forward it to the corresponding destination address.
|
|
|
|
Refer to the `tproxy` setting in the [Transport Configuration](../transport.md#sockoptobject) for more information.
|
|
|
|
> `userLevel`: number
|
|
|
|
The user level that the connection will use to determine the corresponding [Local Policy](../policy.md#levelpolicyobject).
|
|
|
|
The value of `userLevel` corresponds to the value of `level` in the [policy](../policy.md#policyobject). If not specified, the default value is 0.
|
|
|
|
## Usage
|
|
|
|
Dokodemo-door can be used as Transparent proxy (in the next section) and can be used to map a port.
|
|
|
|
Some services do not support proxy likes Socks5, but using Tun or Tproxy could be too complicated. If these services only communicate with a single IP address and port (example: iperf, Minecraft server, Wireguard endpoint), dokodemo-door can be used.
|
|
|
|
Below is an example config (if the default outbound is an effective proxy):
|
|
|
|
```json
|
|
{
|
|
"listen": "127.0.0.1",
|
|
"port": 25565,
|
|
"protocol": "tunnel",
|
|
"settings": {
|
|
"address": "mc.hypixel.net",
|
|
"port": 25565,
|
|
"network": "tcp",
|
|
"followRedirect": false,
|
|
"userLevel": 0
|
|
},
|
|
"tag": "mc"
|
|
}
|
|
```
|
|
|
|
The core will listen at `127.0.0.1:25565`, and the traffic coming in through this inbound will be send to `mc.hypixel.net:25565` (a Minecraft server) through the default outbound. Then you can connect the Minecraft client to the Hypixel server through the proxy by set the game server to `127.0.0.1:25565` in the Minecraft client.
|
|
|
|
## Transparent Proxy Configuration Example
|
|
|
|
Please refer to the [Transparent Proxy (TProxy) Configuration Tutorial](../../document/level-2/tproxy) for this section.
|