首先,我坚决拥护党和国家的政策,墙的存在是现代社会中必须存在的事物。但是,有的时候科研和程序员对于外面信息的获取还是刚需的。
为了让有志青年尽早的获取最新的信息,所以,搞了这个搭建教程。希望大家不忘初心,为了民族伟大复兴而努力。
AWS 2023-2-19
在使用 AWS 的 shadowsocks 的时候,有一个端口莫名其妙的用不了了,不知道是被封了还是其它原因,细节没有探究,转向 v2ray 协议了。请参考
AWS 2023-2-18
AWS
只需要把程序安装开启,然后开启入站规则就好了,不需要设置防火墙。
当然,AWS
需要 root
权限,请参考
购买阿里云
我们必须购买一个境外服务器,在这里我选择了香港服务器。
我的配置是最低的,但是,我搭建完使用的时候,发现看 1080p 的 YouTube 非常流畅。
我的配置如下
- ubuntu 16.04
- 1Mbit 带宽
- 有外部 IP
因为没有任何优惠,而且,情况又比较紧急,所以,购买了,大概「79.15」。如果,你是双十一购买的话,或许 3 年才 299 元,真的是非常实惠了。。。
不过,这次也不是我交钱。
有一点要注意的是,国内的服务器需要备案,但是,国外的服务器购买完之后就可以直接用。
2022年10月27日
最近发现了 v2ray
的一键式脚本,非常之舒服,并且,还能在阿里云上使用。
我在 v2ray
的基础上,借助 nginx
的端口转发功能,开发了一套低成本静态 IP
转发流程,如果你感兴趣,可以查看
看完这套流程,下面的内容几乎不用看了,而且是一键式傻瓜安装,还是非常 nice
的。
ps: 2022-10-28 抵制阿里云,从我做起,我现在已经全面拥抱 AWS
了。
千万别用阿里云,非常难受,非常难受,非常难受。
2022年3月20日
阿里云现在几乎秒封下面的方法,网上虽然有其他手段,但是,都是以换端口为目的,很鸡肋,可以参考
AWS 进行 2021年4月21日更新的部署,可以
- 测试时间 2022/6/4
七牛云 进行 2021年4月21日更新的部署,可以
上面两个都要设置对应端口的出站规则。
2021年4月21日更新
安装Snap应用商店
通过 Snap
应用商店安装 Shadowsocks-libev
是官方推荐的方式。
- 如果你的服务器运行
Ubuntu 16.04 LTS
及以上的版本,Snap
已经默认安装好了。- 我用了阿里云和七牛云的
18.04
版本,是没有安装snap
的,所以,你需要执行下面的命令进行安装 apt install snapd
「一般云服务器都会安装失败,这是镜像原因,更换清华源镜像就好了」
- 我用了阿里云和七牛云的
- 如果你的服务器运行了其他的
Linux
发行版,你只需跟着对应的发行版安装Snap core
。
现在来检测一下你的服务器已经安装了需要的snapd
和Snap core
:
sudo snap install core
我在阿里云安装的时候,出错,是因为镜像的原因,所以,我更新了阿里云的镜像,请参考。
更新镜像,要用启动这个源,不是把配置文件换了就可以了,请参考上面的博文。
也就是,修改完配置后,使用
sudo apt-get update && sudo apt update
当然,这里还可以执行一下,更新程序命令
sudo apt-get upgrade
安装Shadowsocks-libev
现在我们安装最新的 Shadowsocks-libev
:
sudo snap install shadowsocks-libev --edge
配置
下面是我们推荐的 Shadowsocks-libev
服务器配置:
1 | { |
注意,你需要把里面的ExamplePassword
替换成一个更强的密码。 强密码有助缓解最新发现的针对Shadowsocks
服务器的Partitioning Oracle
攻击。 你可以用以下命令在终端生成一个强密码:
openssl rand -base64 16。
你还可以考虑将server_port
的值从8388
改为1024
到65535
之间的任意整数。
现在打开通过Snap
安装的Shadowsocks-libev
默认的配置文件:
sudo nano /var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
将上方替换过密码的配置信息复制粘贴到配置文件后, 按Ctrl + x
退出。 退出时,文本编辑器将问你”Save modified buffer?
“,请输入y
然后按回车键。
可以看到,通过Snap
安装的Shadowsocks-libev
默认的配置文件路径太长了,不便于记忆。同时默认配置路径又没有在官方文档中标出。
防火墙
我们使用 ufw
来管理 Shadowsocks
服务器的防火墙。
在基于Debian
的服务器上,可以通过如下命令安装ufw
:
sudo apt update && sudo apt install -y ufw
然后开放有关ssh
和Shadowsocks-libev
的端口。 请注意,以下命令假设你在/var/snap/shadowsocks-libev/common/etc/shadowsocks-libev/config.json
中的server_port
的值为8388
。
如果你的server_port
用了其他的值,请对以下命令作相应的修改:
sudo ufw allow ssh
sudo ufw allow 8388/tcp
现在我们启动ufw
:
sudo ufw enable
启动时如果弹出Command may disrupt existing ssh connections. Proceed with operation (y|n)?
,请输入y
并按回车键。
最后,请用sudo ufw status
检查一下你的配置是否和下面的一样:
Status: active
To Action From
-- ------ ----
SSH ALLOW Anywhere
8388/tcp ALLOW Anywhere
SSH (v6) ALLOW Anywhere (v6)
8388/tcp (v6) ALLOW Anywhere (v6)
运行Shadowsocks-libev
现在我们启动Shadowsocks-libev
:
sudo systemctl start snap.shadowsocks-libev.ss-server-daemon.service
记得设置Shadowsocks-libev
开机自启动:
sudo systemctl enable snap.shadowsocks-libev.ss-server-daemon.service
维护
检查运行状态和日志
以下命令可以查看Shadowsocks-libev
的运行状态:
sudo systemctl status snap.shadowsocks-libev.ss-server-daemon.service
如果你看到绿色的Active: active (running)
,那么你的Shadowsocks-libev
服务器就在正常的运行; 如果你看到红色的Active: failed
,请用跳至如下命令journalctl -u snap.shadowsocks-libev.ss-server-daemon.service
的尾部查看问题出在哪里了。
重新加载配置文件
每当你修改过配置文件后,请用如下命令重启Shadowsocks-libev
以加载修改后的文件:
sudo systemctl restart snap.shadowsocks-libev.ss-server-daemon.service
另外,对于阿里云来说,你除了需要开启防火墙,还需要配置安全组。请自行查阅相关的资料。
另外,还有一系列伪装的技巧。
- 构建一个
web
网站,让访问流量好像是在访问web
在上面的参考资料中,还有很多很有价值的回答,请自行查看。
ps: 假设上面的步骤都没有问题,你本地换了之后,还是不能使用服务器 ip
的话,可能是服务商需要设置安全组。
我使用的平台,包括七牛云、阿里云都需要设置。具体的搜索引擎解决吧。
2021年4月21日下面的教程不具备指导意义了,请参考上面
- 请看上面!!!!
- 请看上面!!!!
- 请看上面!!!!
当然,如果被封了,可以参考下面来换个端口。
卸载阿里云盾(安骑士)服务
由于阿里会检测服务器是否存在ss,如果保留安骑士,阿里云会给你发邮件警告。
如果你是首次购买服务器,请在购买时直接反选安骑士服务。
如果已经安装了安骑士,那么我们需要使用以下命令移除:
wget http://update.aegis.aliyun.com/download/uninstall.sh
chmod +x uninstall.sh
./uninstall.sh
wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh
chmod +x quartz_uninstall.sh
./quartz_uninstall.sh
pkill aliyun-service
rm -rf /etc/init.d/agentwatch /usr/sbin/aliyun-service /usr/local/aegis*
rm uninstall.sh
rm quartz_uninstall.sh
配置过程
我们的系统中,初始安装了 py2.7 和 py3.5 ,我们用的是 2.7.
ShadowSocks的安装包在GitHub上有很多版本,我这里选择的是通过Python的包管理工具pip直接自动安装。
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" //下载pip安装包
python get-pip.py //安装pip
pip install shadowsocks //安装shadowsocks
这3个命令执行完,服务端实际已经安装完毕了,没错,安装就是这么简单,搭代理没想的那么麻烦,下面还差的就是配置了。
vim /etc/shadowsocks.json
我们就编写这个文件。
{
"server":"12.2.2.2",//如果是阿里云专有网络,切记配的是私有IP不是公有IP,此处是大坑
"server_port": 16637,//服务端监听端口号
"password":"abc",//客户端访问密码
"timeout": 600,//超时时间
"method": "aes-256-cfb"//加密方式,有多种可选,具体不赘述,默认256加密已经够用
}
上面的配置就已经足够了,网上还有其他的配置,但是,配置了多余的,有可能会出错。
如果,你对其他的参数实在是感兴趣,可以看一下下面的链接。
这个时候基本上 shadowsocks
已经配置好了。但是,对于阿里云我们还需要做两个步骤。
- 关闭服务器端口防火墙
- 打开服务器端口的安全组
关闭服务器端口防火墙
iptables -A INPUT -p tcp --dport 16637 -j ACCEPT //设置防火墙规则,允许端口进入
iptables -F //flush规则,使规则生效
ssserver -c /etc/shadowsocks.json --log-file /home/log -d start //启动shadowsocks,输出日志可在/home/log中查看
netstat -apn | grep 16637 //确认1080监听端口已启动,如果没有,查看/home/log日志文件,确认错误原因,一般原因是shadowsocks.json配置错误,对照错误信息修改即可
打开服务器的安全组
阿里云还有一个外部的安全组规则。
登录阿里云控制台,在云服务器ECS->实例->管理->本实例安全组->安全组列表->配置规则->添加安全组规则中,允许1080端口进和出,阿里云界面交互很棒的,一看就会操作。
里面有一个入方向和出方向。
登录大陆地区的服务器,执行 telnet 你的公网ip地址 16637
,如果现实connected即代表服务端已搭建成功,否则请检查防火墙和阿里云安全组是否已开放1080端口
这个时候我们就能愉快的进行学习了。
下载客户端
你可以通过下面的链接下载客户端。
这里说一下选择哪个平台,怎么安装
根据平台下载对应的版本。
- win
- 直接安装就好了
- 我在
win7
中下载图上的链接,最后失败了,但是,win10
是可以的。 win7
我的outline
也用不了
- MacBook
- 把解压出来的文件直接复制到 「应用程序」文件夹就好了
配置信息如下:
- 服务器地址配置你的阿里云公网
ip
- 服务器端口配置
16637
,也就是shadowsocks.json
里配置的server_port
对应值 - 密码配置
shadowsocks.json
里对应的password
值 - 加密方式配置和
shadowsocks.json
里的method
对应值一样即可 - 代理端口使用默认值即可,但是请记住代理端口,该端口需要在浏览器配置代理时使用
- 全局代理会让浏览器走代理服务器,但是,不会让你写的程序走代理,如果让你写的程序走代理的话,需要自己配置
被封了怎么办
如果不幸被封了,那么,要不要慌,只需要换一个端口就好了。
修改下面的信息
/etc/shadowsocks.json
里面的server_port
- 防火墙开启这个端口
- 安全组规则也添加这个端口「可以添加一个范围的端口,这样就不需要老师弄这个安全组规则了」
然后执行
ssserver -c /etc/shadowsocks.json --log-file /home/log -d restart
再次升级
在更换了几次端口号之后,我的服务器被阿里给封了,远程也登不上,所以,我了解到了一个新的技术。 V2ray
.
但是,我还没开始尝试,我现在先把链接放一下。