shadowsocks+v2ray配置笔记

前提:随着墙的增高,单纯的shadowsocks简单加密也越来越容易被检测和封锁,因此需要更强力的加密与混淆手段,避免流量被检测出来。

本笔记采用的是专用服务器+独立IP+shadowsocks+v2ray插件,不涉及在其他环境下运行的解决方案。

准备工作

  • 一台境外服务器,可通过SSH访问,操作系统Ubuntu 18.04,root用户(普通用户有sudo权限也可);
  • 一个域名(顶级或二级均可),添加A记录指向此服务器IP;

安装步骤:

1、安装shadowsocks-libev(二进制版,比python版效率高)

SSH登录到服务器,运行:

sudo apt update
sudo apt install shadowsocks-libev

root用户可以不加sudo。

 

2、安装v2ray-plugin

先访问https://github.com/shadowsocks/v2ray-plugin/releases获得下载地址,由于我们用的是64位linux,下载linux-amd64版本。下载后解压并复制到系统目录。

wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.0/v2ray-plugin-linux-amd64-v1.3.0.tar.gz
tar zxf v2ray-plugin-linux-amd64-v1.3.0.tar.gz
sudo mv v2ray-plugin_linux_amd64 /usr/bin/v2ray-plugin

 

3、使用acme.sh申请证书

运行下面命令安装:

curl https://get.acme.sh | sh

安装完之后就能执行acme.sh命令了。

 

如果是root用户,可以直接使用standalone模式申请证书。

假设域名是ss.sulian.me,并且已经解析指向到这台主机的IP,那么执行:

acme.sh --issue -d ss.sulian.me --standalone

acme.sh脚本会自动开启一个临时web服务器,用于验证域名的所有权。如果执行成功的话(显示success并提示证书已签发),会将证书存到脚本临时目录。

这种方法申请的证书有效期为三个月,脚本开启了定时任务会在到期前自动续发,为了能让证书永不过期,我们需要将证书安装到本地目录,并且每次重新签发后要执行指定命令重启shadowsocks加载:

mkdir /root/certs //创建本地证书目录
acme.sh --install-cert -d ss.sulian.me --key-file /root/certs/ss.sulian.me.key --cert-file /root/certs/ss.sulian.me.cer --reloadcmd "sudo systemctl restart shadowsocks-libev"

这样就把证书文件安装到了/root/certs目录下,并且每次获取新证书都会运行systemctl重启shadowsocks服务。

 

上面说的是使用root用户的情况。如果不是root用户,就不能直接使用sudo启动web服务器,所以要改用别的方法。

 

4、非root用户申请证书

假设我们的用户名是sulian,拥有root的sudo权限。

首先安装acme.sh的步骤还是一样的,只不过会安装到/home/sulian/.acme.sh下而不是/root/.acme.sh。

但现在没有权限启动80端口的web服务器了,所以用nginx来处理web请求。

sudo apt install nginx

安装成功之后,会启动一个默认web服务监听80端口的所有请求,因此不必修改配置。默认配置的web根目录在/var/www/html。
为了让脚本写入信息,我们转移目录所有权给当前用户sulian。

sudo chown sulian:sulian /var/www/html

然后执行acme.sh脚本,使用nginx服务器申请证书:

acme.sh --issue -d ss.sulian.me --webroot /var/www/html

如果前面配置没有问题,证书会顺利申请成功。然后同样要将证书安装到本地目录,并且每次重新签发后重启shadowsocks:

mkdir /home/sulian/certs //创建本地证书目录
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 --reloadcmd "sudo systemctl restart shadowsocks-libev"

 

5、配置shadowsocks+v2ray

前面所有的步骤都是为了最后运行梯子做准备。现在我们已经拥有:

  • shadowsocks服务器(未配置)
  • v2ray插件
  • 一个自己的域名
  • 域名的ssl证书,自动更新,永不过期

那现在就可以开始进行最后的配置了。

编辑shadowsocks配置文件:

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

进入编辑页面后,删掉所有原先内容(可连续按Ctrl+K删除整行),然后输入以下配置:

{
"server":"0.0.0.0",
"server_port": 443,
"password": "你的密码",
"timeout":60,
"method":"chacha20-ietf-poly1305",
"mode":"tcp_and_udp",
"fast_open":false,
"plugin":"v2ray-plugin",
"plugin_opts":"server;tls;fast-open;host=ss.sulian.me;cert=/home/sulian/certs/ss.sulian.me.cer;key=/home/sulian/certs/ss.sulian.me.key;loglevel=none"
}

其中server_port(端口)、password(密码)、plugin_opts(配置,包括域名、证书路径)是因人而异的。

端口推荐使用443,这样看起来更像普通的https网站。

 

6、客户端配置。

上面配置完毕之后,我们就拥有了一个支持v2ray插件的shadowsocks服务器,用普通的客户端直接连接是连不上的,需要做以下修改。

  • Windows用户:

一般使用的是官方客户端(https://github.com/shadowsocks/shadowsocks-windows/releases),除此之外还需要下载v2ray-plugin。

https://github.com/shadowsocks/v2ray-plugin/releases下载最新的windows-amd64版,解压,将里面的.exe文件改名为v2ray-plugin.exe,放置在shadowsocks的运行目录下。

然后进入服务器配置,添加一个新服务器,内容如下:

特别注意的就是其中的“插件程序”和“插件选项”。插件程序就是放置在shadowsocks目录下的插件可执行文件名,选项里的host字段则是域名,跟申请证书的域名一致。

配置完之后确定。就可以像普通shadowsocks客户端一样随意上网了,只是安全性更高了一些。

  • iOS用户

以ShadowRocket(小火箭)为例,由于此App已经内置了v2ray的支持,只需进行一些配置即可。

输入服务器名、端口和密码之后,点击“插件”,选择v2ray-plugin:

然后在下面的服务器中输入服务器域名,退出、保存。就可以和之前一样上网了。

  • Android用户:

安装官方客户端https://github.com/shadowsocks/shadowsocks-android和官方插件https://github.com/shadowsocks/v2ray-plugin-android/releases后,进行同样配置即可。由于没有手机,暂未进行测试,

5+

13 comments

  1. xn zhang says:

    编辑shadowsocks配置文件,这个完事就有shadowsocks服务了吗?我这边配完了怎么没有443端口?

    0
  2. Mason says:

    您好,请教您一个问题,我之前使用的是shadowsocks,后来换了V2rayN,然后现在无法使用了,打开谷歌就显示500错误,
    500 internal privoxy error
    privoxy encountered an error while processing your request:
    could not load template flex no-server-data or on of its included components .

    0
  3. Jimmy says:

    {
    “server”:”0.0.0.0″,
    “server_port”: 443,
    “password”: “你的密码“,
    “timeout”:60,
    “method”:”chacha20-ietf-poly1305″,
    “mode”:”tcp_and_udp”,
    “fast_open”:false,
    “plugin”:”v2ray-plugin”,
    “plugin_opts”:”server;tls;fast-open;host=ss.sulian.me;cert=/home/sulian/certs/ss.sulian.me.cer;key=/home/sulian/certs/ss.sulian.me.key;loglevel=none”
    }

    写的不错, 但是大哥能不能把里面的中文双引号改了, 哈哈哈

    0
  4. jimmy says:

    请问大哥, 这种方法支持多用户的配置模式吗, 支持的话, 麻烦回复一下怎么改配置文件,感激不尽

    0
  5. frank says:

    大佬,再问个问题,我用安卓模拟器,为什么电脑可以用vpn(上Google),电脑里面的模拟器不能上(Google),里面访问国内网站都可以访问,求大佬指点,感激不尽!

    0

发表评论

电子邮件地址不会被公开。 必填项已用*标注