SS:服务端(插件)

来自Wikioe
跳到导航 跳到搜索


关于

可以尝试使用使用协议混淆插件,目前插件汇总:
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 协议。


项目地址:
1、v2ray-plugin 项目
2、acme.sh 项目中文说明

参考:

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

域名证书

理论上来说,证书不是必须的。但没有 tls 加持或不做加密,防火墙直接能看出来流量真实意图从而进行干扰,这也是为什么不建议伪装 http 流量的原因。

见:Acme.sh 使用#DNS认证方式(推荐)
  1. 安装 acme.sh:
    curl  https://get.acme.sh | sh
    
  2. 更改默认 CA:
    acme.sh --set-default-ca --server letsencrypt
    
    • 即,使用 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
    
    • 使用了 cloudflare 作为 DNS 提供商(cloudflare 的 CDN 没有必要开启——除非 ip 被锁,否则国外的 CDN 反而可能导致降速);
    证书安装完成如下:
    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-amd64-v1.3.1.tar.gz”
    2. 上传到服务器,解压到 /usr/bin/,并更名为“v2ray-plugin”:
      cd /root
      
      tar -zxvf v2ray-plugin-linux-amd64-v1.3.1.tar.gz
      
      mv v2ray-plugin_linux_amd64 /usr/bin/v2ray-plugin
      
    3. 为 v2ray-plugin 增加可执行权限:
      # 修改文件所属组为 root
      chgrp -R root /usr/bin/v2ray-plugin
      
      # 修改文件所有者为 root
      chown -R root /usr/bin/v2ray-plugin
      
      # 为文件添加“可执行权限”
      chmod +x /usr/bin/v2ray-plugin
      

验证安装:

  • 执行以下命令,能够执行并有返回结果即可:
    [root@newjersey ~]# v2ray-plugin 
    2021/12/01 15:45:37 V2Ray 4.23.2 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.14.3 linux/amd64)
    2021/12/01 15:45:37 A unified platform for anti-censorship.
    2021/12/01 15:45:37 [Warning] v2ray.com/core: V2Ray 4.23.2 started
    

配置

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 端口;(这样看起来更像普通的 https 网站)
      • 【记得防火墙打开该端口】
    • “no_delay”:修改为“"true"”;(在网络带宽很好的情况下,让服务器端能更快的把数据发往客户端)
    • “mode”:
      1. https 模式:使用“"tcp_and_udp"”;
      2. quic 模式:修改为“"tcp_only"”;(关闭 ss 的 udp,让 quic 模块去处理 udp)
    • “plugin”:使用的插件;(可以设置为全路径???)
    • “plugin_opts”:插件选项;
  2. 客户端
    1. github release 页面下载“v2ray-plugin-windows-amd64-v1.3.1.tar.gz”,解压该文件并放到 shadowsocks 可执行文件的同级目录;
    2. 设置 shadowsocks 界面:
      • “服务器地址”:xxx.com;
      • “服务器端口”:443;
      • “插件程序”:v2ray-plugin_windows_amd64(shadowsocks 同级目录的插件名)
      • “插件选项”:
        1. https 模式:tls;host=xxx.com
        2. quic 模式:mode=quic;host=xxx.com

验证

  1. 验证 ss:(使用了一键脚本的安装,仓库安装遇到了“修改配置文件之后服务重启失败的问题”)
    [root@newjersey ~]# systemctl restart shadowsocks
    [root@newjersey ~]# systemctl status shadowsocks
    ● shadowsocks.service - LSB: Fast tunnel proxy that helps you bypass firewalls
       Loaded: loaded (/etc/rc.d/init.d/shadowsocks; bad; vendor preset: disabled)
       Active: active (running) since Wed 2021-12-01 20:47:02 UTC; 10s ago
         Docs: man:systemd-sysv-generator(8)
      Process: 7817 ExecStop=/etc/rc.d/init.d/shadowsocks stop (code=exited, status=0/SUCCESS)
      Process: 7820 ExecStart=/etc/rc.d/init.d/shadowsocks start (code=exited, status=0/SUCCESS)
       CGroup: /system.slice/shadowsocks.service
               ├─7822 /usr/local/bin/ss-server -v -c /etc/shadowsocks-libev/config.json -f /var/run/shadowsocks-libev...
               └─7825 v2ray-plugin
    
    Dec 01 20:47:02 newjersey systemd[1]: Stopped LSB: Fast tunnel proxy that helps you bypass firewalls.
    Dec 01 20:47:02 newjersey systemd[1]: Starting LSB: Fast tunnel proxy that helps you bypass firewalls...
    Dec 01 20:47:02 newjersey shadowsocks[7820]: Starting Shadowsocks-libev success
    Dec 01 20:47:02 newjersey systemd[1]: Started LSB: Fast tunnel proxy that helps you bypass firewalls.
    Dec 01 20:47:02 newjersey /usr/local/bin/ss-server[7822]: plugin "v2ray-plugin" enabled
    Dec 01 20:47:02 newjersey /usr/local/bin/ss-server[7822]: UDP relay enabled
    Dec 01 20:47:02 newjersey /usr/local/bin/ss-server[7822]: initializing ciphers... chacha20-ietf-poly1305
    Dec 01 20:47:02 newjersey /usr/local/bin/ss-server[7822]: using nameserver: 8.8.8.8
    Dec 01 20:47:02 newjersey /usr/local/bin/ss-server[7822]: tcp server listening at 127.0.0.1:51975
    Dec 01 20:47:02 newjersey /usr/local/bin/ss-server[7822]: udp server listening at 0.0.0.0:443
    [root@newjersey ~]#
    
    • 配置的 v2ray-plugin 插件应该要被识别启动;
  2. 验证 v2ray-plugin:
    [root@newjersey ~]# netstat -lptn
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1035/sshd           
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1278/master         
    tcp        0      0 127.0.0.1:51975         0.0.0.0:*               LISTEN      7822/ss-server      
    tcp6       0      0 :::22                   :::*                    LISTEN      1035/sshd           
    tcp6       0      0 ::1:25                  :::*                    LISTEN      1278/master         
    tcp6       0      0 :::443                  :::*                    LISTEN      7825/v2ray-plugin   
    [root@newjersey ~]# netstat -lpun
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    udp        0      0 127.0.0.1:323           0.0.0.0:*                           511/chronyd         
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           980/dhclient        
    udp        0      0 0.0.0.0:443             0.0.0.0:*                           7822/ss-server      
    udp6       0      0 ::1:323                 :::*                                511/chronyd         
    [root@newjersey ~]#
    
    • tcp 端口应该有 ss 和 v2ray 在使用,udp 端口应该有 ss 在使用;