← 回到 Notes
在 AWS Ubuntu 上搭一个 Shadowsocks 服务
从开端口到 BBR 提速,记录一份从零起步的完整流程,给以后的自己当备忘。
写下来主要是以后自己再开机器时不用重新翻资料。整个流程分两部分:先在 AWS 把端口和软件配好,然后做点性能调优。
第一步:准备 EC2 实例 + 开放端口
在 AWS EC2 控制台启动一台新实例,OS 选 Ubuntu 24.04 LTS(或 22.04 LTS),包管理最简单友好。
实例起来后到 安全组(Security Group) 编辑入站规则,这是最容易踩坑的一步:
- 类型:自定义 TCP
- 端口:你打算用的端口(不建议用默认 8388,太容易被主动探测)
- 来源:
0.0.0.0/0
如果想要 UDP 中继更好的性能(QUIC、游戏、视频通话等),同一端口再加一条 自定义 UDP 规则。
第二步:装 shadowsocks-libev
SSH 进 EC2 实例:
sudo apt update
sudo apt install shadowsocks-libev -y
-libev 是轻量级 C 实现,跑在 1 vCPU 的 EC2 上轻松。
第三步:写配置
sudo nano /etc/shadowsocks-libev/config.json
清空内容粘进去:
{
"server": "0.0.0.0",
"mode": "tcp_and_udp",
"server_port": 你的端口,
"local_port": 1080,
"password": "在这里填一个长随机串",
"timeout": 86400,
"method": "chacha20-ietf-poly1305"
}
几个要点:
server_port必须跟安全组里开的端口完全一致method优先chacha20-ietf-poly1305(手机端性能优于 AES)或aes-256-gcm- 密码自己生成,别照抄网上的示例密码:
openssl rand -base64 24
# 或
head -c 24 /dev/urandom | base64
Ctrl+O 保存、Enter 确认、Ctrl+X 退出。
第四步:启动 + 开机自启
sudo systemctl restart shadowsocks-libev
sudo systemctl enable shadowsocks-libev
sudo systemctl status shadowsocks-libev
最后一条看到绿色 active (running) = 成功。
第五步:Shadowrocket 客户端配置
| 字段 | 值 |
|---|---|
| 类型 | Shadowsocks |
| 服务器 | EC2 公网 IP |
| 端口 | 你设的端口 |
| 密码 | config.json 里的密码 |
| 算法 | chacha20-ietf-poly1305 |
完成后回首页打开顶部连接开关即可。
加分项:开启 TCP BBR(强烈建议)
Ubuntu 默认拥塞控制算法在跨国高延迟链路下表现差,开 Google 的 BBR 通常能把吞吐量提一个量级。
sudo bash -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
sudo bash -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
sudo sysctl -p
最后一条执行完即生效,不用重启。验证:
sysctl net.ipv4.tcp_congestion_control
# 期望输出: net.ipv4.tcp_congestion_control = bbr
一些值得做的安全收尾
跑通是一回事,长期挂在公网是另一回事。建议再做:
- 换非默认端口:不要 8388
- 装 fail2ban 屏蔽暴力扫描:
sudo apt install fail2ban -y - 关闭 SSH 密码登录,只允许 key 登录(避免主机被爆破)
- 定期看
journalctl -u shadowsocks-libev,留意异常连接
个人笔记里写真实密码可以,但永远不要把密码 commit 到任何公开仓库。这一篇里的密码字段都是占位符。