“SS:服务端(插件)”的版本间差异

来自Wikioe
跳到导航 跳到搜索
第27行: 第27行:
   
   
  参考:
  参考:
  1、[https://bingliang.me/posts/2019-03-20-shadowsocks-libev-with-v2ray-plugin/ 配置 shadowsocks-libev 加 v2ray-plugin]
  1、[http://snlcw.com/460.html 使用一键脚本轻松给 shadowsocks v2ray插件, v2ray,trojan申请免费证书]
  2、[https://gist.github.com/Shuanghua/c9c448f9bd12ebbfd720b34f4e1dd5c6 ss-libev 插件 v2ray-plugin 的安装使用]
2、[http://snlcw.com/479.html 原版shadowsocks v2ray插件安装,支持tls1.3和谷歌quic udp协议,配套客户端windows、macos、android使用详解]
  3、[https://gist.github.com/Shuanghua/c9c448f9bd12ebbfd720b34f4e1dd5c6 ss-libev 插件 v2ray-plugin 的安装使用]
   
   
  建议配置为工作在 TLS 模式下。
  建议配置为工作在 TLS 模式下。


=== 域名、证书 ===
=== 域名证书 ===
  通过 acme.sh 脚本,可以申请、自动更新证书。
  见:'''[[Acme.sh 使用#DNS认证方式(推荐)]]'''
支持的证书:
* ZeroSSL.com CA(default)
* Letsencrypt.org CA
* BuyPass.com CA
* SSL.com CA
* Pebble strict Mode
* Any other RFC8555-compliant CA
[https://github.com/acmesh-official/acme.sh/wiki/dnsapi 目前 acme.sh 支持大多数 dns 提供商](包括 Cloudflare、GoDaddy、Aliyun)


acme.sh 脚本:
# 安装 acme.sh:
# 安装脚本:
#: <syntaxhighlight lang="bash" highlight="">
#: <syntaxhighlight lang="bash" highlight="">
# 在线安装
curl  https://get.acme.sh | sh
curl  https://get.acme.sh | sh
# 或者
wget -O -  https://get.acme.sh | sh
# 通过 git 安装
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install
</syntaxhighlight>
</syntaxhighlight>
#* 安装好后,会自动为你创建 cronjob(计划任务), 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。
# 更改默认 CA:
#* 查看已创建的 cronjob:
#: <syntaxhighlight lang="bash" highlight="">
#*: <syntaxhighlight lang="bash" highlight="">
acme.sh --set-default-ca --server letsencrypt
crontab -l
</syntaxhighlight>
</syntaxhighlight>
# 更新脚本:
# 安装证书:
#: <syntaxhighlight lang="bash" highlight="">
#: <syntaxhighlight lang="bash" highlight="">
# 升级 acme.sh 到最新版 :
# 以下 CF_Key、CF_Email和域名,需要在实际环境中用你自己的配置替换掉
acme.sh --upgrade
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
acme.sh --issue --dns dns_cf -d example.com -d www.example.com
</syntaxhighlight>
#: 证书安装完成如下:
#: [[File:acme.sh 安装证书完成.png|600px]]
<!--
安装证书:
export CF_Key="3181299d78c989ff313ee006b8084fa10cf10"
export CF_Email="chen@eijux.com"
acme.sh --issue --dns dns_cf -d ss.chenjx.cc
安装完成:
-----END CERTIFICATE-----
[Tue Nov 30 23:53:50 UTC 2021] Your cert is in: /root/.acme.sh/ss.chenjx.cc/ss.chenjx.cc.cer
[Tue Nov 30 23:53:50 UTC 2021] Your cert key is in: /root/.acme.sh/ss.chenjx.cc/ss.chenjx.cc.key
[Tue Nov 30 23:53:50 UTC 2021] The intermediate CA cert is in: /root/.acme.sh/ss.chenjx.cc/ca.cer
[Tue Nov 30 23:53:50 UTC 2021] And the full chain certs is there: /root/.acme.sh/ss.chenjx.cc/fullchain.cer
-->
* v2ray-plugin 会自动识别并且引用 acme 申请的证书文件;当然你也可以把证书链接放到指定的具体目录下,然后设置只读权限(推荐)
*: <syntaxhighlight lang="bash" highlight="">
ln -s ~/.acme.sh/xxxx.com /etc/ssl/xxxx.com
</syntaxhighlight>
* 如果需要 Andriod 客户端连接,那么服务器端证书需要用 fullchain,否则可能会遇到“Connection reset by peer”错误。 (服务器 v2ray 错误是 “failed to read request header > websocket: close 1000 (normal)”)。


# 如果你不想手动升级, 可以开启自动升级:
=== V2Ray-Plugin 安装 ===
acme.sh  --upgrade  --auto-upgrade
(两种方式)
# 编译 v2ray-plugin、golang 源码:(编译安装 V2Ray-Plugin 需要 '''golang''')
## 安装 golang:
##: <syntaxhighlight lang="bash" highlight="">
# 下载安装 (root 下安装)
cd ~ && curl -O https://dl.google.com/go/go1.16.10.linux-amd64.tar.gz


# 你也可以随时关闭自动更新:
# 解压
acme.sh --upgrade  --auto-upgrade  0
tar -C /usr/local -xzf go1.16.10.linux-amd64.tar.gz
</syntaxhighlight>
# 证书申请:
## 设置域名解析:
##: 到相应的域名提供商,设置域名解析到实际的服务器ip。
## 证书颁发:
### 给 GoDaddy 自动颁发证书:
###: <syntaxhighlight lang="bash" highlight="">
#(替换 GD_Key 为自己的)
export GD_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"


#(替换 GD_Secret 为自己的)
# 添加到环境变量
export GD_Secret="asdfsdafdsfdsfdsfdsfdsafd"
vim ~/.bash_profile
# 添加以下两行内容到文末:
export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
# 使环境变量生效
source ~/.bash_profile


#(<example.com> 为自己的域名)
# 检查版本
acme.sh --issue --dns dns_gd -d <example.com> [-d <example.com>]
go version
</syntaxhighlight>
</syntaxhighlight>
###* GoDaddy API Key 创建地址:[https://developer.godaddy.com/keys/ https://developer.godaddy.com/keys/]
## 安装 v2ray-plugin:
### 给 CloudFlare 自动颁发证书:
##: <syntaxhighlight lang="bash" highlight="">
###: <syntaxhighlight lang="bash" highlight="">
git clone https://github.com/shadowsocks/v2ray-plugin.git
#(替换 CF_Key 为自己的)
cd v2ray-plugin
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
go mod download
go build
cp v2ray-plugin /usr/bin/v2ray-plugin
cd ..
</syntaxhighlight>
# 使用编译好的 v2ray-plugin 的可执行二进制文件:
## 在[https://github.com/shadowsocks/v2ray-plugin/releases github release],下载“v2ray-plugin-linux-386-v1.3.1.tar.gz”;
## 上传到服务器,解压<s>到 /usr/bin/</s>(/usr/bin/ 下内容太多,现在还是放到 /root 下吧),并更名为“v2ray-plugin”:
##: <syntaxhighlight lang="bash" highlight="">
cd /root


#(替换 CF_Email 为自己的 GoDaddy 登录邮箱)
tar -zxvf v2ray-plugin-linux-386-v1.3.1.tar.gz
export CF_Email="xxxx@sss.com"


#(<example.com> 为自己的域名)
mv v2ray-plugin_linux_386 v2ray-plugin
acme.sh --issue --dns dns_cf -d <example.com> [-d <example.com>]
# mv v2ray-plugin_linux_386 /usr/bin/v2ray-plugin
</syntaxhighlight>
## 为 v2ray-plugin 增加可执行权限:
##: <syntaxhighlight lang="bash" highlight="">
chmod +x v2ray-plugin
# chmod +x /usr/bin/v2ray-plugin
</syntaxhighlight>
</syntaxhighlight>
###* CloudFlare API Key 创建地址:[https://dash.cloudflare.com/profile https://dash.cloudflare.com/profile]
###* CloudFlare 用于 CDN 加速。(需要先在 CloudFlare 添加需要加速的站点,再生成 CloudFlare API Key)
###*# 将域名(子域名)解析指定到服务器 IP;
###*# 在“DNS修改”将其 DNS 指定为 CloudFlare 的 DNS 地址;
=== V2Ray-Plugin 安装 ===


=== 配置 ===
=== 配置 ===
v2ray-plugin 支持两种模式:
1、https(websocket + tls)
2、quic(quic + tls)
quic 核心是 '''udp''',而大部分运营商对 udp 的支持不友好, udp 丢包严重,有时候不使用 quic 更好。(目前 v2ray-core 的 quic 还没有升级到最新的 http3 标准, 也就是说还没有支持 http3 的插件可以用,你可以通过 caddy2 启用 http3,但是本地没有支持 http3 的代理客户端可用)


 
# '''服务端''':(设置 ss 配置文件)
??????????????????
#: <syntaxhighlight lang="bash" highlight="4,9,10,11">
 
{
* 如果编译安装 V2Ray-Plugin,则需要 '''golang'''
    "server": "0.0.0.0",
* 如果需要 Andriod 客户端连接,那么服务器端证书需要用 fullchain,否则可能会遇到“Connection reset by peer”错误。 (服务器 v2ray 错误是 “failed to read request header > websocket: close 1000 (normal)”)。
    "nameserver": "8.8.8.8",
** 证书命令:
    "server_port": 443,
**: <syntaxhighlight lang="bash" highlight="">
    "password": "你的密码",
acme.sh –install-cert -d ss.sulian.me –key-file /home/sulian/certs/ss.sulian.me.key –cert-file /home/sulian/certs/ss.sulian.me.cer –fullchain /home/sulian/certs/fullchain.pem –reloadcmd “sudo systemctl restart shadowsocks-libev”
    "method": "chacha20-ietf-poly1305",
</syntaxhighlight>
    "timeout": 400
** 客户端配置:
    "no_delay": true,
**: <syntaxhighlight lang="bash" highlight="">
    "mode": "tcp_and_udp",
open;host=ss.sulian.me;cert=/home/sulian/certs/fullchain.pem;key=/home/sulian/certs/ss.sulian.me.key;loglevel=none”
    "plugin": "v2ray-plugin",
    "plugin_opts": "server;tls;fast-open;host=xxxxxxxxx.com;cert=/证书目录/fullchain.cer;key=/证书目录/xxxxxxxxx.com.key;loglevel=none"
}
</syntaxhighlight>
</syntaxhighlight>
* 现在 acme 使用 zerossl 了,还得去注册一个帐号,不然下载证书那一步一直出错。
<!--
"server_port": 443,
"plugin": "v2ray-plugin",
"mode": "tcp_and_udp"【或者:"mode": "tcp_only"】
"plugin_opts": "server;tls;fast-open;host=ss.chenjx.cc;cert=/root/.acme.sh/ss.chenjx.cc/fullchain.cer;key=/root/.acme.sh/ss.chenjx.cc/ss.chenjx.cc.key;loglevel=none"
-->
#* “server_port”:必须使用 443 端口;【记得防火墙打开该端口】
#* “no_delay”:修改为“"true"”;(在网络带宽很好的情况下,让服务器端能更快的把数据发往客户端)
#* “mode”:
#*# https 模式:使用“"tcp_only"”;
#*# quic 模式:修改为“"tcp_and_udp"”;(关闭 ss 的 udp,让 quic 模块去处理 udp)
#* “plugin”:使用的插件;(可以设置为全路径???)
#* “plugin_opts”:插件选项;
# '''客户端''':
## 在[https://github.com/shadowsocks/v2ray-plugin/releases github release 页面下载“v2ray-plugin-windows-386-v1.3.1.tar.gz”],解压该文件并放到 shadowsocks 可执行文件的同级目录;
## 设置 shadowsocks 界面:
##* “服务器端口”:443;
##* “插件程序”:<code>v2ray-plugin_windows_386</code>(其名称与 shadowsocks 的“插件程序”一致)
##* “插件选项”:
##*# https 模式:<code>tls;host=xxx.com</code>;
##*# quic 模式:<code>mode=quic;host=xxx.com</code>;
<!--
tls;host=ss.chenjx.cc【或者:mode=quic;host=ss.chenjx.cc】
-->

2021年12月1日 (三) 10:55的版本


关于

可以尝试使用使用协议混淆插件,目前插件汇总:
1、Kcptun
2、Simple-obfs
3、V2Ray-Plugin
4、GoQuite
5、Cloak
6、simple-tls
7、gost-plugin

Kcptun

【??????】

simple-obfs

参考:
1、添加混淆: simple-obfs + shadowsocks for Windows

V2Ray-Plugin

v2ray-plugin:基于v2ray原理,工作在 shadowsocks 上的流量混淆插件:将流量伪装为某域名下(所以需要为域名设置解析、证书申请)站点的 tls、quic 协议的流量。

支持 tls1.3 和谷歌 quic udp 协议。

v2ray-plugin 项目
acme.sh 项目中文说明)

参考:
1、使用一键脚本轻松给 shadowsocks v2ray插件, v2ray,trojan申请免费证书
2、原版shadowsocks v2ray插件安装,支持tls1.3和谷歌quic udp协议,配套客户端windows、macos、android使用详解
3、ss-libev 插件 v2ray-plugin 的安装使用

建议配置为工作在 TLS 模式下。

域名证书

见:Acme.sh 使用#DNS认证方式(推荐)
  1. 安装 acme.sh:
    curl  https://get.acme.sh | sh
    
  2. 更改默认 CA:
    acme.sh --set-default-ca --server letsencrypt
    
  3. 安装证书:
    # 以下 CF_Key、CF_Email和域名,需要在实际环境中用你自己的配置替换掉
    export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
    export CF_Email="xxxx@sss.com"
    acme.sh --issue --dns dns_cf -d example.com -d www.example.com
    
    证书安装完成如下:
    Acme.sh 安装证书完成.png
  • v2ray-plugin 会自动识别并且引用 acme 申请的证书文件;当然你也可以把证书链接放到指定的具体目录下,然后设置只读权限(推荐)
    ln -s ~/.acme.sh/xxxx.com /etc/ssl/xxxx.com
    
  • 如果需要 Andriod 客户端连接,那么服务器端证书需要用 fullchain,否则可能会遇到“Connection reset by peer”错误。 (服务器 v2ray 错误是 “failed to read request header > websocket: close 1000 (normal)”)。

V2Ray-Plugin 安装

(两种方式)

  1. 编译 v2ray-plugin、golang 源码:(编译安装 V2Ray-Plugin 需要 golang
    1. 安装 golang:
      # 下载安装 (root 下安装)
      cd ~ && curl -O https://dl.google.com/go/go1.16.10.linux-amd64.tar.gz
      
      # 解压
      tar -C /usr/local -xzf go1.16.10.linux-amd64.tar.gz
      
      # 添加到环境变量
      vim ~/.bash_profile
      # 添加以下两行内容到文末:
      export GOPATH=$HOME/work
      export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
      # 使环境变量生效
      source ~/.bash_profile
      
      # 检查版本
      go version
      
    2. 安装 v2ray-plugin:
      git clone https://github.com/shadowsocks/v2ray-plugin.git
      cd v2ray-plugin
      go mod download
      go build
      cp v2ray-plugin /usr/bin/v2ray-plugin
      cd ..
      
  2. 使用编译好的 v2ray-plugin 的可执行二进制文件:
    1. github release,下载“v2ray-plugin-linux-386-v1.3.1.tar.gz”;
    2. 上传到服务器,解压到 /usr/bin/(/usr/bin/ 下内容太多,现在还是放到 /root 下吧),并更名为“v2ray-plugin”:
      cd /root
      
      tar -zxvf v2ray-plugin-linux-386-v1.3.1.tar.gz
      
      mv v2ray-plugin_linux_386 v2ray-plugin
      # mv v2ray-plugin_linux_386 /usr/bin/v2ray-plugin
      
    3. 为 v2ray-plugin 增加可执行权限:
      chmod +x v2ray-plugin
      # chmod +x /usr/bin/v2ray-plugin
      

配置

v2ray-plugin 支持两种模式:
1、https(websocket + tls)
2、quic(quic + tls)

quic 核心是 udp,而大部分运营商对 udp 的支持不友好, udp 丢包严重,有时候不使用 quic 更好。(目前 v2ray-core 的 quic 还没有升级到最新的 http3 标准, 也就是说还没有支持 http3 的插件可以用,你可以通过 caddy2 启用 http3,但是本地没有支持 http3 的代理客户端可用)
  1. 服务端:(设置 ss 配置文件)
    {
        "server": "0.0.0.0",
        "nameserver": "8.8.8.8",
        "server_port": 443,
        "password": "你的密码",
        "method": "chacha20-ietf-poly1305",
        "timeout": 400
        "no_delay": true,
        "mode": "tcp_and_udp",
        "plugin": "v2ray-plugin",
        "plugin_opts": "server;tls;fast-open;host=xxxxxxxxx.com;cert=/证书目录/fullchain.cer;key=/证书目录/xxxxxxxxx.com.key;loglevel=none"
    }
    
    • “server_port”:必须使用 443 端口;【记得防火墙打开该端口】
    • “no_delay”:修改为“"true"”;(在网络带宽很好的情况下,让服务器端能更快的把数据发往客户端)
    • “mode”:
      1. https 模式:使用“"tcp_only"”;
      2. quic 模式:修改为“"tcp_and_udp"”;(关闭 ss 的 udp,让 quic 模块去处理 udp)
    • “plugin”:使用的插件;(可以设置为全路径???)
    • “plugin_opts”:插件选项;
  2. 客户端
    1. github release 页面下载“v2ray-plugin-windows-386-v1.3.1.tar.gz”,解压该文件并放到 shadowsocks 可执行文件的同级目录;
    2. 设置 shadowsocks 界面:
      • “服务器端口”:443;
      • “插件程序”:v2ray-plugin_windows_386(其名称与 shadowsocks 的“插件程序”一致)
      • “插件选项”:
        1. https 模式:tls;host=xxx.com
        2. quic 模式:mode=quic;host=xxx.com