Fork me on GitHub

用亚马逊云建代理服务器

作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系。

 

我们用电脑、平板、手机等访问互联网时,本地设备和服务器之间的通信有可能因为某些不可控因素被切断。这种情况下,我们可以采用“曲线”的方式,让一个第三方的服务器来做接力,从而连接目标服务器。 代理服务器可以绕过许多基于IP地址的限制。例如某视频网站只允许日本的IP访问,那么可以借助一台在日本的代理服务器,来让视频网站误以为访问者是一台身在日本的电脑。

 

我将使用亚马逊的云服务(AWS)来建立代理服务器。首先需要有AWS的EC2实例。登录AWS网站,按照指导创建即可。可参考亚马逊云架设WordPress博客。选择节点时,最好用距离中国较近的节点,如东京。实例建立后,保存好登录验证用的.pem文件,并记录下IP地址。下面以199.199.199.199的IP地址为例。

 

建立代理服务器

我选择的代理服务器软件是Squid。登录EC2实例,在命令行下安装Squid:

sudo apt-get install squid3

 

编辑/etc/squid3/squid.conf文件。这个配置文件说明了Squid的运行方式。squid.conf的设置很灵活,下面是一个最基本的设置:

# 控制列表,定义all
acl all src all

# 允许all访问
http_access allow all

# squid监听的目标端口
http_port 2046

 

重启Squid服务器,以便加载新的配置:

sudo service squid3 restart

 

现在,你已经有了私人的代理服务器,可以更改本地电脑的网络设置,以便使用代理服务器。在Mac OSX上,在System Preferences->Network->Advanced->Proxies中填上代理服务器的IP地址和端口,就可以开始使用代理服务器了:

199.199.199.199为代理服务器的IP。2046是我们在conf文件中设置的代理端口。在Windows和其他Linux系统中,也可以在系统中设置网络,从而在全局使用代理服务器。也可以在浏览器的设置中启动,只是局部的在浏览器内使用代理服务器。

 

使用SSH隧道连接代理服务器

上面的通信中,Squid代理服务器只起到了接力的作用。但客户端与Squid服务器的通信依然是明文,所以通信安全无法保障。为了进一步加强通信的私密性,可以使用SSH隧道(SSH Tunnel),在本地电脑和代理服务器之间建立秘密通道。

 

建立隧道

 

在Unix电脑上,可以在命令行直接使用ssh:

ssh -i Tokyo-VPN.pem -N -L2046:localhost:2046 ubuntu@199.199.199.199

上面的命令中,Tokyo-VPN.pem是创建EC2实例时的PEM文件。通过这个命令,本地的2046端口和代理服务器的2046端口将建立SSH隧道。两者之间的信息将加密传输,而不用担心外部监听和干扰。

 

还要更改本地代理设置,启用SSH隧道:

需要更改的地方很简单,把之前的代理服务器地址199.199.199.199改为127.0.0.1。

 

访问测试:

 

posted @ 2016-03-22 11:20  Vamei  阅读(10014)  评论(8编辑  收藏  举报