# Xray 的工作模式

## 单服务器模式

与其它的网络代理工具一样，你需要一台配置了 Xray 的服务器，然后在自己的设备上安装并配置 Xray 客户端，然后即可流畅地访问互联网。

```mermaid
graph LR;
A(PC) -.- B(防火墙);
B -.-> C(墙外网站);
A --> D(Xray/VPS);
D --> C;
A --> E(墙内网站);
```

一个 Xray 服务器可同时支持多台设备使用不同的代理协议访问。同时，经过合理的配置，Xray 可以识别并区分需要代理以及不需要代理的流量，直连的流量不需要绕路。

## 桥接模式

如果你不想在每一台设备上都配置路由，你也可以设置一台中转服务器，用于接收客户端发来的所有流量，然后在服务器中进行转发判断。

```mermaid
graph LR;
A(PC) -.-> B(防火墙);
B -.-> C(墙外网站);
A --> D(墙内 VPS);
D --> E(墙外 VPS);
E --> C;
D --> F(墙内网站);
```

## 工作原理

在配置 Xray 之前，不妨先来看一下 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 以获取更多信息来进行判断。
