0%

软件 | shadowsocks 服务器搭建

首先,我坚决拥护党和国家的政策,墙的存在是现代社会中必须存在的事物。但是,有的时候科研和程序员对于外面信息的获取还是刚需的。

为了让有志青年尽早的获取最新的信息,所以,搞了这个搭建教程。希望大家不忘初心,为了民族伟大复兴而努力。


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日


阿里云现在几乎秒封下面的方法,网上虽然有其他手段,但是,都是以换端口为目的,很鸡肋,可以参考

上面两个都要设置对应端口的出站规则。


2021年4月21日更新


安装Snap应用商店

通过 Snap 应用商店安装 Shadowsocks-libev 是官方推荐的方式。

  • 如果你的服务器运行Ubuntu 16.04 LTS及以上的版本,Snap已经默认安装好了。
    • 我用了阿里云和七牛云的 18.04 版本,是没有安装 snap 的,所以,你需要执行下面的命令进行安装
    • apt install snapd 「一般云服务器都会安装失败,这是镜像原因,更换清华源镜像就好了」
  • 如果你的服务器运行了其他的Linux发行版,你只需跟着对应的发行版安装Snap core

现在来检测一下你的服务器已经安装了需要的snapdSnap 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
2
3
4
5
6
7
8
{
"server":["::0","0.0.0.0"],
"server_port":8388,
"encryption_method":"chacha20-ietf-poly1305",
"password":"ExamplePassword",
"mode":"tcp_only",
"fast_open":false
}

注意,你需要把里面的ExamplePassword替换成一个更强的密码。 强密码有助缓解最新发现的针对Shadowsocks服务器的Partitioning Oracle攻击。 你可以用以下命令在终端生成一个强密码:

openssl rand -base64 16。

你还可以考虑将server_port的值从8388改为102465535之间的任意整数。

现在打开通过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

然后开放有关sshShadowsocks-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.

但是,我还没开始尝试,我现在先把链接放一下。

参考资料


请我喝杯咖啡吧~