前言
昨日本来想在服务器上安装一下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的一个坑。再次重申,本文仅仅作为技术交流,各位看官不要用来干坏事,本人不承担由此引发的任何责任。