目录
ShadowsocksR 简介
ShadowsocksR (简称 SSR) 是一款开源的代理软件,基于 Shadowsocks 协议进行改进,提供更多的功能特性,如混淆、分流等,广泛应用于科学上网。与传统的 Shadowsocks 相比,ShadowsocksR 在安全性和性能方面都有较大的提升。
ShadowsocksR 服务端是整个科学上网过程中的关键组件,负责提供代理服务。本文将详细介绍如何搭建和配置 ShadowsocksR 服务端,帮助读者更好地使用 ShadowsocksR 进行科学上网。
服务端安装
准备工作
在开始安装 ShadowsocksR 服务端之前,需要准备以下环境:
- 一台可以访问互联网的服务器,建议使用 Linux 系统,如 CentOS、Ubuntu 等
- 服务器上已安装 Python 环境,版本 2.6 或 2.7
- 服务器上已安装 Git 版本控制工具
安装 ShadowsocksR 服务端
-
使用 Git 克隆 ShadowsocksR 项目代码:
bash git clone -b master https://github.com/shadowsocksrr/shadowsocksr.git
-
进入 ShadowsocksR 目录:
bash cd shadowsocksr
-
安装 ShadowsocksR 服务端依赖:
bash pip install -r requirements.txt
-
启动 ShadowsocksR 服务端:
bash python server.py
至此,ShadowsocksR 服务端已成功安装并启动。
服务端配置
配置文件解析
ShadowsocksR 服务端的配置文件位于 config.json
中,主要包含以下配置项:
server
: 服务器监听的 IP 地址,可设置为0.0.0.0
监听所有 IPserver_port
: 服务器监听的端口号password
: 客户端连接密码method
: 加密方式,如aes-256-cfb
、rc4-md5
等protocol
: 协议插件,如auth_aes128_md5
、auth_chain_a
等protocol_param
: 协议插件参数obfs
: 混淆插件,如plain
、http_simple
等obfs_param
: 混淆插件参数timeout
: 连接超时时间,单位秒
多用户配置
如果需要支持多用户连接,可在 config.json
中添加 users
字段,每个用户配置一个对象,如下所示: “users”: [ { “user1”: { “password”: “password1”, “method”: “aes-256-cfb”, “protocol”: “auth_aes128_md5”, “obfs”: “http_simple”, “obfs_param”: “www.example.com” } }, { “user2”: { “password”: “password2”, “method”: “rc4-md5”, “protocol”: “auth_chain_a”, “obfs”: “tls1.2_ticket_auth”, “obfs_param”: “www.example.com” } } ]
混淆插件配置
ShadowsocksR 提供了多种混淆插件,可以有效防御流量特征识别,增强安全性。常用的混淆插件包括:
plain
: 不使用混淆http_simple
: 伪装成普通 HTTP 流量http_post
: 伪装成 HTTP POST 请求tls1.2_ticket_auth
: 伪装成 TLS 1.2 流量
在 config.json
中配置 obfs
和 obfs_param
即可启用混淆功能。
服务端优化
系统内核优化
为了提高 ShadowsocksR 服务端的性能,可以对系统内核进行优化。以 CentOS 7 为例,可执行以下命令:
bash
vi /etc/sysctl.conf
net.core.somaxconn = 32768 net.core.netdev_max_backlog = 65536 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30
sysctl -p
BBR 加速
BBR (Bottleneck Bandwidth and Round-trip propagation time) 是 Google 开发的 TCP 拥塞控制算法,可以有效提高网络传输速度。
可以执行以下命令安装并启用 BBR:
bash
yum update kernel -y
yum install kernel-devel -y
echo “net.core.default_qdisc=fq” >> /etc/sysctl.conf echo “net.ipv4.tcp_congestion_control=bbr” >> /etc/sysctl.conf sysctl -p
其他优化
-
开启 TCP Fast Open 功能:
bash echo “net.ipv4.tcp_fastopen = 3” >> /etc/sysctl.conf sysctl -p
-
调整文件描述符限制:
bash echo “* soft nofile 65536” >> /etc/security/limits.conf echo “* hard nofile 65536” >> /etc/security/limits.conf
-
优化 TCP 连接参数:
bash echo “net.ipv4.tcp_max_syn_backlog = 8192” >> /etc/sysctl.conf echo “net.ipv4.tcp_synack_retries = 2” >> /etc/sysctl.conf echo “net.ipv4.tcp_syn_retries = 2” >> /etc/sysctl.conf sysctl -p
FAQ
1. ShadowsocksR 和 Shadowsocks 有什么区别?
ShadowsocksR (SSR) 是基于 Shadowsocks 协议进行改进和扩展的代理软件。相比于原版 Shadowsocks,SSR 提供了更多的功能特性,如混淆、分流等,在安全性和性能方面都有较大提升。总的来说,SSR 是 Shadowsocks 的增强版本,更适合科学上网的需求。
2. 如何选择合适的加密方式和协议?
加密方式和协议的选择需要平衡安全性和性能,常见的选择如下:
- 加密方式:
aes-256-cfb
、rc4-md5
等 - 协议插件:
auth_aes128_md5
、auth_chain_a
等 - 混淆插件:
http_simple
、tls1.2_ticket_auth
等
一般来说,加密方式越强,性能会略有下降,协议和混淆插件越复杂,也会影响性能。可以根据实际需求进行权衡选择。
3. 如何解决 ShadowsocksR 服务端连接断开的问题?
造成 ShadowsocksR 服务端连接断开的原因可能有以下几种:
- 服务器资源不足:服务器 CPU、内存、带宽等资源不足,无法支撑过多的客户端连接。可以升级服务器配置或优化服务端性能。
- 防火墙阻挡:服务器防火墙可能阻挡了 ShadowsocksR 的端口。需要在防火墙上开放相应端口。
- 网络环境不稳定:如果服务器所在的网络环境不稳定,也会导致连接断开。可以选择更稳定的网络环境。
- 客户端配置错误:客户端的配置如密码、加密方式等与服务端不一致也会导致连接断开。需要仔细检查客户端配置。
解决连接断开的问题需要从多个角度排查,确保服务器资源充足、防火墙配置正确、网络环境稳定,以及客户端配置正确。
4. 如何在服务端启用 TCP Fast Open 功能?
TCP Fast Open (TFO) 是一种 TCP 优化技术,可以在三次握手的基础上减少一次往返时间,提高连接建立速度。
在 CentOS 7 系统上,可以执行以下命令启用 TCP Fast Open:
bash echo “net.ipv4.tcp_fastopen = 3” >> /etc/sysctl.conf sysctl -p
将 net.ipv4.tcp_fastopen
设置为 3
即可开启 TCP Fast Open 功能。
需要注意的是,启用 TCP Fast Open 需要客户端也支持该功能,才能真正发挥作用。部分客户端可能需要单独配置开启 TCP Fast Open。
5. ShadowsocksR 服务端如何实现多用户管理?
ShadowsocksR 服务端支持多用户管理,可以在 config.json
配置文件中添加 users
字段来实现。每个用户可以设置独立的密码、加密方式、协议和混淆插件等。
示例配置如下: “users”: [ { “user1”: { “password”: “password1”, “method”: “aes-256-cfb”, “protocol”: “auth_aes128_md5”, “obfs”: “http_simple”, “obfs_param”: “www.example.com” } }, { “user2”: { “password”: “password2”, “method”: “rc4-md5”, “protocol”: “auth_chain_a”, “obfs”: “tls1.2_ticket_auth”, “obfs_param”: “www.example.com” } } ]
这样就可以支持多个用户同时连接 ShadowsocksR 服务端,并且每个用户可以使用不同的配置。