在Debian 12上搭建Shadowsocks-Rust AEAD-2022服务器

前言

本文主要介绍如何在Debian 12上搭建Shadowsocks-Rust (AEAD-2022)服务器。此教程应当大致也适用于Ubuntu操作系统的VPS。


系统更新与软件安装

例行更新:

1
2
sudo apt update -y
sudo apt upgrade -y

安装snapd(Ubuntu用户大概可以跳过这一步):

1
sudo apt install snapd -y

安装Shadowsocks-Rust:

1
sudo snap install shadowsocks-rust

配置文件

snap渠道安装的Shadowsocks-Rust目前没有提供默认的配置文件,最好是自己新建一个,方便管理。例如:

1
sudo mkdir /var/snap/shadowsocks-rust/common/etc/shadowsocks-rust

再新建并打开一个配置文件。为了对新手友好此处使用nano,vim完全没问题:

1
sudo nano /var/snap/shadowsocsk-rust/common/etc/shadowsocks-rust/config.json

以下是一个Shadowsocks-Rust的配置文件示例:

1
2
3
4
5
6
7
8
9
10
{
"server":"0.0.0.0",
"server_port": 8388,
"local_address": "127.0.0.1",
"local_port": 1080,
"password": "KlPeFQT7OxHeI2rQMDdF8g==",
"method": "2022-blake3-aes-128-gcm",
"timeout": 300,
"mode": "tcp_and_udp"
}

具体参数方面的讲解此处略带一下,之前Shadowsocks-Libev的搭建教程中已经提及。

server_port看自己心情修改,不太推荐用8388,然后也别填个22,443之类的和自己现有的服务冲突了之类的就行。客户端和服务端应该保持一致。

此处着重讲解更新的加密算法和密码。

加密算法和密码(重点)

Shadowsocks-Rust对AEAD-2022的实现主要引入了三个新的加密算法:

2022-blake3-aes-128-gcm2022-blake3-aes-256-gcm2022-blake3-chacha20-poly1305

具体的安全性细节不再赘述,详情可见 SIP022 AEAD-2022 Ciphers | Shadowsocks

本文主要讲解在配置层面上引入的限制,具体而言,这三种加密算法现在不接受ASCII编码的,任意长度的字符串作为密码("password")了,而是需要指定长度的,Base64编码的字符串作为密钥才能够正常运转。

2022-blake3-aes-128-gcm 需要 16 字节的,Base64编码的随机数。

2022-blake3-aes-256-gcm2022-blake3-chacha20-poly1305 需要 32 字节的,Base64编码的随机数。

快速生成合法格式的密码

Linux通常预装了OpenSSL,那么此处可以直接使用OpenSSL命令来生成所需的密钥。例如,假设用户希望使用 2022-blake3-aes-128-gcm 作为加密算法,那么就可以使用:

1
openssl rand -base64 16

来生成一个合法的密钥。

类似地,如果用户决定使用 2022-blake3-aes-256-gcm2022-blake3-chacha20-poly1305 ,则可以使用:

1
openssl rand -base64 32

来生成一个合法的密钥。

把生成的密钥复制到配置文件中的"password"键对应的值当中即可。


运行与维护

启动Shadowsocks-Server服务,并允许开机自启动:

1
sudo snap start --enable shadowsocks-rust.ssserver-daemon

可以通过以下指令来查看服务状态:

1
sudo snap services shadowsocks-rust.ssserver-daemon

注意此处如果看到一个inactive,那么多半是配置文件写错了,注意检查一下JSON格式,或者是不是密码的格式有误等问题。这是用了AEAD-2022的一个常见问题,而使用AEAD-2017(例如普通的AES-128-GCM等加密算法)则不会面临这个问题,但是会牺牲一些安全性。

可以通过这条命令查看运行日志,便于诊断问题:

1
sudo snap logs shadowsocks-rust.ssserver-daemon

此外,如果系统开启了UFW,别忘了开放Shadowsocks服务监听的端口,例如:

1
2
3
sudo ufw allow ssh
sudo ufw allow 8388
sudo ufw reload

通过指令查询ufw的工作状态:

1
sudo ufw status

另外,此处是以Vultr,Digital Ocean,Bandwagon等相对简单的VPS作为例子,如果使用的是阿里云香港ECS等,则要留意一下服务器的安全组,也是同样要允许访问ssserver监听的端口。


结语

本文简单介绍了如何在Debian操作系统上部署一台Shadowsocks-Rust AEAD-2022服务器。

如果你觉得文章写得还不错,可以赏作者一杯咖啡喝。感谢支持!THYzrcoMQf7d7wzGu1PvDraTef87abSv9V