代理那些事儿

前言

我本人是从大三开始接触的shadowsocks,是一位朋友把他自己的VPS共享给我,让我一起使用的(实名感谢这位同学)。从那以后就开启了使用google之路。但是说实话,当时只知道打开软件,按照同学的要求填入VPS的相关数据,然后在浏览器里打开谷歌,发现能上了,就这么完事儿了,事后也没有深究,秉承着能用就行的态度,倒也省了不少事。

代理的分类

从我日常接触到的代理,有以下这些:

  • socks代理,有两种,一种是socks4(基本没人用了),只支持tcp,没有认证和upd支持;另一种是socks5代理,很多人用,支持tcp和udp协议,支持身份认证。
  • http代理
  • ftp代理
  • ssh代理(emmm其实放到这里是错误的,但是ssh太强大了)

socks5代理

这个协议最初由David Koblas开发,而后由NEC的Ying-Da Lee将其扩展到版本4。最新协议是版本5,与前一版本相比,增加支持UDP、验证,以及IPv6

根据OSI模型,SOCKS是会话层的协议,位于表示层传输层之间。

socks5工作层比http代理更低,这意味着它可以有更广泛的使用空间。

实现socks5协议的软件层出不穷,比较有代表性的有以下这些:

这里我就先以Brook作为示例,在阿里云的ubuntu上面安装一下好了。

下载软件很方便,在github的页面就提供了下载页面,根据我64位机器,直接下载对应的版本。下载完成之后开启服务器只需要brook server -l :9999 -p password就会在9999端口开放一个socks5的代理服务器。

然后我用v2ray去连接的话,会报unexpected EOF错误,大概是因为两种软件不同吧。

http代理

这里推荐使用tinyproxy这个软件。在ubuntu上只需要apt-get install tinyproxy -y即可成功安装。安装完成之后修改一下配置文件:vim /etc/tinyproxy.conf,里面可以设置端口(默认8888),允许的地址等(默认只允许本机的,可以把那条注释掉)参数,按照自己的要求修改即可。修改完成记得重新加载一下配置:sudo service tinyproxy reload,如果有防火墙记得设置一下。然后就可以直接使用了。

小飞机

因为shadowsocks的图标形状是一架小飞机,所以很多人就直呼其为小飞机了。当年我下载的是一个绿色的版本,在win下面是一个可执行程序,点开即用,这是因为有非常多语言实现的小飞机。

目前来说,如果要安装服务器端的SS,我还是比较推荐市面上的脚本,比如这个,或者直接用docker镜像,比如这个,简单方便。

windows下和mac下的小飞机都太简单了,直接跳过。直接说下在linux下面是如何使用的。

客户端的话,我现在自己最常用的是Python版本的,只需要通过pip install shadowsocks就可以安装了。安装完成之后可以用两个命令来进行操作。一个是sslocal,用来配置客户端的,另外一个是ssserver,用来配置服务端的。

比如我在我的阿里云上要简单配置一下代理(注意只是简单用一下),就会用这个命令:ssserver -p 1080 -k my-passwd,这样只需要在我的v2ray上面填上阿里云的相关信息就能使用了。

如果我希望我的阿里云服务器能够翻墙,比如帮我下载一些国外的图片视频什么的,那么这个时候阿里云的服务器就需要配置成客户端,并且由于pip下载的shadowsocks只支持socks5的代理,所以如果你需要使用http代理,那么还需要来提供转发功能,这里推荐的是proxychains,安装也是非常容易的,只需要sudo apt install -y proxychains即可。安装完成后只需要vim /etc/proxychains.conf,在最后面加上一行socks5 127.0.0.1 1080,这样你在shell中proxychains curl myip.ipip.net 就会发现你的ip变成了代理服务器的ip了,说明你的请求已经通过socks5的代理了。

还有另外一个是privoxy,也差不多。直接修改配置文件:vim /etc/privoxy/config,找到里面的listen-address 127.0.0.1:8118这一句,确保没有注释;然后同一个文件里找到forward-socks5t / 127.0.0.1:1080 .,这句话的原始端口是什么忘了,反正把它改成你的socks5监听的端口就行了。最后设置一下环境变量:

1
2
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118

并且重启下systemctl restart privoxy即可。这样你所有的流量就会通过本机的8118送达到provoxy这个软件,然后它再帮你送给本机的1080端口,也就是ss监听的端口了。可以输入curl p.p来查看是否成功。