详细的 ShadowsocksR 服务端搭建教程

目录

  1. ShadowsocksR 简介
  2. 服务端安装
  3. 服务端配置
  4. 服务端优化
  5. FAQ

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

正文完