正向代理原理到实践——搭梯子

Linux 一零 1年前 (2017-11-30) 522次浏览 0个评论

1.正向代理背景

因为某些限制,导致在大陆无法正常访问国外的某些网站,正向代理的出现刚好解决了这个问题,利用正向代理可以实现对谷歌、YouTube、Facebook 等的访问。

2.正向代理的原理

正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。正向代理的典型用途是为在防火墙内的局域网客户端提供访问 Internet 的途径。正向代理还可以使用缓冲特性(由 mod_cache 提供)减少网络使用率。使用 ProxyRequests 指令即可激活正向代理。因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务

3.Socks 代理简介

socks 代理相应的采用 socks 协议的代理服务器就是 SOCKS 服务器,是一种通用的代理服务器。Socks 是个电路级的底层网关,是 DavidKoblas 在 1990 年开发的,此后就一直作为 Internet RFC 标准的开放标准。Socks 不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如 FTP、HTTP 和 NNTP 请求)。所以,Socks 代理比其他应用层代理要快得多。它通常绑定在代理服务器的 1080 端口上。如果在企业网或校园网上,需要透过防火墙或通过代理服务器访问 Internet 就可能需要使用 SOCKS。一般情况下,对于拨号上网用户都不需要使用它。注意,浏览网页时常用的代理服务器通常是专门的 http 代理,它和 SOCKS 是不同的。因此,能浏览网页不等于一定可以通过 SOCKS 访问 Internet。

4.shadowsocks 简介

简单理解的话,shadowsocks 是将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,所以下面这个原理图基本上和利用 ssh tunnel 大致类似

  • 2、5) ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的 TCP 包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密
  • 1、6) 客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了上面被 GFW 通过特征分析进行干扰的问题
  •  3、4) ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回。

5.动手实践搭梯子

首先购买了一台位于境外的 VPS,经过挑选后购买了一台香港的 VPS,VPS 的系统为 CentOs6.6,登录进去后首先安装 epel,epel 是 centos 的衍生发行版,用来弥补 centos 内容更新有时比较滞后或是一些扩展的源没有的问题。

安装命令:

yum install epel-release 

具体情况如图:

第二步是更新依赖包。命令:

yum update

执行该命令时会更新所有需要更新的依赖包,根据系统的版本的不同所需更新的依赖包数目也不同。不过在执行 yum 命令时可能会遇到错误,无法正常利用 yum 命令下载,这时候需要将/etc/yum.repos.d/epel.repo 中的 baseurl 注释掉然后对 mirrorlist 取消注释,具体见下图。

第三步:下载安装python-setuptools m2crypto supervisor

其中 python-setuptools 是 python 包管理工具;为了让 shadowsocks 能够支持更多的加密方式,必须要安装 M2Crypto;Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。

命令:

yum install python-setuptools m2crypto supervisor

 

第四步:下载安装pip

命令:

easy_install pip

第五步:pip 下载安装shadowsocks

命令:

pip install shadowsocks

因为系统 6.x 默认安装的为 python2.6,所以在下载安装时会出现警告,不过不影响正常下载,可以忽略,不过推荐安装高版本的 python。至此为止,如果系统在安装 shadowsocks 过程中并不报错,则说明安装成功,下面则是对 shadowsocks 进行相应的配置。

第六步:编辑配置文件shadowsocks.json

命令:

vi /etc/shadowsocks.json 

编辑的内容如图:

第七步:修改配置文件supervisord.conf

命令:

vi /etc/supervisord.conf

[program:shadowsocks]
command=ssserver -c /etc/shadowscoks.json
autostart=true
autorestart=true
user=root
log_stderr=true
logfile=/var/log/shadowsocks.log

 

第八步:编辑配置文件。命令:

vi /etc/rc.local

在文件中添加service supervisord start ,这条命令是启动已经配置好的 shadowsocks 服务,当服务器重新启动后这条命令会执行,这样就可以避免当服务器重启后正向代理服务无法继续正常使用的问题。

启动 shadowsocks

nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &

开机启动设置

echo " nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &" /etc/rc.local

查看状态:

ps aux |grep sslocal |grep -v "grep"

前台运行(Ctrl+C 或者关闭终端服务会自动停止):

ssserver -c /etc/shadowsocks.json

后台运行(推荐,关闭终端后服务会继续运行):

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

第九步:保存好所有修改的配置文件然后重启服务。至此,正向代理服务器已搭建好,下一步就是利用 shadowsocks 客户端实现对某些网站的访问,在服务器中启动了 shadowsocks 服务,然后在客户端配置,首先设置服务器 ip,就是自己的 vps 地址,然后再设置服务器端口,这里设置的是 10080,密码就看自己是如何设置的,加密方式选择 aes-256-cfb,备注自己设置,代理端口设置 1080,这些信息都在服务器配置的文件 shadowsocks.json 文件中,配置好之后就可以利用正向代理上网。具体效果见下图。

如果是手机上网的话则需要先下载一个手机 app,名为“影梭”,配置方式跟电脑客户端基本相同,然后开启就可实现对 google 等的访问。


爱码星 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:正向代理原理到实践——搭梯子
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到