Notice
This page has not yet been translated, see how you can help here.
Tunnel(dokodemo-door)
Tunnel(隧道),旧称 dokodemo-door(任意门),可以监听数个本地端口,并把所有收到的数据通过 outbound 发送至指定服务器的某个端口,从而达到端口映射的效果。
InboundConfigurationObject
{
"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
将流量转发到此地址。可以是一个 IP 地址,形如 "1.2.3.4"
,或者一个域名,形如 "xray.com"
。字符串类型,默认为 "localhost"
.
port
: number
将流量转发到目标地址的指定端口,范围 [0, 65535],数值类型。不填或者为 0 时默认为监听端口。
portMap
: map[string]string
一个map, 映射本地端口和需要的远程地址/端口(如果 inbound 监听了数个端口), 如果本地端口未包含在其中则按 address
/port
设置处理。
network
: "tcp" | "udp" | "tcp,udp"
可接收的网络协议类型。比如当指定为 "tcp"
时,仅会接收 TCP 流量。默认值为 "tcp"
。
followRedirect
: true | false
当值为 true
时,dokodemo-door 会识别出由 iptables 转发而来的数据,并转发到相应的目标地址。
可参考 传输配置 中的 tproxy
设置。
userLevel
: number
用户等级,连接会使用这个用户等级对应的 本地策略。
userLevel 的值, 对应 policy 中 level
的值. 如不指定, 默认为 0。
用处
任意门主要有两个用处 一个是用作透明代理(见下),另一个是映射一个端口。
有时一些服务并不支持使用 Socks5 这样的正向代理,使用 Tun 或者 Tproxy 又有些小题大做了,而这些服务又只和一个 IP 一个端口通信 (比如: iperf, Minecraft server, Wireguard endpoint), 就可以用到任意门。
如以下 Config (假设默认出站为一有效代理)
{
"listen": "127.0.0.1",
"port": 25565,
"protocol": "tunnel",
"settings": {
"address": "mc.hypixel.net",
"port": 25565,
"network": "tcp",
"followRedirect": false,
"userLevel": 0
},
"tag": "mc"
}
这时候核心会监听 127.0.0.1:25565 并通过默认出站转发至 mc.hypixel.net:25565 (一个MC服务器), 这时候再通过 Minecraft 客户端连接 127.0.0.1:25565, 就相当于通过代理连接了 Hypixel 服务器。
透明代理配置样例
此部分请参考透明代理(TProxy)配置教程。