手动安装shadowsocks以及v2ray-plugin部署ss+ws+tls|伪装站点

实用教程 admin 2个月前 (04-04) 568次浏览 0个评论

介绍

昨天我们实操了使用docker版的shadowsocks配合nginx部署ss+ws+tls,也许有的同学觉得杀鸡焉用牛刀,不需要nginx,那我们今天就来看看直接安装shadowsocks以及v2ray-plugin部署ss+ws+tls。

我们先介绍直接使用ss监听443端口的搭建方式,如果想要更安全活得长一点,可配合nginx或caddy搭建伪装网站,请直接跳转到这里

安装

由于debian11官方源我们已收录了shadowsocks-libev和shadowsocks-v2ray-plugin,我们直接apt安装即可:

apt update -y && apt install -y shadowsocks-libev shadowsocks-v2ray-plugin

修改配置文件

官方版本的shadowsocks-libev,其配置文件位于/etc/shadowsocks-libev/。这里需要注意下,秋水大佬的docker版shadowsocks-libev集成了v2ray-plugin,但是和apt安装的shadowsocks-v2ray-plugin,包名不一样,具体我们可以来看下。

image.png

我们可以看到,apt版本的 shadowsocks-v2ray-plugin的二进制文件名字叫做ss-v2ray-plugin,所以我们修改配置文件时也要注意下,将v2ray-plugin换成ss-v2ray-plugin。们直接覆盖原配置文件,下面命令请完整复制。

cat > /etc/shadowsocks-libev/config.json <<EOF
{
"server":["::0", "0.0.0.0"],
"server_port":443,
"password":"xxxxxx",
"timeout":300,
"method":"aes-128-gcm",
"nameserver":"1.0.0.1",
"mode":"tcp_and_udp",
"plugin":"ss-v2ray-plugin",
"plugin_opts":"server;tls;host=xxx.xxx.com;cert=/etc/shadowsocks-libev/xxx.com.crt;key=/etc/shadowsocks-libev/xxx.com.key"
}
EOF

此处有几点说明:

1.我的vps是由ipv6的所以我通知监听了ipv4和ipv6

2.我是直接将证书下载下来放在了/etc/shadowsocks-libev/目录

2.如果没有证书,cert和key参数可以不用填直接删除,ss-v2ray-plugin插件会自动通过acme脚本申请证书。

重启ss

我们直接重启ss

systemctl restart shadowsocks-libev.service

大坑

然后问题就来了,依然时无法连接,我们去看下ss的状态:

systemctl status shadowsocks-libev.service

发现没跑起来,再去看下日志:

journalctl -u shadowsocks-libev.service -f

好,我们找到错误的原因了:listen tcp 0.0.0.0:443: bind: permission denied

无法监听443端口。这是由于我们使用非root用户启动ss,但是Linux默认不允许非root用户启动的进程监听1024以下的端口,除非为每一个二进制文件显式声明。然后真正使用443端口的其实是v2ray-plugin,所以我们:

sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/ss-v2ray-plugin

或者:

sudo setcap CAP_NET_BIND_SERVICE=+eip $(which ss-v2ray-plugin)

然后重启ss

systemctl restart shadowsocks-libev.service

我们可以看到,已经成功跑起来了:

image38149897fcb785fa.png好了大功告成。

ss+ws+tls+nginx

如果要启用伪装站点的话,那就得借用caddy或者nginx,这里提供一个思路,以nginx为例

安装ss

apt update && apt install -y shadowsocks-libev shadowsocks-v2ray-plugin

写入ss配置文件

下面的命令请完整复制

这里有一点说明:端口:23456、路径:/admin/,请修改成自己想要的,不要照抄我的,而且要和接下来的nginx站点配置文件保持一致。

cat > /etc/shadowsocks-libev/config.json <<EOF
{
"server":"127.0.0.1",
"server_port":23456,
"password":"doub.io",
"timeout":300,
"method":"aes-128-gcm",
"nameserver":"1.0.0.1",
"mode":"tcp_and_udp",
"plugin":"ss-v2ray-plugin",
"plugin_opts":"server;path=/admin/"
}
EOF

重启ss

systemctl restart shadowsocks-libev.service

配置nginx

小白这里直接就apt安装个nginx,你也可以使用的军哥的lnmp或宝塔。

直接安装的命令:

apt update && apt install -y nginx curl tar

新建站点

搭建网站网站的过程我就不写了,实在不行你就用宝塔,也不需要啥命令行操作,我们直接跳到站点的配置文件。如果是apt安装的配置nginx,配置文件在/etc/nginx/conf.d/,直接在里面新建一个站点,如果是宝塔,直接在网站设置里里修改配置文件,如果是军哥的lnmp,配置文件在/usr/local/nginx/conf/vhost/。

我们找到相应站点的配置文件,在最后倒数第二行敲下回车,粘贴进如下配置,其中的/admin/已经23456端口必须和ss配置文件中一致。

location /admin/ {
if ($http_upgrade != "websocket") {
return 404;
}
proxy_redirect off;
proxy_pass http://127.0.0.1:23456;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
# Show real IP in v2ray access.log
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

下面贴一份/etc/nginx/conf.d/目录下的完整配置文件

server {
# 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块
    listen 80;
	listen 443 ssl http2;
#    listen [::]:80;
#    listen [::]:443 ssl http2;
# 域名,多个以空格分开
    server_name  xxx.xxx.net;
    index index.php index.html index.htm default.php default.htm default.html;
    root /usr/share/nginx/html/xxx;
    
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
#HTTP_TO_HTTPS_END
    ssl_certificate        /etc/nginx/xxx.xxx.net.crt;
    ssl_certificate_key    /etc/nginx/xxx.xxx.net.key;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;
#SSL-END

#PHP_START
#	include enable-php.conf;
#	location ~ \.php$ {
#        include snippets/fastcgi-php.conf;
#        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
#    }
#PHP_END
	
#SS_START
	location /admin/ {
    if ($http_upgrade != "websocket") {
        return 404;
    }
    proxy_redirect off;
    proxy_pass http://127.0.0.1:23456; 
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    # Show real IP in v2ray access.log
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
#SS_STOP

}

其中标志xxx的部分请替换成自己的域名,这里我把php部分注释掉了,有需要使用php的童鞋请自行取消相应注释,并选择正确版本。

配置伪装网站

从上文的配置文件,我们可以看到站点文件目录为root /usr/share/nginx/html/xxx,你可以拉取个静态网页,也可以反代到cloudreve网盘,具体请参考docker配合宝塔部署ws+tls并搭建伪装网站,你可以拉取个静态网页,也可以反代到cloudreve网盘。

如果是反代到cloudreve网盘的童鞋,简单贴一下说一下教程

安装cloudreve

mkdir cr && chmod +x cr && cd cr
wget https://github.com/cloudreve/Cloudreve/releases/download/3.5.3/cloudreve_3.5.3_linux_amd64.tar.gz
tar -zxvf cloudreve_3.5.3_linux_amd64.tar.gz
chmod +x ./cloudreve
./cloudreve

到此,你可以浏览器访问IP:5212去修改用户名和密码,如果仅仅用来伪装,直接ctrl+c退出即可

加入进程守护

下面内容请完整复制:

cat > /usr/lib/systemd/system/cloudreve.service <<EOF
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target

[Service]
WorkingDirectory=/root/cr
ExecStart=/root/cr/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed

StandardOutput=null
StandardError=syslog

[Install]
WantedBy=multi-user.target
EOF

启用进程守护

systemctl daemon-reload
systemctl restart cloudreve
systemctl enable cloudreve

nginx反代到cloudreve

跟刚刚反代到ss一样的操作,我们在/etc/nginx/conf.d/目录下的配置文件再写入如下内容:

#CR_START
	location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5212;
	}
#CR_STOP

然后,重启nginx

systemctl restart nginx.service

好了,大功告成。


VPS小白 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址