## 一、shadowsocks-libev服务的搭建
使用 `shadowsocks-libev` 搭建 Shadowsocks 服务器是一种更轻量且维护更好的方式。以下是详细步骤:
### 步骤 1: 安装 `shadowsocks-libev`
1. **更新软件包索引**:
```bash
sudo apt update
```
2. **安装 `shadowsocks-libev`** :
在 Ubuntu/Debian 上执行以下命令:
```bash
sudo apt install shadowsocks-libev -y
```
### 步骤 2: 配置 Shadowsocks
创建配置文件 `/etc/shadowsocks-libev/config.json`:
```bash
sudo nano /etc/shadowsocks-libev/config.json
```
配置文件内容示例:
```json
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "your_password",
"timeout": 300,
"method": "aes-256-gcm",
"fast_open": false
}
```
### 步骤 3: 启动和启用服务
使用 `systemctl` 启动 Shadowsocks 服务并设置开机自启:
```bash
sudo systemctl start shadowsocks-libev
sudo systemctl enable shadowsocks-libev
```
### 步骤 4: 配置防火墙
确保开放配置文件中指定的 `server_port` 端口:
```bash
sudo ufw allow 8388/tcp
sudo ufw allow 8388/udp
```
### 步骤 5: 验证服务状态
使用以下命令检查 `shadowsocks-libev` 是否正在运行:
```bash
sudo systemctl status shadowsocks-libev
```
### 完成
现在, `shadowsocks-libev` 服务器应该已经在运行,可以通过客户端使用指定的 `server_port` 和密码进行连接,需要注意的是检查服务器的防火墙是否开放了该服务的端口号。
---
---
## 二、shadowsocks和shadowsocks-libev搭建的服务有什么差别
Shadowsocks 和 Shadowsocks-libev 是两个实现同一协议的项目,但它们在实现方式、性能和维护方面有所不同。
### 1. 实现语言和架构
- **Shadowsocks**:
- **实现语言**:用 Python 编写。
- **架构**:基于 Python 脚本的实现,适合轻量级部署和快速开发。
- **适用场景**:适用于资源较少的服务器或小型个人项目,但在高并发和高性能需求场景中可能性能不如 C 实现。
- **Shadowsocks-libev**:
- **实现语言**:用 C 语言编写。
- **架构**:更注重性能优化,采用事件驱动机制,适合高并发场景。
- **适用场景**:更适合需要高性能和低资源占用的服务器,尤其是在带宽需求高或同时处理大量连接的情况下。
### 2. 性能和资源占用
- **Shadowsocks**:
- 由于是用 Python 编写,性能较 `shadowsocks-libev` 稍逊,尤其是在高并发和大规模数据传输时。
- 占用资源较多,特别是在内存和 CPU 使用上。
- **Shadowsocks-libev**:
- 用 C 实现,性能优化更好,占用更少的系统资源。
- 能更好地处理高流量和高并发请求,是服务器端常用的版本。
### 3. 功能和可维护性
- **Shadowsocks**:
- 较容易修改和扩展代码,适合快速定制和开发。
- 社区支持较为有限,可能在长期维护上不如 `shadowsocks-libev`。
- **Shadowsocks-libev**:
- 功能强大且稳定,长期以来获得良好的社区支持和维护。
- 配置选项丰富,支持各种加密方法和高级功能,如 `fast_open`、多用户配置等。
### 4. 安装和部署
- **Shadowsocks**:
- 安装较为简单,可以通过 Python 包管理器 (`pip`) 直接安装,但需要配置 Python 运行环境。
- **Shadowsocks-libev**:
- 安装稍复杂一些,但提供了更多的部署灵活性,支持通过系统包管理器(如 `apt`、`yum`)安装和部署。
### 5. 更新和维护
- **Shadowsocks**:
- Python 版本在过去几年中没有太多更新,可能缺乏对新加密方法或新协议的支持。
- **Shadowsocks-libev**:
- 受到更多开发者和社区的持续关注和更新,功能更全,安全性更高。
### 总结
- **Shadowsocks** 更适合快速测试和轻量级部署,适合小规模使用。
- **Shadowsocks-libev** 更适合生产环境、高并发和高带宽需求的场景,推荐用于需要更高性能的服务器部署。
如果您的需求是长期运行的服务器服务,并且希望在高性能下处理大量连接,`shadowsocks-libev` 是更好的选择。
---
---
## 三、shadowsocks-libev配置项及其缺省值
`shadowsocks-libev` 的配置项有很多,涵盖了从基本的服务器设置到更高级的选项。以下是一些常见的配置项以及它们的缺省值(如果适用):
### 常见配置项及其缺省值
#### 基本配置
1. **`server`**
- **描述**:服务器的 IP 地址,通常设置为 `0.0.0.0` 或 `::`(监听所有接口)。
- **缺省值**:`0.0.0.0`
- **示例**:`"server": "0.0.0.0"`
2. **`server_port`**
- **描述**:服务器监听的端口号。
- **缺省值**:`8388`
- **示例**:`"server_port": 8388`
3. **`local_address`**
- **描述**:本地代理监听的 IP 地址(客户端使用)。
- **缺省值**:`127.0.0.1`
- **示例**:`"local_address": "127.0.0.1"`
4. **`local_port`**
- **描述**:本地代理监听的端口号(客户端使用)。
- **缺省值**:`1080`
- **示例**:`"local_port": 1080`
5. **`password`**
- **描述**:用于加密的密码。
- **缺省值**:`无`
- **示例**:`"password": "your_password"`
6. **`method`**
- **描述**:加密方法。常用的加密方法包括 `aes-256-gcm`、`chacha20-ietf-poly1305`、`aes-256-cfb` 等。
- **缺省值**:`aes-256-cfb`
- **示例**:`"method": "aes-256-gcm"`
7. **`timeout`**
- **描述**:连接的超时时间,单位为秒。
- **缺省值**:`300`
- **示例**:`"timeout": 300`
8. **`fast_open`**
- **描述**:是否启用 TCP 快速打开(TCP Fast Open)。需要内核支持。
- **缺省值**:`false`
- **示例**:`"fast_open": true`
9. **`reuse_port`**
- **描述**:是否启用端口复用,允许多个进程监听相同的端口。
- **缺省值**:`false`
- **示例**:`"reuse_port": true`
10. **`no_delay`**
- **描述**:是否启用 TCP_NODELAY,减少延迟。
- **缺省值**:`true`
- **示例**:`"no_delay": true`
#### 高级配置
1. **`plugin`**
- **描述**:使用插件来增强功能,常见的插件如 `v2ray-plugin`。
- **缺省值**:`无`
- **示例**:`"plugin": "v2ray-plugin"`
2. **`plugin_opts`**
- **描述**:插件选项,取决于插件的配置要求。
- **缺省值**:`无`
- **示例**:`"plugin_opts": "mode=websocket;tls;host=example.com"`
3. **`mode`**
- **描述**:指定服务器处理的流量类型,`tcp_only`、`udp_only`、`tcp_and_udp`。
- **缺省值**:`tcp_only`
- **示例**:`"mode": "tcp_and_udp"`
4. **`workers`**
- **描述**:设置工作线程数以提高并发性能。
- **缺省值**:`1`
- **示例**:`"workers": 4`
5. **`dns`**
- **描述**:指定 DNS 服务器地址,用于解析客户端请求的域名。
- **缺省值**:`无`
- **示例**:`"dns": "8.8.8.8"`
6. **`user`**
- **描述**:指定运行 Shadowsocks 的用户。
- **缺省值**:`无`
- **示例**:`"user": "nobody"`
7. **`mtu`**
- **描述**:设置最大传输单元 (MTU) 大小,适用于 UDP。
- **缺省值**:`1450`
- **示例**:`"mtu": 1350`
8. **`mptcp`**
- **描述**:是否启用多路径 TCP (MPTCP),这需要内核支持。
- **缺省值**:`false`
- **示例**:`"mptcp": true`
#### 配置文件示例
```json
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "your_password",
"method": "aes-256-gcm",
"timeout": 300,
"fast_open": true,
"reuse_port": true,
"no_delay": true,
"plugin": "v2ray-plugin",
"plugin_opts": "mode=websocket;tls;host=example.com",
"mode": "tcp_and_udp",
"workers": 4,
"dns": "8.8.8.8",
"user": "nobody",
"mtu": 1350,
"mptcp": true
}
```
### 总结
- `shadowsocks-libev` 提供了丰富的配置选项,用于优化代理服务的性能和功能。
- 对于大多数用户来说,基本的配置项如 `server`、`server_port`、`password` 和 `method` 是最常用的,而高级配置项如 `plugin`、`workers`、`mode` 则适用于特定需求。
- 如果某些配置项未显式设置,它们会使用默认值。
0 Comments latest
No comments.