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".
Если followRedirect (см. ниже) равно true, то address может быть пустым.
port: number
Перенаправляет трафик на указанный порт целевого адреса, диапазон [0, 65535], числовой тип. Если не заполнено или равно 0, по умолчанию используется порт прослушиваемого адреса.
portMap: map[string]string
Представляет собой map, который сопоставляет локальные порты с требуемыми удаленными адресами/портами (в случае, если inbound прослушивает несколько портов). Если локальный порт не указан в этом map, обработка будет производиться в соответствии с настройками address/port.
network: "tcp" | "udp" | "tcp,udp"
Поддерживаемые типы сетевых протоколов. Например, если указано "tcp", то будет приниматься только трафик TCP. Значение по умолчанию: "tcp".
followRedirect: true | false
Если значение равно true, dokodemo-door будет распознавать данные, перенаправленные iptables, и пересылать их на соответствующий целевой адрес.
См. настройку tproxy в разделе Конфигурация транспорта.
userLevel: number
Уровень пользователя, для соединения будет использоваться локальная политика, соответствующая этому уровню пользователя.
Значение userLevel соответствует значению level в разделе policy. Если не указано, используется значение по умолчанию - 0.
Использование
У Dokodemo door есть два основных варианта использования: прозрачное проксирование (см. ниже) и перенаправление портов.
Иногда некоторые сервисы не поддерживают прямое проксирование, такое как Socks5, а использование Tun или Tproxy является излишним, и эти сервисы взаимодействуют только с одним IP-адресом и одним портом (например: iperf, сервер Minecraft, конечная точка Wireguard), тогда можно использовать произвольную дверь.
Например, следующая конфигурация (предполагается, что исходящее соединение по умолчанию является допустимым прокси):
{
"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).