# pass 介绍

## 联系 @soga\_boy\_bot 购买

## 功能

| 功能                                                                        |
| ------------------------------------------------------------------------- |
| Unknown 隧道加密协议，支持连接复用                                                     |
| 可选 Golang 版或 Rust 版客户端，Rust 版性能更好，内存占用更低                                  |
| 面板管理，简单方便                                                                 |
| proxy protocol 支持，可将 proxy protocol 隐藏在隧道加密协议中                            |
| 负载均衡、故障转移、备用出站                                                            |
| 用户在线 IP 、连接数记录                                                            |
| tcp+udp，ipv4+ipv6                                                         |
| 端口段转发                                                                     |
| 自动更新转发域名解析                                                                |
| Telegram Bot 节点离线/上线提醒                                                    |
| 证书自动申请与续期                                                                 |
| 自定义tls客户端指纹                                                               |
| 支持 MPTCP                                                                  |
| pass 客户端与 pass 面板 webapi 通信，面板修改即可自动更新到客户端；支持通过代理进行对接，提升私密性，并解决对接网络不通畅问题  |
| 面板只需要一个二进制文件即可运行，一键式、数秒完成安装，无需宝塔、mysql、php 等软件，使用轻便的 sqlite3 文件数据库，迁移备份方便 |
| 更多功能详见面板截图                                                                |

## `入站`类型

| 类型           | 说明                                       |
| ------------ | ---------------------------------------- |
| 直连           | 接收到的数据`原封不动`的传给出站处理                      |
| tls          | 解密 tls 数据后传给出站处理                         |
| ws 加密隧道      | 使用 ws 隧道协议解密数据，将`解密后的数据`传给出站处理           |
| ws+tls 加密隧道  | 使用 ws+tls 隧道协议解密数据，将`解密后的数据`传给出站处理       |
| tcp 加密隧道     | 使用隧道协议解密数据，将`解密后的数据`传给出站处理               |
| tcp+tls 加密隧道 | 使用 tls 隧道协议解密数据，将`解密后的数据`传给出站处理          |
| 隧道代理模式       | 加密隧道均支持开启代理模式，作为隧道跳板，将数据发送到隧道客户端所要求的目标地址 |
| socks5 代理    | socks5 跳板，将数据发送到 socks5 客户端所要求的目标地址      |

## `出站`类型

| 类型           | 说明                                        |
| ------------ | ----------------------------------------- |
| 直连           | 从入站接收到的数据`原封不动`的传给目标地址                    |
| tls          | 从入站接收到的数据使用 tls 加密后传给目标地址                 |
| ws 加密隧道      | 使用`ws 隧道协议`加密从入站接收的数据，将`加密后的数据`传给目标地址     |
| ws+tls 加密隧道  | 使用`ws+tls 隧道协议`加密从入站接收的数据，将`加密后的数据`传给目标地址 |
| tcp 加密隧道     | 使用`隧道协议`加密从入站接收的数据，将`加密后的数据`传给目标地址        |
| tcp+tls 加密隧道 | 使用`tls 隧道协议`加密从入站接收的数据，将`加密后的数据`传给目标地址    |
| 隧道代理模式       | 加密隧道均支持开启代理模式，从入站接收的数据，通过隧道跳板发送至目标地址      |
| socks5 代理    | 从入站接收的数据，通过 socks5 跳板发送至目标地址              |

## 常见场景

{% hint style="info" %}
开启 Proxy Protocol 接收与发送即可传送用户真实 ip
{% endhint %}

{% hint style="info" %}
更多功能场景可根据你的需求自由组合搭配
{% endhint %}

| 功能场景            | 配置方式                                                         |
| --------------- | ------------------------------------------------------------ |
| 端口转发            | `用户`->`直连入站`->`直连出站`->`落地`                                   |
| 端口段转发           | `xx-yy 端口直连入站`->`直连出站 aa-bb 端口`                              |
| pass 隧道中转至 soga | `用户`->`直连入站`->`隧道出站`->(wall)->`soga(内置隧道入站，减少一层转发)`          |
| pass 隧道中转至其他落地  | `用户`->`直连入站`->`隧道出站`->(wall)->`隧道入站`->`直连出站`->`落地`           |
| pass 隧道代理模式     | `用户`->`直连入站`->`隧道出站(指定落地地址)`->(wall)->`隧道入站`->`落地`           |
| socks5 代理       | `用户`->`直连入站`->`socks5 出站(指定落地地址)`->(无墙专线)->`socks5 入站`->`落地` |

## 负载均衡策略

### 示意图

![负载均衡示意图](https://1879477708-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mct-n1O8gD77QQyxudV%2F-MfMbG4Abf2_pPNxYaYF%2F-MfMbOLmk-cc1CeJcO5R%2Fstructure_1.png?alt=media\&token=c77234ef-60ea-476a-b409-3c2eb73c531b)

{% hint style="info" %}
负载均衡策略在配置了多个出站时才有效
{% endhint %}

### 1. 轮询

对于每个连接轮流切换出站，最简单的负载均衡策略

| 额外功能 | 说明                                   |
| ---- | ------------------------------------ |
| 备用出站 | 当所有非备用出站无法使用时使用备用出站，备用出站之间的负载均衡可自行选择 |

### 2. ip\_hash

给每个连接入站的 ip 平均分配到各个出站，适用于需要固定出站的情形

| 额外功能 | 说明                                     |
| ---- | -------------------------------------- |
| 故障转移 | 当用户分配到的出站不可用时，将会尝试使用其他可用的出站并固定，直到原出站可用 |
| 备用出站 | 当所有非备用出站无法使用时使用备用出站，备用出站之间的负载均衡可自行选择   |

### 3. fallback

每次连接都优先使用第一个出站，若第一个出站无法使用，则使用下一个出站。若上一个出站恢复，则重新使用上一个出站，以此类推

| 额外功能 | 说明                                   |
| ---- | ------------------------------------ |
| 备用出站 | 当所有非备用出站无法使用时使用备用出站，备用出站之间的负载均衡可自行选择 |

### 4. 最小连接数

每次优先使用当前连接数最少的出站，适用于连接负载均衡

| 额外功能 | 说明                                   |
| ---- | ------------------------------------ |
| 备用出站 | 当所有非备用出站无法使用时使用备用出站，备用出站之间的负载均衡可自行选择 |

### 主动健康检查机制

每种负载均衡均`默认启用`主动健康检查机制（可关闭），及时发现不可用的出站，并将此出站禁用。若此出站重新变得可用，则启用。

主动健康检查使用 tcp 测试端口连通性，若目标端口 tcp 可连通，则表示可用，否则表示不可用

#### 只有一个出站时

* 主动健康检查不会生效

#### 当有多个出站时

* 每隔 n 秒检查一次
* 已启用的出站若连续 x 次检查失败，禁用此出站，不再参与负载均衡
* 已禁用的出站若连续 y 次检查成功，启用此出站，重新加入负载均衡
* n，x，y 有默认值，可根据需要自行调整
