万物之中, 希望至美.

Shadowsocks-libev搭配v2ray-plugin使用

2019.10.19

最近自己搭的梯子用着总是不太稳定,顺带 ShadowsocksX-NG 客户端可以使用 v2ray-plugin 插件了,于是就整了个插件来抗干扰下,这里记录下操作流程方便以后使用。

域名

弄一个域名映射到自己的服务器上。

申请免费证书

和官方文档一样使用 acme 脚本自动申请免费证书 (免费证书有效期一般是 3 个月,脚本会每隔 60 天自动更新一次证书有效期)

在申请之前必须先到 cloudflare 页面,点击右上角的头像,然后点击 My Profile ,在个人信息页面有个 API Tokens -> Global API KEY, 复制你的 API KEY, 同时复制你的 CloundFlare 的登陆邮箱 , key 和 email 用于申请证书

  • 申请证书(确保域名已解析到自己的服务器
export CF_Email="CloundFlare Email"
export CF_Key="API KEY"
curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --issue --dns dns_cf -d YourDomain

执行完上面命令,acme 脚本就会自动帮你申请好了证书,证书存放的目录在 ~/.acme.sh/YourDomain/,里面包含了 ca.cer 、fullchain.cer | .key 等文件。

docker

从方便这一方面来说,使用 docker 简直不要太方便了。

GitHub 搜了下发现了这么一个仓库:https://github.com/Acris/docker-shadowsocks-libev,看了下 Dockerfile,作者使用了多阶段构建,这样不会导致镜像体积过大,其他也没什么问题。

接着就能按照示例的 docker-compose 文件撸就是了:

version: "3.7"
services:
  shadowsocks-libev:
    container_name: shadowsocks-libev
    image: acrisliu/shadowsocks-libev:latest
    ports:
      - "8388:8388/tcp"
      - "8388:8388/udp"
    volumes:
      - /root/.acme.sh:/root/.acme.sh:ro
    environment:
      - PASSWORD=YourPassword
      - ARGS=--plugin v2ray-plugin --plugin-opts server;tls;host=yourdomain.com;path=/v2ray;cert=/root/.acme.sh/yourdomain.com/fullchain.cer;key=/root/.acme.sh/yourdomain.com/yourdomain.com.key -u
    restart: always

其中可以使用的环境变量及其默认值:

  • SERVER_ADDRS: 远程服务器的主机名或IP, 默认值: 0.0.0.0.
  • SERVER_PORT: 远程服务器的端口号, 默认值: 8388.
  • PASSWORD: 远程服务器的密码, 默认值: ChangeMe!!!.
  • METHOD: 加密方式, 默认值: chacha20-ietf-poly1305.
  • TIMEOUT: Socket 超时时间, 默认值: 86400.
  • DNS_ADDRS: DNS解析服务器地址, 默认值: 1.1.1.1,1.0.0.1.
  • ARGS: Shadowsocks服务器额外支持的参数,默认值:-u,使用 UDP 中继。

最后将 docker-compose 文件中的参数改成自己就可以了。

客户端设置

我使用的是客户端是 ShadowsocksX-NG,其他客户端应该是差不多:

  • 插件:填写 v2ray-plugin
  • 插件选项:填写 mux=5;path=/v2ray;tls;host=yourdomain.com;certRaw=cer证书内容

mux 参数是客户端设置的并发连接数,默认为 1

comments powered by Disqus