在美国云主机(例如 AWS、Vultr、Linode)上部署 Shadowsocks 的常规步骤是:创建实例、开放所需端口、安装 Python/Go 版本服务端、配置密码与加密方式、启动并设置开机自启。推荐使用系统包或 pip/apt 安装:ss-server(Python)或 shadowsocks-libev(C 版性能更好)。
必须关注的有:服务器 IP、监听端口、密码、加密方式(如 aes-256-gcm)、超时值与是否启用混淆(obfs)或插件。配置文件建议使用 JSON/YAML,并限制本地访问来源。
安装 shadowsocks-libev:apt update && apt install -y shadowsocks-libev;启动示例可在 /etc/shadowsocks-libev/config.json 中设置并用 systemctl 启动。
务必设置强密码并更新内核安全策略,避免使用默认端口以降低被扫描风险。
常见端口包括 8388、443、8443、4433 等。选择端口时考虑 ISP/云厂商是否会限速或封锁常见端口,使用 443 或 8443 可提高通过性但要避免与已有 HTTPS 服务冲突。防火墙(ufw/iptables)需允许对应端口的入站 TCP/UDP 流量。
ufw:ufw allow 8388/tcp; ufw allow 8388/udp。若使用 443 做 ss 端口,请确保 HTTPS 服务不冲突,并在安全组(云平台)中同步放行。
若服务器位于 NAT 后或使用负载均衡,请在负载均衡层做端口映射并保持会话粘性,以免连接不稳定。
结合 fail2ban 限制异常连接速率,减少被扫描与爆破风险。
Shadowsocks 支持多种加密:aead 系列(aes-*-gcm, chacha20-ietf-poly1305)是推荐的现代选择,兼容性好且性能优。老式 stream cipher(rc4-md5 等)虽兼容旧客户端,但不安全。混淆插件(obfs, v2ray-plugin)可提高通过深度包检测的能力,但客户端/服务端必须版本匹配。
如果客户端显示“method not supported”或无法握手,请检查服务端与客户端的 加密方式、插件名称及版本是否一致,以及是否在配置中启用了插件参数。
保持服务端与主要客户端(Windows/Mac/Android/iOS)使用 shadowsocks-libev 或官方实现的同系版本,避免混合老旧实现。
使用 v2ray-plugin 时,确保传输层(tls/websocket)配置一致,并在服务端启用相应证书或路径。
多用户可通过多端口单用户(每个端口一个密码)或使用服务端多用户模式(如 shadowsocks-libev 的 users 配置)实现。推荐使用多端口对应不同加密/插件组合,以便兼容不同客户端和绕过不同网络策略。
在配置文件中列出多个端口并分配独立密码与加密方式;结合 iptables 或 nftables 限速不同端口,避免单个用户占满带宽。
使用脚本或 Ansible 管理多用户配置,结合日志和流量统计工具(vnStat、iftop)监控各端口流量。
为每个用户设置独立账号与带宽限额,并定期轮换密码与审计访问日志。
排查顺序通常为:检查服务是否运行、端口是否开放、防火墙/安全组规则、加密/插件是否匹配、客户端网络环境。使用 netstat/ss 工具确认监听端口,使用 telnet/nc 测试连通性。
shadowsocks-libev 可通过 journalctl 查看:journalctl -u shadowsocks-libev -f。Python 版可在启动时开启 verbose 模式输出详细日志。检查是否有“remote host closed connection”或加密协商失败的错误。
使用 tcpdump 抓包确认握手包是否到达,分析是否被中间盒(ISP/防火墙)篡改或丢弃。
如发现端口被封锁,尝试更换端口或启用 TLS/websocket 插件;如证书问题导致失败,检查证书链与 SNI 配置。