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