搭建shadowsocks服务
前言
由于国内恶劣的网络环境,作为一名频繁访问外网的Web开发者,不得不自建一个VPN服务,以下简单介绍Shadowsocks的搭建过程。
单纯的ss流量会迅速被gfw识别到并屏蔽,因此使用ss时需要增加obfs用以混淆欺骗gfw,可以极大程度减小被屏蔽的风险。当然,如果你用的是比较出名的服务器供应商,如bandwagon的服务器,那么被屏蔽的机会也很大。
服务端使用的一键安装脚本twist由于开发者已经放弃维护长时间,目前只有参考作用,如果你有耐心,也可以自己修改后再使用,也就跟下面的服务端搭建教程一样。搞完是真的累,太渣了,太需要提高自己的编程水平,写一个一体化的软件包才行
服务端
twist脚本
服务端使用的是twist脚本,里面集成了Shadowsocks+simple-obfs+fail2ban以及相关依赖包,使用shell编写,感兴趣的可以看看源代码,下载地址如下
1 | https://github.com/forestbat/Twist |
下载后,脚本添加执行权限
1 | chmod +x twist |
切换到root账户,twist执行需要
1 | su - root |
修改twist
twist文件里面有一些软件需要删掉/更换,有些则需要手动安装,先手动执行一遍twist脚本./twist install
,确认有哪些错误,然后选择执行下面的命令
- 修改
dependenciesinstall
函数
1 | # 不同的系统不一样,不要全改 |
- 修改
sslibevinstall
函数
1 | # github的包命名改了,解压后变成了libsodium-stable |
或者删掉libsodium这段,直接手动编译安装,如下
1 | wget https://github.com/jedisct1/libsodium/releases/download/1.0.19-RELEASE/libsodium-1.0.19.tar.gz |
- 修改
sslibevinstall
函数
1 | # 在 tar zxf ${ssobfsver}.tar.gz 这一行后面修改添加代码,因为obfs也有很长时间没有更新,导致在新的编译器下报错 |
- 修改
sslibevinstallerr
、sslibevinstall
函数
1 | # sslibevinstallerr函数如下 |
安装完毕
执行修改后的twist脚本
1 | ./twist install |
如果twist安装成功,此时命令行下将会展示ss服务的二维码以及url,手机端可以用小火箭扫描,桌面端可以复制url导入
客户端
安装软件
1 | # obfs混淆ss流量;privoxy将http流量转换为socks5流量 |
ss配置
修改ss配置,配置文件可以是/etc/shadowsocks-libev/config.json
,也可以是/etc/shadowsocks-libev/config-obfs.json
1 | sudo vi /etc/shadowsocks-libev/config.json |
按下方模板配置:
1 | { |
执行下面的命令,确认软件可正常运行
1 | # 查看输出确认无异常报错 |
修改systemd
配置文件
1 | sudo vi /usr/lib/systemd/system/shadowsocks-libev.service |
将ss-server
改为ss-local
,因为我们修改的是shadowsocks-libev.service
,配置文件就是config.json
,这里就不需要再修改什么
1 | # This file is part of shadowsocks-libev. |
重启ss服务
1 | sudo systemctl daemon-reload |
privoxy配置
修改配置文件/etc/privoxy/config
1 | sudo vi /etc/privoxy/config |
修改listen-address
,因为有时我会将地址共享出来给局域网其他设备使用,所以我一般会将127.0.0.1
改为0.0.0.0
。在末尾添加forward-socks5
指令,将所有http
流量转发到1080
端口
1 | listen-address 0.0.0.0:8118 |
重启privoxy服务
1 | sudo systemctl restart privoxy |
防火墙开放8118端口访问(可选,如果没有打算给局域网内的其他机器使用就不要打开)
1 | sudo ufw allow 8118/tcp |
最后验证
配置环境变量http_proxy
以及https_proxy
,访问外网地址,只要有html数据流输出即可
1 | export http_proxy=http://127.0.0.1:8118;export https_proxy=http://127.0.0.1:8118; |
参考文档
Twist脚本github地址
Debian11下编译安装Shadowsocks-libev
Linux中使用ShadowSocks+Privoxy代理