分类: Shadowsocks 发表时间: 2019年10月08日

标题: shadowsocks服务器配置v2ray-plugin插件并支持TLS

摘要: 在不使用各种伪装的情况下,shadowsocks直连是非常容易被封杀的,所以通常为了可用性考虑,一般会将ss配合kcptun或v2ray之类的服务一起使用。本文记录一下配置shadowsocks服务以及使用v2ray-plugin插件,同时添加服务器的https证书以支持v2ray-plugin插件的TLS模式的过程

准备工作

  • 一台linux服务器,这里使用debian 9.9版本的系统,服务器需开放80端口
  • 一个域名,不用备案,可以到阿里云去购买,能翻墙也可以去namesilo去买,namesilo比较便宜
  • MacOS客户端使用ShadowsocksX-NG 1.9.2及以上版本,1.9.2以下版本默认不带有v2ray-plugin插件,需要自行下载并放到插件目录下,windows客户端使用shadowsocks-windows需要自行下载v2ray-plugin的window客户端版本并配置

服务器可以在阿里云、腾讯云或vultr等购买即可
阿里云推荐买香港的服务器,距离大陆较近延迟比较短,不过阿里云的网络不太稳定,并且ecs比较贵,推荐买轻量应用服务器
vultr推荐买日本的服务器,同样延迟比较短,vultr的网络比阿里云要稳定很多并且服务器比阿里云便宜很多。
vultr可以使用我的推荐链接,新用户可以获得100美元的试用金
注意这里必须是全新用户,如果使用已经用过的信用卡、paypal等账户均会被视为已存在账户而享受不到100美元的试用金

安装shadowsocks-libev

github仓库地址https://github.com/shadowsocks/shadowsocks-libev

执行命令安装shadowsocks服务apt install shadowsocks-libev

下载v2ray-plugin插件

可以到github上下载最新的v2ray-plugin插件,可用版本列表https://github.com/shadowsocks/v2ray-plugin/releases,下载最新的就行了

wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.2.0/v2ray-plugin-linux-amd64-v1.2.0.tar.gz解压插件tar -zxf v2ray-plugin-linux-amd64-v1.2.0.tar.gz,之后将解压出来的v2ray-plugin_linux_amd64移动并重命名到/usr/bin/v2ray-plugin,命令mv v2ray-plugin_linux_amd64 /usr/bin/v2ray-plugin

启动80端口的监听

执行命令ss-server -s 0.0.0.0 -p 80 -m aes-256-cfb -k your-password -a nobody --plugin v2ray-plugin --plugin-opts "server"将在80端口启动shadowsocks的监听

但是80端口是http协议,而http协议中内容是明文的不安全,为了更好的安全性最好使用https协议

客户端配置v2ray-plugin

在客户端修改配置文件,插件项增加v2ray-plugin插件即可

准备申请https证书

v2ray-plugin默认使用的acme提供的证书,我们在申请之前,先安装一个apache或nginx服务器,命令apt install nginx

注意nginx默认也使用80端口,所以nginx和ss-server不能同时监听80端口,要关掉上边的ss-server服务

安装acme.sh

acme证书可以通过acme.sh来进行自动安装和更新,官方文档在这里acme.sh

首先通过命令curl https://get.acme.sh | sh安装acme.sh脚本,执行后会在/root目录下创建一个隐藏文件夹.acme.sh

要通过nginx来辅助验证,首先我们需要将待验证域名配置到nginx中,我们不需要使该域名存在实际站点,只需要能够访问到nginx的默认页就行了,简单配置可以修改/etc/nginx/site-enables/default文件,在server_name列表中加入你的目标域名,示例

  1. server_name your_host;

之后我们通过命令/root/.acme.sh/acme.sh --issue -d your_host --nginx命令来为your_host域名申请https证书,申请过程中会借助nginx验证服务器与域名的所有权,完成后就会在本地创建https证书,同时这个证书每三个月会更换一次

注意your_host要替换成你自己的域名
注意your_host要求一个A记录的dns解析到你的服务器上
这里需要使用root用户来进行操作,非root用户可能在验证时无法找到nginx命令
生成的证书会以域名为文件夹在/root/.acme.sh目录下存放

启动443端口的监听

执行命令ss-server -s 0.0.0.0 -p 443 -m aes-256-cfb -k your-password -a nobody --plugin v2ray-plugin --plugin-opts "server;tls;host=your_host"将在443端口启动shadowsocks的监听

客户端配置v2ray-plugin的TLS模式

在客户端修改配置文件,插件项添加v2ray-plugin插件,同时插件选项中填写tls;host=your_host即可

添加到服务

在服务端启动ss-server时并不会放到后台作为守护进程运行,我们如果希望能够在后台运行并每次开机自启动可以设置到服务中,执行命令vim /etc/systemd/system/shadowsocks-v2ray.service编辑服务配置,将如下内容粘贴进去并修改your_password与your_host为你自己的内容

  1. [Unit]
  2. Description=shadowsocks v2ray
  3. After=network-online.target
  4. [Service]
  5. Type=simple
  6. ExecStart=/usr/bin/ss-server -s 0.0.0.0 -p 443 -m aes-256-cfb -k your_password -a nobody --plugin v2ray-plugin --plugin-opts "server;tls;host=your_host"
  7. [Install]
  8. WantedBy=multi-user.target

保存退出,然后就能通过命令systemctl start shadowsocks-v2ray启动服务,通过命令systemctl enable shadowsocks-v2ray将服务添加到开机自启动

其他管理命令

  • systemctl status shadowsocks-v2ray 查看服务状态
  • systemctl stop shadowsocks-v2ray 停止服务
  • systemctl restart shadowsocks-v2ray 重启服务

配置重启的计划任务

由于https证书是每三个月更换一次,所以服务也需要进行定时重启以免当前使用的证书过期导致服务不可用,需要添加一个计划任务到crontab

使用命令crontab -e编辑计划任务,将此代码粘贴到最后0 0 1 * * systemctl restart shadowsocks-v2ray

该计划任务会每月1日凌晨重启ss服务