前言

有些场景需要临时且换下搜索引擎,以前一直使用 githubstudent developer pack 提供的优惠在 digitalocean 上搭建 shadowsocks,不过还没到期,digitalocean 提前把优惠结束了,可能受不了来自伟大祖国的压力了吧。修改 hosts 可行但又担心安全性,于是想找个便宜的 VPS,看到有人推荐 sentris,几美元就可以用三年,褒贬不一,由于本身需求不大,仅仅用下搜索引擎而已,且又如此便宜,便尝试了下,结果完全满足需求。

正文

带有推荐的购买链接

http://www.sentris.net/billing/aff.php?aff=396&pid=815

经过我的实验,如下参数搭建 shadowsocks 没有问题,没找到可用的优惠吗,总计 5.49 美元

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CPUs: 1
Disk Size: 5
Swap Size: 0
Memory Size: 64 (need 128 or more for yum or apt-get)
OS Template: Debian 7.0 32-bit Minimal
Bandwidth in MB: 250000
No Refund/Changes: Agree
No Spamming/Abuse: Agree
Login Info: After payment I will find my IP and Password in welcome email or by login to our Client Area-Services-View Details on the product I ordered
Upgrades: I selected correct options and I understand of the different pricing for upgrades via Addons and no changes can be made after order
No Free Reinstall: I agree to pay $2 one time fee per reinstall via Addons
No Backups: I know there is no backup options on this plan
No IP Changes: I will never ask to change IP assigned to me and I will not ask for refund $5.49 USD
------------------------------------------------------
Sub Total: $5.49 USD
Credit: $0.00 USD
Total: $5.49 USD

在 add to cart 后的结算页面可以直接输入账户参数,点击 proceed 直接建立账户并启动付款,当然,也可以提前 sign up 一个新账户。
为了安全性,建议使用 paypal 绑定一个限额的信用卡来付款。

登录系统

付款完毕后,你会在邮箱收到带有服务器 IP 地址以及登录账户和密码的邮件,使用 ssh 客户端比如 putty 等登录服务器。

安装 shadowsocks

建议使用一键安装包,依次输入如下三条指令,然后依据提示输入 shadowsocks 的端口和密码即可。

1
2
3
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR.sh
chmod +x shadowsocksR.sh
./shadowsocksR.sh 2>&1 | tee shadowsocksR.log

安装完成后,脚本会提示相关信息,记录下来:

1
2
3
4
5
6
7
8
9
Congratulations, ShadowsocksR install completed!
Server IP:your_server_ip
Server Port:your_server_port
Password:your_password
Local IP:127.0.0.1
Local Port:1080
Protocol:origin
obfs:plain
Encryption Method:aes-256-cfb

shadowsocks 的控制

脚本安装完成后,脚本 已将 ShadowsocksR 自动加入开机自启动。
使用命令:
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status
配置文件路径:/etc/shadowsocks.json
日志文件路径:/var/log/shadowsocks.log
代码安装目录:/usr/local/shadowsocks

iptables 设定

看到网上有人提示流量计费不准,有可能被停止服务,所以准备开启 iptables ,相对来说安全一些。

查看当前iptables规则

1
iptables -L

保存设定规则

1
iptables-save > /etc/iptables.rules

修改保存的规则

1
vim /etc/iptables.rules

在最后的 #complete 提示之前添加如下代码,只开启 22,80,3306,21,你设定的ss port(本例为8888)等必要的端口。

1
2
3
4
5
6
7
8
9
10
11
12
13
*filter
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8888 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 8888 -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT

保存上述规则后立即应用

1
iptables-restore /etc/iptables.rules

添加 iptables 的自启动

1
vim /etc/network/if-pre-up.d/iptables

添加如下代码

1
2
3
#!/bin/bash
iptables -F
iptables-restore /etc/iptables.rules

赋予可执行权限,这样 iptables 开机就会应用设定的规则了。

1
chmod +x /etc/network/if-pre-up.d/iptables

附 shadowsocks 客户端下载链接

安装后按照上边记录的参数添加服务器,更新 PAC 规则,然后使用该服务器即可。

MAC: https://github.com/shadowsocks/shadowsocks-iOS/releases
WIN: https://github.com/shadowsocks/shadowsocks-windows/releases

实际使用效果

北方联通,搜索点东西完全没有问题,youtube 看个视频缓冲会儿也没啥问题,不像有些人说的完全不可用,不过还得看用一段时间看看稳定性如何。

使用 Kcptun 加速访问

如果觉得网速较慢,则可以尝试安装加速软件提速,只在服务器端安装的加速软件例如锐速等并不适用于基于 openvz 架构的 vps ,双侧的即服务器端客户端都需要安装软件的,可以试试 kcptun,经过我在 64M 的 VPS 测试安装之后的结果来看,看 720p 是妥妥的,出乎意料。

Kcptun 服务器端安装

到网站查看最新版本

1
https://github.com/xtaci/kcptun/releases

其中 darwin 是给 macOS 用的,,debian 选择 linux 版本,根据自己系统选择是 386 还是 amd64

下载并解压

1
2
3
4
mkdir kcptun
cd kcptun
wget https://github.com/xtaci/kcptun/releases/download/v20161009/kcptun-linux-386-20161009.tar.gz
tar zxvf kcptun-linux-386-20161009.tar.gz

解压之后会得到两个文件,一个是服务器端用的,一个是客户端用的,接下来我们创建配置文件。

1
vim server-config.json

加入如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"listen": ":9999",
"target": "127.0.0.1:8888",
"key": "test",
"crypt": "salsa20",
"mode": "fast2",
"mtu": 512,
"sndwnd": 256,
"rcvwnd": 1024,
"datashard": 70,
"parityshard": 30,
"dscp": 46,
"nocomp": false,
"acknodelay": false,
"nodelay": 0,
"interval": 40,
"resend": 0,
"nc": 0,
"sockbuf": 4194304,
"keepalive": 10
}

其中 listen 是要本地服务的端口,如果你设置了 iptables ,记得把它加入规则允许该端口数据通过。
target 是要加速的本地服务的端口,这里就是 shadowsocks 的服务端口
key 是 kcptun 的服务密钥,服务器端和客户端要一致
crypt 选择了较为快速的 salsa20
其他默认即可

接下来创建三个脚本用于方便的控制服务的启停。

启动脚本

1
vim /root/kcptun/start.sh

内容如下

1
2
3
4
#!/bin/bash
cd /root/kcptun/
./server_linux_amd64 -c /root/kcptun/server-config.json > /dev/null 2>&1 &
echo "Kcptun started."

停止脚本

1
vim /root/kcptun/stop.sh

内容如下

1
2
3
4
5
6
7
8
#!/bin/bash
echo "Stopping Kcptun..."
PID=`ps -ef | grep server_linux_amd64 | grep -v grep | awk '{print $2}'`
if [ "" != "$PID" ]; then
echo "killing $PID"
kill -9 $PID
fi
echo "Kcptun stoped."

重启脚本

1
vim /root/kcptun/restart.sh

内容如下

1
2
3
4
5
#!/bin/bash
cd /root/kcptun/
sh stop.sh
echo "Restarting Kcptun..."
sh start.sh

设置为可执行

1
chmod a+x *.sh

设置服务开机启动,将如下代码加入 /etc/rc.localexit 0 前面

1
sh /root/kcptun/start.sh

好了,到此为止,服务器端搞定,执行 ./start.sh 启动吧。

Kcptun 客户端安装

客户端其实刚才下载解压的文件中,以 client 开始的就是,不过我们大部分是在 Windows 或者 macOS 里安装,所以还得下载一下相应的版本

Windows 下有直接的图形化客户端可用,参见 https://git.oschina.net/ragnaroks/KcptunGUI/releases 这里重点说下 macOS 下的安装。

安装 homebrew

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装 wget

1
brew install wget

下载解压为 macOS 准备的包

1
2
wget https://github.com/xtaci/kcptun/releases/download/v20161009/kcptun-darwin-amd64-20161009.tar.gz
tar zxvf kcptun-darwin-amd64-20161009.tar.gz

创建配置文件

1
vim client-config.json

输入如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"localaddr": ":9999",
"remoteaddr": "xx.xx.xx.xx:9999",
"key": "test",
"crypt": "salsa20",
"mode": "fast2",
"conn": 1,
"autoexpire": 60,
"mtu": 512,
"sndwnd": 256,
"rcvwnd": 1024,
"datashard": 70,
"parityshard": 30,
"dscp": 46,
"nocomp": false,
"acknodelay": false,
"nodelay": 0,
"interval": 40,
"resend": 0,
"nc": 0,
"sockbuf": 4194304,
"keepalive": 10
}

这里 localaddr 是本机服务端口,任选,为了好记可以选择和服务器一样的。
remoteaddr 是 kcptun 服务器端的 IP 和端口
key 和 crypt 同服务器

创建启动和关闭脚本

1
vim ~/Program/kcptun/start.sh

添加如下内容

1
./client_darwin_amd64 -c ./client-config.json > /dev/null 2>&1 &

添加 shadowsocks 服务器

新创建一个 shadowsocks server ,然后除去端口填写本地 kcptun 的服务端口之外,其他信息诸如密码、加密方式等,都填写 shadowsock server 的。然后切换到该服务器尝试下是否成功。

提示

请遵守国家法规