# Режимы работы Xray

## Режим одного сервера

Как и в случае с другими прокси-инструментами, вам понадобится сервер с настроенным Xray, а затем установить и настроить клиент Xray на вашем устройстве, после чего вы сможете свободно пользоваться Интернетом.

```mermaid
graph LR;
A(ПК) -.- B(Брандмауэр);
B -.-> C(Внешний сайт);
A --> D(Xray/VPS);
D --> C;
A --> E(Внутренний сайт);
```

Один сервер Xray может одновременно обслуживать несколько устройств, использующих разные протоколы проксирования. При правильной настройке Xray может распознавать и различать трафик, который нужно проксировать, и трафик, который можно отправлять напрямую, без проксирования.

## Режим моста

Если вы не хотите настраивать маршрутизацию на каждом устройстве, вы можете настроить промежуточный сервер, который будет принимать весь трафик от клиентов и перенаправлять его в зависимости от настроек.

```mermaid
graph LR;
A(ПК) -.-> B(Брандмауэр);
B -.-> C(Внешний сайт);
A --> D(Внутренний VPS);
D --> E(Внешний VPS);
E --> C;
D --> F(Внутренний сайт);
```

## Принцип работы

Перед настройкой Xray давайте рассмотрим, как он работает. Ниже представлена схема внутреннего устройства одного процесса Xray. Несколько процессов Xray работают независимо друг от друга.

```mermaid
graph LR;
A1(inbound) --> D(Dispatcher / Router / DNS);
A2(inbound) --> D;
A3(inbound) --> D;
A4(inbound) --> D;
D --> B1(outbound);
D --> B2(outbound);
D --> B3(outbound);
D --> B4(outbound);
```

- Для нормальной работы необходимо настроить как минимум одно входящее соединение (Inbound) и одно исходящее соединение (Outbound).
  - Входящее соединение отвечает за связь с клиентом (например, браузером):
    - Входящее соединение обычно можно настроить с аутентификацией пользователя, например, с использованием ID и пароля;
    - После получения данных входящее соединение передает их диспетчеру (Dispatcher) для распределения.
  - Исходящее соединение отвечает за отправку данных на сервер, например, на другой Xray, работающий на другом хосте.
- При наличии нескольких исходящих соединений можно настроить маршрутизацию (Routing) для указания, какое исходящее соединение должно использоваться для определенного типа трафика.
  - При необходимости маршрутизатор обращается к DNS для получения дополнительной информации для принятия решения.
