随着封锁的严重,通往外面世界的路越来越少。从另一角度看,封锁推动了相关技术的发展。目前流行的开源相关技术包括Shadowsocks(SS、酸酸)、ShadowsocksR(SSR、酸酸乳)、V2Ray、trojan、WireGuard等,直接服务终端用户的VPN和代理产品更是数不胜数。
推荐使用 V2ray 或者 Xray 部署服务端,两者最新版已经移除了不安全的流加密算法,仅支持AHEAD系列算法,其中最新版Xray还支持单端口多用户模式。
对于有技术基础的同学,我一直建议且践行自行搭建服务器这条路,主要出于以下几点考虑:
- ExpressVPN、NordVPN等产品并不比自建便宜,速度上也无太多优势;
- 许多付费代理常有不可用或跑路的事情发生,相比之下vps厂商跑路更少;
- 万一对方服务器记录访问日志,请喝茶一请一个准;
- 自建服务器能全方面锻炼你的网络、系统管理、英文等能力。
大体上看,自建服务器分为三步:
- 购买海外服务器,可参考 一些vps商家整理,
- 部署服务端,这是本文的重点;
- 下载并配置客户端,连接上网。客户端和配置教程:Shadowsocks/SS客户端、ShadowsocksR/SSR客户端、 V2Ray客户端 以及 trojan客户端下载
本文讨论第二步:部署Shadowsocks/SS服务端。SS支持多平台,是近几年来一直有效的技术,部署和使用上都非常方便。鉴于其开源、简单易用且稳定的特点,从项目诞生以来本人一直在用且推荐。
SS现状
SS的原作者是clowwindy,每一位使用SS的人都不应该忘记。原作者2015年被有关部门请去喝茶,然后删除了GitHub上的项目。目前的SS由社区维护,社区官网是 https://shadowsocks.org。SS相关的各个项目的代码库坐标可参见官方的GitHub主页:https://github.com/shadowsocks。ss虽然已经变动不大,但社区一直活跃。
ShadowSocksR(SSR)是SS的一个分支,由breakwa11(破娃酱)创建。SSR在SS基础上加入了混淆/伪装的特性。SSR Github上的各个项目基本已不再更新
,但最新版的SSR基本上满足科学上网的需要。
目前风头最劲的当然是V2Ray,功能强大且抗干扰能力强,使用可参考 V2Ray教程 以及 V2Ray高级技巧:流量伪装。另一个轻量级抗干扰能力强的是trojan,详情可参考:trojan教程。WireGuard目前确定被纳入Linux内核,但它是VPN,翻墙效果不如SS/SSR/V2Ray。
SS分服务端和客户端,接下来分两部分讨论。
SS服务端部署教程
clowwindy写的Python服务端版本已经停止更新,不建议使用。目前仍处于活跃开发的服务端版本有libev(C语言)、go(两个)和rust。相对于原版,这几个版本占用资源少,性能更好,推荐使用。
下文以libev版(目前最广泛使用的版本)说一下服务器端的部署,前提是你有一台境外服务器。CentOS/Fedora/RHEL系统建议从librehat维护的官方源安装SS。librehat是SS多个项目的核心贡献者,其中文博客:https://www.librehat.com/。其他系统的安装和使用请参考libev项目:https://github.com/shadowsocks/shadowsocks-libev。
在CentOS 7下安装libev版的步骤是:
- 从https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/下载软件源配置文件放到
/etc/yum.repos.d
目录下:wget -O /etc/yum.repos.d/librehat-shadowsocks-epel-7.repo 'https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo'
- yum安装libev版的SS:
yum install -y shadowsocks-libev
接下来编辑/etc/shadowsocks-libev/config.json配置文件,主要是填写端口号和密码。单用户配置文件为:
{
"server":"0.0.0.0",
"server_port":35697,
"local_port":1080,
"password":"#SADFas890as@#ASD",
"timeout":60,
"method":"aes-256-cfb",
"fastopen": true
}
关于加密算法的选择,个人建议使用AES-256-CFB。原因是加密强度足够高,并且几乎所有的客户端都支持(许多客户端不支持gcm类算法)。一些加密算法,例如table和RC4,因安全性不够,不建议使用。
配置好后,设置开机启动:
systemctl enable shadowsocks-libev && systemctl start shadowsocks-libev
注意:多用户配置应该使用ss-manager
命令(ss-server
不会识别多用户的配置),对应的配置文件是/etc/shadowsocks-libev/manager.json
。一个多用户的配置示例:
{
"server":"0.0.0.0",
"local_port":1080,
"timeout":60,
"port_password": {
"8080":"mima1",
"8081":"mima2"
},
"method":"aes-256-cfb",
"fastopen": true
}
后台执行的命令是:nohup ss-manager -c /etc/shadowsocks-libev/manager.json > /dev/null 2>&1 &
。
如果开启了防火墙,记得将SS的端口放行。
除了部署服务端,强烈建议安装bbr模块加快网速。CentOS 7上的安装教程请参考:CentOS 7开启BBR。
SS客户端
根据操作系统不同,各个平台的客户端下载地址如下:
Windows/PC
,官方Github项目地址:https://github.com/shadowsocks/shadowsocks-windows,编译好的exe下载地址:https://github.com/shadowsocks/shadowsocks-windows/releases;Mac
: 官方Github地址:https://github.com/shadowsocks/ShadowsocksX-NG,编译好的安装包下载地址:https://github.com/shadowsocks/ShadowsocksX-NG/releases;android/安卓
:官方Github地址:https://github.com/shadowsocks/shadowsocks-android,编译好的APK地址:https://github.com/shadowsocks/shadowsocks-android/releases跨平台
:libQtShadowsocks或者shadowsocks-qt5,有可能需要自行编译。
由于Github客户端的下载链接可能指向被封的AWS服务器,本站提供了最新版的国内下载地址:shadowsocks/ss客户端。针对ios
无法下载的问题,请参考“获取ios科学上网客户端”
下载安装好客户端后,首先配置服务器信息,测试与服务端连接是否正常。因安装包自带的PAC文件较旧,新加入的被屏蔽网址需要全局模式或者修改本地PAC文件才能正常访问。所以安装好后建议更新PAC信息,及时获取最新被屏蔽的网址列表。具体操作为:
右键SS客户端->PAC->从GFWList更新本地PAC
接着勾选“启用系统代理”,浏览器无需安装Switchy Omega等插件,使用系统代理的应绝大部分软件也能无需任何特殊设置,便能顺畅的访问外网,非常方便。
本文到此该结束了。如有疑问或建议欢迎指出,感谢阅读!
请问shadowsocks能否使用http或者ssl协议呢?
可以转发这两种协议的流量
那请问这个要怎么操作呢?我尝试用obfs混淆,但是出来的流量没有host也没有SNI,根本起不到效果
obfs混淆不是tls加密,只是伪装成http流量而已
不要用一键安装!不要用一键安装!不要用一键安装!坑死人不偿命!自己配置一下很简单。一键安装不知道值入一堆什么东西一堆端口被开着,ip才用两天就被墙了,后面重新整了个ip已经一周没事了,端口也就开了几个。
我是扫描二维码,结果也是没几天就封了,显示的是
System.Exception:端口 1080 是系統保留端口— >
System.Net.Sockets.SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试。
Z System.Net.Sockets. Socket.DoBind(EndPoint endPointSnapshot,
SocketAddress socketAddress)
# System.Net.Sockets.Socket.Bind(EndPoint localEP)
# Shadowsocks.Controller. Listener. Start(Configuration config)
# Shadowsocks.Controller.ShadowsocksController.ReloadO
—内部异常堆栈跟踪的结尾一-
我该怎么解决这个问题,求大佬解惑
重启电脑,然后再尝试
昨天刚搭建,今天就被封了,快乐不过一天
现在ss容易封,建议用带伪装的v2ray
请教下,按照这个配置流程走完,客户端terminal可以ssh到服务端ip,telnet查看服务端port也正常,仔细对比了客户端和服务端的config都一致,依然无法科学上网,请教下如何排查?
换个浏览器或者在手机上试试
博主请教一下,复制了客户端,然后重新导入了新的节点,但是一开就提示系统找不到指定文件是怎么回事
应该是配置文件不对或者没有建立
现在shadowsocksX-NG为啥没有了编辑订阅,打开就是服务器设置。
建议用clashX
感谢博主的更新ss服务端安装方法,然而我在尝试打开config.json文件时出现了以下报错
[root@Host-By ~]# /etc/shadowsocks-libev/config.json
bash: /etc/shadowsocks-libev/config.json: Permission denied
当前已经是root账号了为何还会出现Permission denied?还是我哪里的打开方式不对?
需要用编辑器打开:vi /etc/shadowsocks-libev/config.json
vim
几个月前用楼主的教程使用SS成功,结果昨天被BAN了。本来想再用楼主的教程,按照楼主的方法操作前两步,再修改config.json文件里的server、server_port、local_port、password这几项内容然后设置开机启动,这些步骤做下来之后并没有成功科学上网。思考之前使用楼主这边的脚本为什么能成功当时是怎么操作的我竟然全忘了。
有可能是防火墙没打开
防火墙的话是把windows的防火墙中针对SS应用程序放行全部端口,还是只针对我使用的端口?
还是在Centos7中把防火墙的端口打开?
我用firewall-cmd –zone=public –add-port=xxxx/tcp –permanent把我使用的端口打开以后在SS的日志里面就会提示:
|WARN|Shadowsocks.Controller.TCPHandler|System.Net.Sockets.SocketException (0x80004005): 由于目标计算机积极拒绝,无法连接。
在 Shadowsocks.Util.Sockets.WrappedSocket.EndConnect(IAsyncResult asyncResult)
在 Shadowsocks.Proxy.DirectConnect.EndConnectDest(IAsyncResult asyncResult)
在 Shadowsocks.Controller.TCPHandler.ConnectCallback(IAsyncResult ar)
服务器的防火墙
楼主有个问题想请教您,我发现用不同的wifi(网络)有的能正常使用SSR但有的却连VPS都连不上了,它们都是能正常上网(国内),有的速度还挺快的,您遇到过吗?
经常遇到,运营商的问题
一定要用aes-128-gcm或aes-256-gcm
目前推荐用chacha算法
用你GitHub的脚本直接建立的,但是最后在服务端没有找到/etc/shadowsocks-libev/config.json,自己创建了一个,最后发现不能用
脚本输出发过来看看
不需要太高调,用的人太多自然会被墙,最近真是越来越难了
国庆前后挂的太多,希望节后能好点
编辑/etc/shadowsocks-libev/config.json配置文件
这步该咋配置啊。。应该输啥指令?直接把大括号粘进去显示这个
-bash: server:207.148.97.184,: command not found之类的
博主出个ss服务端的一键安装教程呗
我的github上有安装bbr、ss的一键安装脚本:<https://github.com/tlanyan/Scripts/blob/master/aliyunSS.sh>
前天服务器又被block了!ss的特征是不是被识别出来的?
马上十一敏感时期,这几天又封了很多,属于正常现象。目前没有明显证据表明ss流量被识别出来了