配置 WebSocket over TLS 的 Shadowsocks 代理

在Ubuntu服务器上配置WebSocket over TLS的shadowsocks代理。以下是详细的步骤:

1. 安装必要的软件包

sudo apt update
sudo apt install -y shadowsocks-libev nginx certbot python3-certbot-nginx

2. 安装v2ray-plugin插件(提供WebSocket支持)

# 下载最新的v2ray-plugin
wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz
tar -xf v2ray-plugin-linux-amd64-v1.3.1.tar.gz
sudo mv v2ray-plugin_linux_amd64 /usr/local/bin/v2ray-plugin
sudo chmod +x /usr/local/bin/v2ray-plugin

3. 配置shadowsocks-libev

sudo nano /etc/shadowsocks-libev/config.json

填入以下内容(请修改密码):

{
  "server":"0.0.0.0",
  "server_port":8388,
  "password":"设置一个强密码",
  "timeout":300,
  "method":"chacha20-ietf-poly1305",
  "plugin":"v2ray-plugin",
  "plugin_opts":"server;path=/ws"
}

配置修改完成后,需要重启服务:

sudo systemctl restart shadowsocks-libev

确认服务状态:

sudo systemctl status shadowsocks-libev

4. 申请SSL证书

确保您的域名已正确指向服务器IP(通过A记录)。

替换下面的yourdomain.com为您的实际域名:

sudo certbot --nginx -d yourdomain.com

5. 配置Nginx反向代理

sudo nano /etc/nginx/sites-available/default

填入以下内容(注意将配置中的yourdomain.com替换为您的实际域名):

server {
    listen 443 ssl;
    server_name yourdomain.com;
    
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    
    #ssl_protocols TLSv1.2 TLSv1.3;
    #ssl_prefer_server_ciphers on;
    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256;
    
    location /ws {
        proxy_pass http://127.0.0.1:8388;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        # 模拟常见网站的缓存控制头
        proxy_set_header Cache-Control no-store;
        proxy_set_header Pragma no-cache;
    }
    
    # 添加假网站内容增加真实性
    location / {
        root /var/www/html;
        index index.html;
    }
}

6. 启用配置并重启服务

验证配置是否有效:

sudo nginx -t

如果测试通过,重启Nginx服务:

sudo systemctl restart nginx

7. 客户端配置

在客户端上,您需要安装shadowsocks客户端和v2ray-plugin插件,配置如下:

{
  "server":"your.domain.com",
  "server_port":443,
  "password":"您设置的强密码",
  "method":"chacha20-ietf-poly1305",
  "plugin":"v2ray-plugin",
  "plugin_opts":"tls;host=your.domain.com;path=/ws"
}

下是在Shadowrocket中配置您新设置的代理服务的步骤:

添加服务器配置

  1. 打开Shadowrocket应用
    • 点击右上角的"+"号添加新服务器
  2. 填写基本信息:
    • 类型:选择"Shadowsocks"
    • 地址:输入您的域名(如yourdomain.com
    • 端口:443
    • 密码:输入您在服务器配置中设置的密码
    • 加密方法:选择"chacha20-ietf-poly1305"(与服务器匹配)
  3. 配置插件:
    • 插件:选择"v2ray-plugin"
    • 插件选项:点击进入配置界面,设置以下参数:
      • Transport Mode:选择"websocket"
      • Transport Path:输入"/ws"(与Nginx配置中的路径匹配)
      • TLS:启用
      • Host:输入您的域名
      • 允许不安全连接:关闭
  4. 其他设置:
    • 备注(可选):输入易于识别的名称
    • 勾选"通过代理方式验证"(推荐)

Windows客户端的Shadowsocks配置指南

要在Windows上配置Shadowsocks客户端连接到您的WebSocket over TLS服务器,请按照以下步骤操作:

1. 下载并安装Shadowsocks-Windows

  1. 访问Shadowsocks-Windows的GitHub发布页面
  2. 下载最新版本的Shadowsocks-x.x.x.zip
  3. 解压到您喜欢的位置

2. 下载v2ray-plugin插件

  1. 访问v2ray-plugin的GitHub发布页面
  2. 下载适用于Windows的版本,如v2ray-plugin-windows-amd64-v1.3.1.tar.gz
  3. 解压文件,得到v2ray-plugin_windows_amd64.exe
  4. 将此文件放入Shadowsocks安装目录下

3. 配置Shadowsocks客户端

  1. 启动Shadowsocks客户端
  2. 右键点击系统托盘中的Shadowsocks图标,选择"服务器" -> "编辑服务器..."
  3. 点击"添加"按钮,填写以下信息:
    • 服务器地址: your.domain.com(您的域名)
    • 服务器端口: 443
    • 密码: 您在服务器上设置的密码
    • 加密: chacha20-ietf-poly1305
    • 插件程序: v2ray-plugin_windows_amd64.exev2ray-plugin(根据您放置的文件名)
    • 插件选项: tls;host=your.domain.com;path=/ws
  4. 点击"确定"保存配置

4. 连接到服务器

  1. 右键点击系统托盘中的Shadowsocks图标
  2. 在"服务器"菜单中选择您刚才配置的服务器
  3. 在主菜单中选择"启用系统代理"

在 Ubuntu 服务器上启用 BBR 加速

BBR (Bottleneck Bandwidth and RTT) 是 Google 开发的一种 TCP 拥塞控制算法,可以显著提高网络吞吐量和减少延迟。以下是在 Ubuntu 服务器上启用 BBR 的详细步骤:

1. 检查内核版本

BBR 需要 Linux 内核版本 4.9 或更高。首先检查您的内核版本:

uname -r

如果版本低于 4.9,需要先升级内核。但大多数现代 Ubuntu 发行版(18.04 及以上)已经满足要求。

2. 启用 BBR

方法一:使用 sysctl 命令(推荐)

# 修改系统配置
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

# 重启系统(可选但推荐)
sudo reboot

方法二:使用命令行直接启用(无需重启)

sudo modprobe tcp_bbr
sudo sh -c 'echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf'
sudo sh -c 'echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf'
sudo sysctl -p

3. 验证 BBR 是否已启用

重启后,执行以下命令验证 BBR 是否已成功启用:

# 检查 BBR 是否在可用的拥塞控制算法列表中
sysctl net.ipv4.tcp_available_congestion_control

# 检查当前使用的拥塞控制算法
sysctl net.ipv4.tcp_congestion_control

# 检查是否正在使用 fq 队列调度算法
sysctl net.core.default_qdisc

# 验证 BBR 模块是否已加载
lsmod | grep bbr

如果 BBR 已成功启用,您应该看到类似以下的输出:

net.ipv4.tcp_available_congestion_control = reno cubic bbr
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq

并且 lsmod | grep bbr 应该会显示 tcp_bbr 模块。

4. 调整系统参数(可选,用于进一步优化)

sudo bash -c 'cat >> /etc/sysctl.conf << EOF
# 增大最大打开文件数量
fs.file-max = 1000000
# 允许更多的 TIME_WAIT 状态连接
net.ipv4.tcp_max_tw_buckets = 6000000
# 提高 TCP 最大缓冲区大小
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
# 提高 TCP 自动调整缓冲区限制
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
EOF'

# 应用设置
sudo sysctl -p

启用 BBR 后,您的网络性能应该会有所提升,特别是在处理 Shadowsocks 等需要大量网络传输的应用时。这对于改善网络延迟和吞吐量特别有帮助。

故障排除

检查服务状态:

sudo systemctl status shadowsocks-libev

查看详细的日志来确定问题所在:

# 查看详细错误日志
sudo journalctl -u shadowsocks-libev -n 50

JSON格式中的语法错误是常见的问题。缺少逗号在JSON中会导致解析失败,从而使服务无法启动。

请修复您的config.json文件,确保每个键值对之间都有逗号分隔(最后一个键值对除外)。

例如,您的错误可能类似于:

{
  "server":"0.0.0.0",
  "server_port":8388,
  "password":"您的密码",
  "timeout":300,
  "method":"chacha20-ietf-poly1305"  // 这里缺少逗号
  "plugin":"v2ray-plugin",
  "plugin_opts":"server;tls;host=your.domain.com;path=/ws"
}

正确的格式应该是:

{
  "server":"0.0.0.0",
  "server_port":8388,
  "password":"您的密码",
  "timeout":300,
  "method":"chacha20-ietf-poly1305",  // 添加了逗号
  "plugin":"v2ray-plugin",
  "plugin_opts":"server;tls;host=your.domain.com;path=/ws"
}

修复后,请重新启动服务:

sudo systemctl restart shadowsocks-libev

然后检查服务状态:

sudo systemctl status shadowsocks-libev

(以上所有内容由 Claude AI 生成)


* 加入社群平台:在新浪微博哔哩哔哩关注我们的账户。也可以加入聊天群

订阅 newsletter

在下面填好你的 E-mail,有新的贴文便会发到你的电子邮箱。

* 为必填项

Intuit Mailchimp

* 中国网络下提交这一表单可能会异常缓慢,去这个页面→提交订阅,会快很多。