手动搭建shadowsocks-rust 发表于 2020-11-29 | 分类于 默认分类 | 2 条评论 前言:`rust`版`shadowsocks`好像好早就有了,只是自己也是最近才发现,据说是性能很不错,也有`none或者plain`不加密选项可供选择。之前好像在群里看到说,不出意外的话,`ss-libev`不会有新的功能添加,主要修bug,`ss-rust`会发力,加一些新功能。`rust`语言写出的软件,跟go类似,单文件就齐活了,不用像`ss-libev`那样需要解决运行时的依赖问题。 本文介绍在`Debian 10 x64`下`shadowsocks-rust`版的安装方法,加密方式选择`none`不加密,配合`v2ray-plugin`插件,webserver选择`caddy v1.0.5`版本,搭建`ss+wss`类型节点。 **条件准备**: - 一个域名,用来申请证书 - 一台vps服务器 - ssh客户端等 # 一、申请证书 申请证书需要准备一个域名(免费付费均可),先在dns解析服务提供商那里添加好对`vps ip`的A记录。申请证书我习惯于使用`acme.sh`脚本,之前有专门写过教程:[传送门](https://shiping.date/archives/18.html "传送门")。 # 二、配置ss-rust ## 2.1 安装 项目releases里直接提供了编译好的二进制包,直接下载对应架构的包即可。我这里机器架构以`linux x86_64`为例: # 下载压缩包 cd /usr/local/bin/ wget https://github.com/shadowsocks/shadowsocks-rust/releases/download/v1.8.23/shadowsocks-v1.8.23.x86_64-unknown-linux-gnu.tar.xz wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz # 解压缩(名字太长,可以用Tab键补全) xz -d shadowsocks-v1.8.23.x86_64-unknown-linux-gnu.tar.xz && tar -xf shadowsocks-v1.8.23.x86_64-unknown-linux-gnu.tar tar -zxf v2ray-plugin-linux-amd64-v1.3.1.tar.gz && mv v2ray-plugin_linux_amd64 v2ray-plugin # 修改所有者 chown root.root ./ss* ./v2ray-plugin **说明**:其中,`shadowsocks-rust`下载地址是:[传送门](https://github.com/shadowsocks/shadowsocks-rust/releases "传送门");`v2ray-plugin`下载地址是:[传送门](https://github.com/shadowsocks/v2ray-plugin/releases "传送门")。 ## 2.2 配置文件 配置文件同样取名`config.json`,放置在`/etc/shadowsocks-rust/`目录下: # 创建目录 mkdir /etc/shadowsocks-rust && cd /etc/shadowsocks-rust # 创建配置文件,取名config.json { "server":"127.0.0.1", "server_port":9000, "timeout":300, "method":"none", "password":"password0", "fast_open":false, "nameserver":"dns.google", "mode":"tcp_only", "plugin":"v2ray-plugin", "plugin_opts":"server;path=/uri" } **说明**:由于上面设置了`none`不加密,所以path路径建议设置的`尽量复杂些`,跟下面`Caddyfile`文件里的保持一致。 ## 2.3 创建服务文件 给`ss-rust`添加`systemd`服务,让它可以后台运行和开机自动运行。 # 切换路径 cd /etc/systemd/system/ && vim shadowsocks-rust.service # 内容示例 [Unit] Description=Shadowsocks-Rust Service After=network.target [Service] Type=simple User=nobody Group=nogroup ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json [Install] WantedBy=multi-user.target **说明**:如果你不想看到标准输出日志的话,可以将systemd日志重定向到`/dev/null`,具体修改方式为在上述service文件`[Service]区块`下添加一行`StandardOutput=null`即可。 ## 2.4 配置systemd systemctl daemon-reload systemctl start shadowsocks-rust //启动 systemctl stop shadowsocks-rust //停止 systemctl enable shadowsocks-rust //加入开机自启 systemctl disable shadowsocks-rust //取消开机自启 systemctl is-enabled shadowsocks-rust //判断服务是否处于开机自启状态,输出enabled即代表开机自启 # 三、配置caddy ## 3.1 安装caddy # 下载然后重命名放到/usr/bin目录下,这里感谢秋水逸冰释出的编译成果 wget -O /usr/bin/caddy https://dl.lamp.sh/files/caddy_linux_amd64 # 赋予权限 chmod 755 /usr/bin/caddy **说明**:之前给出的安装caddy的脚本好像已经不能用了,里面caddy1的下载链接404了,这里使用秋水逸冰编译好的caddy1版本,具体使用方法还跟之前一样。 ## 3.2 创建caddy的配置文件 ### 3.2.1 创建caddy目录 mkdir /etc/caddy && cd /etc/caddy //创建caddy目录并切换至此 ### 3.2.2 创建caddy配置文件Caddyfile vim Caddyfile //创建并开始编辑文件 //以下是文件内容,请稍作修改后添加至文件 yourdomain.com:443 { gzip log /etc/caddy/caddy.log tls /etc/caddy/caddy.crt /etc/caddy/caddy.key proxy / https://baidu.com proxy /uri 127.0.0.1:9000 { websocket header_upstream -Origin } } //以上是文件内容,请稍作修改后添加至文件 **说明**:此处用`proxy / https://baidu.com`来反代别的网站,你也可以去掉此行,用`root /path/to/website`来指定网站根目录。 ## 3.3 注册caddy服务 cd /etc/systemd/system && vim caddy.service //切换到此目录下,创建并开始编辑服务文件 //以下是文件内容,请添加至文件 [Unit] Description=Caddy Service After=network.target [Service] ExecStart=/usr/bin/caddy -conf /etc/caddy/Caddyfile Restart=on-abort LimitNOFILE=1048576 [Install] WantedBy=multi-user.target //以上是文件内容,添加至文件 systemctl daemon-reload //重载守护进程 systemctl start caddy //启动caddy.service服务 systemctl status caddy //查看caddy服务运行状况 systemctl enable caddy //将此服务加入开机自启动 参考链接: - [Shadowsocks-rust项目地址](https://github.com/shadowsocks/shadowsocks-rust "Shadowsocks-rust项目地址") - [v2ray-plugin项目地址](https://github.com/shadowsocks/v2ray-plugin "v2ray-plugin项目地址") - [acme.sh脚本项目地址](http://acme.sh "acme.sh脚本项目地址") - [Shadowsocks-Rust简介](https://www.malike.net.cn/blog/2019/04/30/shadowsocks-rust-tutorial/ "Shadowsocks-Rust简介") - [关闭日志](https://github.com/shadowsocks/shadowsocks-rust/issues/75 "关闭日志") - [How to silent a systemd service](https://serverfault.com/questions/838574/how-to-silent-a-systemd-service "How to silent a systemd service") 版权属于:毕世平本文链接:https://shiping.date/archives/35.html转载时须注明出处及本声明
请问一下这个shadowsocks-rust的多用户多端口,是不是也是和ss-libev的一样,是多开进程实现?还是和python之类的可以直接在配置文件里写多端口和密码
shadowsocks-libev编译出来的ss-manager,可以实现多端口多用户,确实是通过多开ss-server进程;刚刚试了下shadowsocks-rust,可以直接用 ssserver -c config.json ,其中配置文件可以参照ss-rust github readme实例,直接配置多端口多用户。