SS 服务器搭建

SS 服务器搭建

这篇笔记记录了在 Linux VPS 上搭建一个最小化 Shadowsocks 服务器的过程。不同发行版和软件包版本的命令可能略有差异,因此在修改生产配置之前,请先在服务器上确认名称和路径。

1. 准备服务器

从一台干净的 VPS 开始,使用受支持的 Linux 发行版,并确保有 SSH 访问权限和一个普通的 sudo 用户。

先更新软件包索引:

sudo apt update
sudo apt upgrade

安装用于检查服务和防火墙的基础工具:

sudo apt install curl vim ufw

检查服务器的公网 IP 地址:

curl -4 ifconfig.me

2. 安装 Shadowsocks

在许多 Debian 或 Ubuntu 系统上,可以通过 shadowsocks-libev 软件包安装:

sudo apt install shadowsocks-libev

如果发行版的软件仓库中没有该软件包,请使用当前版本的官方软件源或构建说明。除非已经审查过随机安装脚本的具体行为,否则应避免使用它们。

确认二进制文件存在:

ss-server -h

3. 配置服务器

创建或编辑服务器配置文件。常见路径为:

sudo vim /etc/shadowsocks-libev/config.json

示例配置:

{
  "server": "0.0.0.0",
  "server_port": 8388,
  "password": "replace-with-a-long-random-password",
  "timeout": 300,
  "method": "chacha20-ietf-poly1305",
  "fast_open": false,
  "mode": "tcp_and_udp"
}

使用一个较长的随机密码。method 的值应为已安装版本支持的加密方法;在可用时,优先使用 chacha20-ietf-poly1305 这类认证加密方法。

如有需要,可在本地生成密码:

openssl rand -base64 32

4. 打开防火墙

如果使用 ufw,在启用它之前先允许 SSH:

sudo ufw allow OpenSSH

然后允许 Shadowsocks 端口。端口需与 config.json 中的配置一致:

sudo ufw allow 8388/tcp
sudo ufw allow 8388/udp
sudo ufw enable
sudo ufw status

如果 VPS 服务商有独立的防火墙面板,也需要在那里打开相同的 TCP 和 UDP 端口。

5. 启动并启用服务

服务名称可能因软件包而异。在安装了 shadowsocks-libev 的 Debian 和 Ubuntu 上,可以尝试:

sudo systemctl enable shadowsocks-libev
sudo systemctl restart shadowsocks-libev
sudo systemctl status shadowsocks-libev

如果服务无法启动,请查看日志:

journalctl -u shadowsocks-libev --no-pager -n 100

确认服务器正在监听端口:

sudo ss -lntup | grep 8388

6. 客户端设置

使用与服务器相同的值配置客户端:

  • 服务器地址:VPS 的公网 IP 或域名
  • 端口:8388,或你配置的自定义端口
  • 密码:生成的密码
  • 加密方法:chacha20-ietf-poly1305,或 config.json 中的方法
  • 模式:TCP 和 UDP,如果客户端支持

使用浏览器或命令行客户端进行测试。如果连接失败,请按顺序检查以下项目:

  1. 服务器进程正在运行。
  2. 端口已在操作系统防火墙和 VPS 服务商防火墙中打开。
  3. 客户端的方法、密码和端口与服务器配置完全一致。
  4. 服务器 IP 地址正确。
  5. 服务器日志中没有 JSON 语法错误或绑定错误。

7. 维护说明

保持系统更新:

sudo apt update
sudo apt upgrade
sudo systemctl restart shadowsocks-libev

修改 config.json 后,在重启前先验证 JSON:

python3 -m json.tool /etc/shadowsocks-libev/config.json

然后重启服务:

sudo systemctl restart shadowsocks-libev

出于安全考虑,避免复用密码,关闭未使用的端口,并在不再需要时删除旧的客户端配置。