2026-04-08 19:17:09 +03:00
<img src="https://gist.githubusercontent.com/avbor/1f8a128e628f47249aae6e058a57610b/raw/19013276c035e91058e0a9799ab145f8e70e3ff5/scheme.svg">
## Концепция
- **Сервер A** (_РФ_):\
2026-04-09 19:51:35 +03:00
Точка входа, принимает трафик пользователей Telegram-прокси напрямую через **Xray ** (порт `443\tcp` )\
и отправляет его в туннель на Сервер **B ** .\
Порт для клиентов Telegram — `443\tcp`
2026-04-08 19:17:09 +03:00
- **Сервер B** (_условно Нидерланды_):\
Точка выхода, на нем работает **Xray-сервер ** (принимает подключения точки входа) и **telemt ** .\
На сервере должен быть неограниченный доступ до серверов Telegram.\
Порт для VLESS/REALITY (вход) — `443\tcp` \
Внутренний порт telemt (куда пробрасывается трафик) — `8443\tcp`
2026-04-09 19:51:35 +03:00
Туннель работает по протоколу VLESS-XTLS-Reality (или VLESS/xhttp/reality). Оригинальный IP-адрес клиента сохраняется благодаря протоколу PROXYv2, который Xray на Сервере А добавляет через локальный loopback перед упаковкой в туннель, благодаря чему прозрачно доходит до telemt.
2026-04-08 19:17:09 +03:00
---
## Шаг 1. Настройка туннеля Xray (A <-> B)
На обоих серверах необходимо установить **Xray-core ** (рекомендуется версия 1.8.4 или новее).
Официальный скрипт установки (выполнить на обоих серверах):
``` bash
bash -c " $( curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) " @ install
```
### Генерация ключей и параметров (выполнить один раз)
Для конфигурации потребуются уникальные ID и ключи Xray Reality. Выполните на любом сервере с установленным Xray:
1. **UUID клиента: **
``` bash
xray uuid
# Сохраните вывод (например: 12345678-abcd-1234-abcd-1234567890ab) — это <XRAY_UUID>
```
2. **Пара ключей X25519 (Private & Public) для Reality: **
``` bash
xray x25519
# Сохраните Private key (<SERVER_B_PRIVATE_KEY>) и Public key (<SERVER_B_PUBLIC_KEY>)
```
3. **Short ID (идентификатор Reality): **
``` bash
2026-04-12 15:45:01 +03:00
openssl rand -hex 8
# Сохраните вывод (например: abc123def456) — это <SHORT_ID>
2026-04-08 19:17:09 +03:00
```
2026-04-09 18:48:37 +03:00
4. **Random Path (путь для xhttp): **
``` bash
2026-04-12 16:15:52 +03:00
openssl rand -hex 16
2026-04-12 15:45:01 +03:00
# Сохраните вывод (например, 0123456789abcdef0123456789abcdef), чтобы заменить <YOUR_RANDOM_PATH> в конфигах
2026-04-09 18:48:37 +03:00
```
2026-04-08 19:17:09 +03:00
---
### Конфигурация Сервера B (_Нидерланды_):
Создаем или редактируем файл `/usr/local/etc/xray/config.json` .
Этот Xray-сервер будет слушать порт `443` и прозрачно пропускать валидный Reality трафик дальше, а "замаскированный" трафик (например, если кто-то стучится в лоб веб-браузером) пойдет на `yahoo.com` .
``` bash
nano /usr/local/etc/xray/config.json
```
Содержимое файла:
``` json
{
"log" : {
"loglevel" : "error" ,
"access" : "none"
} ,
"inbounds" : [
{
2026-04-09 18:48:37 +03:00
"tag" : "vless-in" ,
2026-04-08 19:17:09 +03:00
"port" : 443 ,
"protocol" : "vless" ,
"settings" : {
"clients" : [
{
"id" : "<XRAY_UUID>"
}
] ,
"decryption" : "none"
} ,
"streamSettings" : {
2026-04-09 18:48:37 +03:00
"network" : "xhttp" ,
2026-04-08 19:17:09 +03:00
"security" : "reality" ,
"realitySettings" : {
"dest" : "yahoo.com:443" ,
"serverNames" : [
"yahoo.com"
] ,
"privateKey" : "<SERVER_B_PRIVATE_KEY>" ,
"shortIds" : [
"<SHORT_ID>"
]
2026-04-09 18:48:37 +03:00
} ,
"xhttpSettings" : {
"path" : "/<YOUR_RANDOM_PATH>" ,
"mode" : "auto"
2026-04-08 19:17:09 +03:00
}
}
}
] ,
"outbounds" : [
{
2026-04-09 18:48:37 +03:00
"tag" : "tunnel-to-telemt" ,
2026-04-08 19:17:09 +03:00
"protocol" : "freedom" ,
2026-04-08 22:24:51 +03:00
"settings" : {
"destination" : "127.0.0.1:8443"
}
2026-04-08 19:17:09 +03:00
}
2026-04-08 22:24:51 +03:00
] ,
"routing" : {
2026-04-09 18:48:37 +03:00
"domainStrategy" : "AsIs" ,
2026-04-08 22:24:51 +03:00
"rules" : [
{
"type" : "field" ,
2026-04-09 18:48:37 +03:00
"inboundTag" : [
"vless-in"
] ,
"outboundTag" : "tunnel-to-telemt"
2026-04-08 22:24:51 +03:00
}
]
}
2026-04-08 19:17:09 +03:00
}
```
Открываем порт на фаерволе (если включен):
``` bash
sudo ufw allow 443/tcp
```
Перезапускаем Xray:
``` bash
sudo systemctl restart xray
sudo systemctl enable xray
```
---
### Конфигурация Сервера A (_РФ_):
Аналогично, редактируем `/usr/local/etc/xray/config.json` .
2026-04-09 19:51:35 +03:00
Здесь Xray выступает публичной точкой: он принимает трафик на внешний порт `443\tcp` , пропускает через локальный loopback (порт `10444` ) для добавления PROXYv2-заголовка, и упаковывает в Reality до Сервера B, прося тот доставить данные на * свой локальный * порт `127.0.0.1:8443` (именно там будет слушать telemt).
2026-04-08 19:17:09 +03:00
``` bash
nano /usr/local/etc/xray/config.json
```
Содержимое файла:
``` json
{
"log" : {
"loglevel" : "error" ,
"access" : "none"
} ,
"inbounds" : [
{
2026-04-09 19:51:35 +03:00
"tag" : "public-in" ,
"port" : 443 ,
"listen" : "0.0.0.0" ,
"protocol" : "dokodemo-door" ,
"settings" : {
"address" : "127.0.0.1" ,
"port" : 10444 ,
"network" : "tcp"
}
} ,
{
"tag" : "tunnel-in" ,
"port" : 10444 ,
2026-04-08 19:17:09 +03:00
"listen" : "127.0.0.1" ,
"protocol" : "dokodemo-door" ,
"settings" : {
"address" : "127.0.0.1" ,
"port" : 8443 ,
"network" : "tcp"
}
}
] ,
"outbounds" : [
2026-04-09 19:51:35 +03:00
{
"tag" : "local-injector" ,
"protocol" : "freedom" ,
"settings" : {
"proxyProtocol" : 2
}
} ,
2026-04-08 19:17:09 +03:00
{
2026-04-09 18:48:37 +03:00
"tag" : "vless-out" ,
2026-04-08 19:17:09 +03:00
"protocol" : "vless" ,
"settings" : {
"vnext" : [
{
"address" : "<PUBLIC_IP_SERVER_B>" ,
"port" : 443 ,
"users" : [
{
"id" : "<XRAY_UUID>" ,
"encryption" : "none"
}
]
}
]
} ,
"streamSettings" : {
2026-04-09 18:48:37 +03:00
"network" : "xhttp" ,
2026-04-08 19:17:09 +03:00
"security" : "reality" ,
"realitySettings" : {
"serverName" : "yahoo.com" ,
"publicKey" : "<SERVER_B_PUBLIC_KEY>" ,
"shortId" : "<SHORT_ID>" ,
2026-04-09 18:48:37 +03:00
"spiderX" : "/" ,
2026-06-08 11:14:15 +03:00
"fingerprint" : "firefox"
2026-04-08 19:17:09 +03:00
} ,
2026-04-09 18:48:37 +03:00
"xhttpSettings" : {
"path" : "/<YOUR_RANDOM_PATH>"
2026-04-08 19:17:09 +03:00
}
}
}
2026-04-09 19:51:35 +03:00
] ,
"routing" : {
"domainStrategy" : "AsIs" ,
"rules" : [
{
"type" : "field" ,
"inboundTag" : [ "public-in" ] ,
"outboundTag" : "local-injector"
} ,
{
"type" : "field" ,
"inboundTag" : [ "tunnel-in" ] ,
"outboundTag" : "vless-out"
}
]
}
2026-04-08 19:17:09 +03:00
}
```
* Замените `<PUBLIC_IP_SERVER_B>` на внешний IP-адрес Сервера B. *
2026-04-09 19:51:35 +03:00
Открываем порт на фаерволе для клиентов:
2026-04-08 19:17:09 +03:00
``` bash
2026-04-09 19:51:35 +03:00
sudo ufw allow 443/tcp
2026-04-08 19:17:09 +03:00
```
2026-04-09 19:51:35 +03:00
Перезапускаем Xray:
2026-04-08 19:17:09 +03:00
``` bash
2026-04-09 19:51:35 +03:00
sudo systemctl restart xray
sudo systemctl enable xray
2026-04-08 19:17:09 +03:00
```
---
2026-04-09 19:51:35 +03:00
## Шаг 2. Установка и настройка telemt на Сервере B (_Нидерланды_)
2026-04-08 19:17:09 +03:00
2026-04-10 13:45:53 +03:00
Установка telemt описана [в основной инструкции ](../Quick_start/QUICK_START_GUIDE.ru.md ).
2026-04-08 19:17:09 +03:00
Отличие в том, что telemt должен слушать * внутренний * порт (так как 443 занят Xray-сервером), а также ожидать `PROXY` протокол из Xray туннеля.
В конфиге `config.toml` прокси (на Сервере B) укажите:
``` toml
[ server ]
port = 8443
listen_addr_ipv4 = "127.0.0.1"
proxy_protocol = true
[ general . links ]
show = "*"
public_host = "<FQDN_OR_IP_SERVER_A>"
public_port = 443
```
- `port = 8443` и `listen_addr_ipv4 = "127.0.0.1"` означают, что telemt принимает подключения только изнутри (приходящие от локального Xray-процесса).
2026-04-09 19:51:35 +03:00
- `proxy_protocol = true` заставляет telemt парсить PROXYv2-заголовок (который добавил Xray на Сервере A через loopback), восстанавливая IP-адрес конечного пользователя (РФ).
2026-04-08 19:17:09 +03:00
- В `public_host` укажите публичный IP-адрес или домен Сервера A, чтобы ссылки на подключение генерировались корректно.
Перезапустите `telemt` , и клиенты смогут подключаться по выданным ссылкам.