详细的 ShadowsocksR 服务端搭建教程

目录

ShadowsocksR 简介

ShadowsocksR (简称 SSR) 是一款开源的代理软件,基于 Shadowsocks 协议进行改进,提供更多的功能特性,如混淆、分流等,广泛应用于科学上网。与传统的 Shadowsocks 相比,ShadowsocksR 在安全性和性能方面都有较大的提升。

ShadowsocksR 服务端是整个科学上网过程中的关键组件,负责提供代理服务。本文将详细介绍如何搭建和配置 ShadowsocksR 服务端,帮助读者更好地使用 ShadowsocksR 进行科学上网。

服务端安装

准备工作

在开始安装 ShadowsocksR 服务端之前,需要准备以下环境:

  • 一台可以访问互联网的服务器,建议使用 Linux 系统,如 CentOS、Ubuntu 等
  • 服务器上已安装 Python 环境,版本 2.6 或 2.7
  • 服务器上已安装 Git 版本控制工具

安装 ShadowsocksR 服务端

  1. 使用 Git 克隆 ShadowsocksR 项目代码:

    bash git clone -b master https://github.com/shadowsocksrr/shadowsocksr.git

  2. 进入 ShadowsocksR 目录:

    bash cd shadowsocksr

  3. 安装 ShadowsocksR 服务端依赖:

    bash pip install -r requirements.txt

  4. 启动 ShadowsocksR 服务端:

    bash python server.py

至此,ShadowsocksR 服务端已成功安装并启动。

服务端配置

配置文件解析

ShadowsocksR 服务端的配置文件位于 config.json 中,主要包含以下配置项:

  • server: 服务器监听的 IP 地址,可设置为 0.0.0.0 监听所有 IP
  • server_port: 服务器监听的端口号
  • password: 客户端连接密码
  • method: 加密方式,如 aes-256-cfbrc4-md5
  • protocol: 协议插件,如 auth_aes128_md5auth_chain_a
  • protocol_param: 协议插件参数
  • obfs: 混淆插件,如 plainhttp_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 中配置 obfsobfs_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-cfbrc4-md5
  • 协议插件: auth_aes128_md5auth_chain_a
  • 混淆插件: http_simpletls1.2_ticket_auth

一般来说,加密方式越强,性能会略有下降,协议和混淆插件越复杂,也会影响性能。可以根据实际需求进行权衡选择。

3. 如何解决 ShadowsocksR 服务端连接断开的问题?

造成 ShadowsocksR 服务端连接断开的原因可能有以下几种:

  1. 服务器资源不足:服务器 CPU、内存、带宽等资源不足,无法支撑过多的客户端连接。可以升级服务器配置或优化服务端性能。
  2. 防火墙阻挡:服务器防火墙可能阻挡了 ShadowsocksR 的端口。需要在防火墙上开放相应端口。
  3. 网络环境不稳定:如果服务器所在的网络环境不稳定,也会导致连接断开。可以选择更稳定的网络环境。
  4. 客户端配置错误:客户端的配置如密码、加密方式等与服务端不一致也会导致连接断开。需要仔细检查客户端配置。

解决连接断开的问题需要从多个角度排查,确保服务器资源充足、防火墙配置正确、网络环境稳定,以及客户端配置正确。

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 服务端,并且每个用户可以使用不同的配置。