使用DigitalOcean配合Shadowsocks多平台下访问国外互联网

in #digitalocean7 years ago

前言

昨日本来想在服务器上安装一下Kubernetes,奈何折腾半天一直无法成功,原因不必细说,一句话网络的问题,大家都懂。Windows下这个问题还比较容易解决,只需要下个Latern,免费的也就基本够用了,然而在Ubuntu Server下貌似这个问题就不是那么容易解决了,并且如果为安全性考虑的话Latern恐怕也不是首选。但是任何问题总有解决的办法的,折腾半天终于使用DigitalOcean配合Shadowsocks实现了多平台下访问国外互联网,这里简单记录之。本文只探讨技术问题,各位读者自行把握,不要用来干坏事。

一、DigitalOcean

DigitalOcean是一个国外虚拟服务器提供商,当然你也可以考虑阿里云国外服务器。DigitalOcean性价比还可以,并且注册会送10$,最便宜的服务器是5$,这样我们就可以免费用两个月,足够我们临时用一下了。DigitalOcean网址https://cloud.digitalocean.com,注册成功后创建一个虚拟机,速度非常快,不到一分钟即可创建完毕,记住ip、用户名、密码即可使用xshell远程登录。

二、服务器安装shadowsocks

登录刚刚创建的服务器,执行:

apt-get install python-pip
pip install shadowsocks

这样即可安装完毕shadowsocks,创建配置文件:/etc/shadowsocks.json

{
 "server":"<ip>",
 "server_port":8388,
 "local_address": "127.0.0.1",
 "local_port":1080,
 "password":"<pass>",
 "timeout":300,
 "method":"aes-256-cfb",
 "fast_open": false
}

根据自己的实际情况修改上面的配置,此处password任意设置,需要记住用于后续客户端连接。执行如下命令后台启动之:

ssserver -c /etc/shadowsocks.json -d start

三、多平台连接

windows平台可以直接下载相应的客户端配置即可(见(http://shadowsocks.org/en/download/clients.html)),配置项输入服务器端的配置。

麻烦的是Ubuntu server下,折腾半天才成功。

首先用与服务器端同样的方式安装shadowsocks,不再赘述。

同样创建一个/etc/shawdowsocks.json配置文件,执行如下命令启动客户端:

sslocal -c /etc/shawdowsocks.json -d start

启动shawdowsocks服务后,发现并不能翻墙上网,这是因为shawdowsocks是socks 5代理,需要客户端配合才能翻墙。

为了让整个系统都走shawdowsocks通道,需要配置全局代理,可以通过polipo实现。其实polipo的功能就是再对127.0.0.1:1080端口进行一次代理,变成了127.0.0.1:8123。

首先是安装polipo:

sudo apt-get install polipo

接着修改polipo的配置文件/etc/polipo/config:

logSyslog = true
logFile = /var/log/polipo/polipo.log
proxyAddress = "0.0.0.0"
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32

重启polipo服务:

sudo /etc/init.d/polipo restart

为终端配置http代理:

export http_proxy="http://127.0.0.1:8123/"

执行到这一步理论上是没有问题了,但是我用wget一个网页始终没有结果,折腾的我已经开始怀疑人生了,各种检查各种搜索始终不得答案,在我正准备放弃的时候突然想到一个问题,我wget的网页是https的,而此处export的是http_proxy,会不会再export一个https_proxy就可以了呢,一试果然可以。

export https_proxy="http://127.0.0.1:8123/"

我猜测这是因为http_proxy只负责代理http流量,https_proxy负责代理https流量,这样就可以正常访问国外网络了。

四、开机自启

需要进行一些简单的配置,使得服务器端和客户端都能开机自启。

首先在服务器端将以下命令写入/etc/rc.local的最后一行之前:

ssserver -c /etc/shadowsocks.json -d start

Widows平台同样无需多言,Ubuntu Server客户端下同样将以下命令写入/etc/rc.local的最后一行之前

sslocal -c /etc/shadowsocks.json -d start

再将下面两句写入~/.bashrc

export http_proxy="http://127.0.0.1:8123/"
export https_proxy="http://127.0.0.1:8123/"

五、总结

本文简单介绍了如何使用DigitalOcean配合Shadowsocks实现多平台下访问国外互联网,并介绍了自己发现的关于https的一个坑。再次重申,本文仅仅作为技术交流,各位看官不要用来干坏事,本人不承担由此引发的任何责任。