mirror of
https://github.com/fruworg/fruworg.github.io.git
synced 2025-07-12 15:03:57 +03:00
Create rknb-marzban-routing.md
This commit is contained in:
215
content/posts/rknb-marzban-routing.md
Normal file
215
content/posts/rknb-marzban-routing.md
Normal file
@ -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://<fqdn>
|
||||||
|
SUDO_USERNAME = "admin"
|
||||||
|
SUDO_PASSWORD = "<password>"
|
||||||
|
UVICORN_SSL_CERTFILE = "/tls/<fqdn>.crt"
|
||||||
|
UVICORN_SSL_KEYFILE = "/tls/<fqdn>.key"
|
||||||
|
DASHBOARD_PATH = "/<secret-uri>/"
|
||||||
|
XRAY_JSON = "/var/lib/marzban/xray_config.json"
|
||||||
|
XRAY_SUBSCRIPTION_URL_PREFIX = "https://<fqdn>"
|
||||||
|
```
|
||||||
|
|
||||||
|
Для полученя `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": [
|
||||||
|
"<fqdn>"
|
||||||
|
],
|
||||||
|
"privateKey": "<xray-private-key>",
|
||||||
|
"SpiderX": "/<uuid>",
|
||||||
|
"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": [
|
||||||
|
<proxy>
|
||||||
|
{
|
||||||
|
"protocol": "freedom",
|
||||||
|
"tag": "RU"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"protocol": "blackhole",
|
||||||
|
"tag": "BLOCK"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Готово, теперь пользователи могут подключаться к серверу в России.
|
Reference in New Issue
Block a user