前言
我本人是从大三开始接触的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。
socks5工作层比http代理更低,这意味着它可以有更广泛的使用空间。
实现socks5协议的软件层出不穷,比较有代表性的有以下这些:
- Brook, https://github.com/txthinking/brook
- Dante Socks Server,http://www.inet.no/dante
- Java Socks Server,http://jsocks.sourceforge.net
- Socks4 Server,https://archive.is/20130502024508/http://www.alhem.net/project/socks4
- SS5 Socks Server,http://ss5.sourceforge.net
- TcpToute2,https://github.com/GameXG/TcpRoute2
这里我就先以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 | export http_proxy=http://127.0.0.1:8118 |
并且重启下systemctl restart privoxy
即可。这样你所有的流量就会通过本机的8118送达到provoxy
这个软件,然后它再帮你送给本机的1080端口,也就是ss监听的端口了。可以输入curl p.p
来查看是否成功。