From 95d9980f0684f252f22037026b6224e520d1f6e3 Mon Sep 17 00:00:00 2001 From: ruslan Date: Wed, 2 Jul 2025 12:53:24 +0200 Subject: [PATCH] Create rknb-marzban-routing.md --- content/posts/rknb-marzban-routing.md | 215 ++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 content/posts/rknb-marzban-routing.md diff --git a/content/posts/rknb-marzban-routing.md b/content/posts/rknb-marzban-routing.md new file mode 100644 index 0000000..4a890f5 --- /dev/null +++ b/content/posts/rknb-marzban-routing.md @@ -0,0 +1,215 @@ +--- +title: Marzban - продвинутый роутинг +description: VLESS + gRPC + Reality +date: 2025-07-02T12:48:00+02:00 +tags: [linux, xray] +--- + +Marzban - продвинутый роутинг +VLESS + gRPC + Reality +linux marzban + +## Вступление + +Для конфигурации нам необходимо два сервера - один будет в России, а второй за её пределами.\ +Российский сервер будет точкой входа и проксировать траффик через себя до российских сервисов.\ +До сервисов вне России сервер будет дополнительно проксировать через сервер вне России.\ +Домен для сервера в России, например - `example.com`, для сервера вне России - `exit.example.com`. + +## Установка Marzban (аналогично для двух серверов) + +Нужно создать папки `tls` и `lib`: +``` +mkdir tls +mkdir lib +``` +Необходимо переместить `TLS` ключ и сертификат в папку `tls`.\ +Необходимо создать `compose.yaml`: +``` +services: + marzban: + image: gozargah/marzban:latest + container_name: marzban + network_mode: host + restart: always + env_file: .env + volumes: + - ./lib:/var/lib/marzban + - ./tls:/tls +``` + +В файл `.env` нужно вписать следующее: +``` +UVICORN_HOST = "0.0.0.0" +UVICORN_PORT = 8000 +ALLOWED_ORIGINS=https:// +SUDO_USERNAME = "admin" +SUDO_PASSWORD = "" +UVICORN_SSL_CERTFILE = "/tls/.crt" +UVICORN_SSL_KEYFILE = "/tls/.key" +DASHBOARD_PATH = "//" +XRAY_JSON = "/var/lib/marzban/xray_config.json" +XRAY_SUBSCRIPTION_URL_PREFIX = "https://" +``` + +Для полученя `xray` ключа и `uuid` для `lib/xray_config.json` необходимо скачать [xray-core](https://github.com/XTLS/Xray-core/releases/).\ +`uuid` - `./xray uuid` +`key` - `./xray x25519` +Далее нужно создать файл `lib/xray_config.json` (`fqdn` у каждого сервера свой): +``` +{ + "log": { + "loglevel": "debug" + }, + "dns": { + "servers": [ + "9.9.9.9", + "149.112.112.112", + "2620:fe::fe", + "2620:fe::9" + ], + "queryStrategy": "UseIP", + "tag": "dns_inbound" + }, + "routing": { + "rules": [ + { + "ip": [ + "geoip:private" + ], + "outboundTag": "BLOCK", + "type": "field" + }, + { + "type": "field", + "outboundTag": "BLOCK", + "protocol": [ + "bittorrent" + ] + } + ] + }, + "inbounds": [ + { + "tag": "VLESS GRPC REALITY", + "listen": "0.0.0.0", + "port": 8443, + "protocol": "vless", + "settings": { + "clients": [], + "decryption": "none" + }, + "streamSettings": { + "network": "grpc", + "grpcSettings": { + "serviceName": "xyz" + }, + "security": "reality", + "realitySettings": { + "show": false, + "dest": "google.com:443", + "xver": 0, + "serverNames": [ + "" + ], + "privateKey": "", + "SpiderX": "/", + "shortIds": [ + "<16-hexadecimal-characters>" + ] + } + }, + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls", + "quic" + ] + } + } + ], + "outbounds": [ + { + "protocol": "freedom", + "tag": "DIRECT" + }, + { + "protocol": "blackhole", + "tag": "BLOCK" + } + ] +} +``` + +И, наконец, необходимо поднять контейнер. + +```shell +docker compose up -d +``` + +## Создание клиентов + +Далее необходимо создать пользователей для конечных пользователей на российском сервере +и пользователя на сервере вне России для российского сервера. +Далее приложением `v2rayng` подключаемся на сервер вне России и экспортируйте конфиг +`Экспорт всей конфигурации в буфер обмена`. + +## Модификация роутинга + +Далее только на российском сервере необходимо в `xray_config.json` изменить `routing` на: + +``` + "routing": { + "rules": [ + { + "domain": [ + "regexp:\\.ru$", + "regexp:\\.\u0440\u0444$" + ], + "outboundTag": "RU", + "type": "field" + }, + { + "ip": [ + "geoip:ru" + ], + "outboundTag": "RU", + "type": "field" + }, + { + "ip": [ + "geoip:private" + ], + "outboundTag": "BLOCK", + "type": "field" + }, + { + "type": "field", + "outboundTag": "BLOCK", + "protocol": [ + "bittorrent" + ] + } + ] + } +``` + +А `outbounds` на (вместо `proxy` необходимо вставить `outbound` с тегом `proxy` из экспортированного конфига `v2rayng` и заменить тег `proxy` на `DIRECT`): + +``` + "outbounds": [ + + { + "protocol": "freedom", + "tag": "RU" + }, + { + "protocol": "blackhole", + "tag": "BLOCK" + } + ] + +``` + +Готово, теперь пользователи могут подключаться к серверу в России.