当前位置:首页 » Linux技术知识

Ubuntu 16.04 使用ShadowSocks + Privoxy 科学上网

2016-08-29 15:17 本站整理 浏览(2438)

1 简介

目前比较方便和坚强的科学上网方法莫过于vps+shadowsocks了,关于shadowsocks工作原理不做介绍了,vps博主推荐搬瓦工,原因有三点:
一键配置shadowsocks服务器
可以用支付裱支付
便宜,一年只要130大洋,不仅可以科学上网,更重要的是你有了一台自己的Linux服务器.再花几十块买个阿里的域名,基本上就可以实战Linux服务器了
ShadowSocks只支持socks协议,因为它采用事先商量好的秘钥和协议,所以GFW很难发现,关于ShaowSocks 的原理,请参考下面的链接:
影梭原理简介

2 环境

Ubuntu 16.04
ShadowSocks qt5
Privoxy
Firefox + FoxyProxy

3 购买搬瓦工vps

博主购买的是年付$19.9美元的方案,换算成人民币不到130元一年,不仅可以科学上网,还可以玩Linux服务器,搬瓦工官网如下:
http://bandwagonhost.com/
购买和搭建ShadowSocks的教程如下,写的非常详细:
搬瓦工VPS年付19美元–支付宝购买安装及搭建ss全流程
windows上的ShadowSocks客户端下载地址如下:
ShadowSocks客户端 windows 版下载地址
Android 上的ShadowSocks客户端下载地址如下:
ShadowSocks客户端 Android 版下载地址
ios 上的 ShadowSocks 客户端下载地址如下:
ShadowSocks客户端 IOS 版下载地址
windows和android上的影梭配置非常简单,百度一下全都是的,这里博主就不赘述了,下面我们进入正题,介绍Ubuntu 16.04安装ShadowSocks的方法。

4 安装ShadowSocks qt5

网上关于使用json做配置文件安装shadowsocks,然后使用ssserver -c ss_config.json启动shadowsocks的方法已经过时了,经过博主实践,发现这种方法在Ubuntu 16.04上无效,总是报无法找到ssserver这个命令的错误,于是,博主采用下面的方法来安装图形界面的ShadowSocks。
首先,在Linux上图形界面的 ShadowSocks 叫做 ShadowSocks qt5,在其github的wiki上有安装方法介绍,链接如下:
ShadowSocks qt5 安装指南
接着,我们使用下面的命令来安装ShadowSocks qt5:
[code]sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5

安装完毕后,在dash中搜索’shadowsocks’即可打开,如下图所示:

打开SS,点击添加,选择手动,然后输入搬瓦工上ShadowSocks服务器的信息即可:

连接成功后如下图:

ss连上之后,我们还不能马上上网,还要设置Ubuntu的网络代理。点击系统设置,选择网络,接着选择网络代理,然后按照下图所示配置:

为了方便,我们讲Shadowsocks添加到开机启动,执行下面的命令:
[code]gnome-session-properties

弹出下面的对话框:

点击添加,在command那一行输入:
[code]/usr/bin/ss-qt5

配置如图所示:

到这里,基本上chrome就可以科学上网了,但是FireFox还不行,接着我们来配置FireFox。

5 配置FireFox

打开FireFox,点击添加组件,搜索FoxyProxy ,安装它,因为博主已经安装好了,所以就在网上找了个图:

打开FoxyProxy ,切换到代理选项卡,点击右边的添加代理服务器,如下图所示:

先切换到常规选项卡,输入代理的名称:

切换到代理详情选项卡,配置如下图所示:

点击确定,回到住主界面,然后点击模式订阅,接着点击转到(go),如下图所示:

订阅的名称随便写,例如:gfwlist,接着在要订阅的url那一栏填写如下地址:
[code]http://sslite.me/gfwlist/gfwlist.txt

然后点击添加代理按钮选中我们刚才创建的代理,全部配置如下图所示:

点击确定之后,会弹出一个框提示你订阅成功,接着我们回到FireFox,右键点击狐狸头像,选择第一个,使用基于预定义模板的代理服务器,如下图所示,选择图中黄色的那一项:

好了,到这里就可以愉快的科学上网了。作为一名android程序员,博主使用Ubuntu是为了编译android源码,科学上网则是因为要去下载android系统源码,下载android源码必须使用repo工具,然鹅,却发现在终端中还是无法链接谷歌服务器,怎么回事呢?谷歌一下,发现要在终端中科学上网,还需要额外的配置,下面我们来实践。

6 配置Terminal

先思考一个问题,我们明明已经配置了全局代理,为什么Terminal还是无法穿墙呢?
原来,Terminal只支持http、https协议,而ShadowSocks使用的是socks协议,所以自然Terminal无法穿墙啦。怎么办呢?
好在,我们可以使用Privoxy来将http和socks相互转换。什么是Privoxy呢?
Privoxy是一款带过滤功能的代理服务器,针对HTTP、HTTPS协议。通过Privoxy的过滤功能,用户可以保护隐私、对网页内容进行过滤、管理cookies,以及拦阻各种广告等。Privoxy可以用作单机,也可以应用到多用户的网络。
修改HTTP请求头的字段,如referrer和user agent,从而隐藏用户上一个查看的网页和用户正在使用的浏览器。
首先,使用下面的命令安装Privoxy:
[code] sudo apt-get install privoxy

安装完毕后,打开Privoxy的配置文件/etc/privoxy/config:
[code]sudo vim /etc/privoxy/config

第一步定位到4.1. listen-address 这一段,找到监听的端口,博主的是在第783行:

可以看到端口一般都是8118。
接着找到5.2. forward-socks4, forward-socks4a, forward-socks5 and forward-socks5t这一节,加上如下配置:
[code]forward-socks5 / 127.0.0.1:1080 .

注意最后的点号,博主的是在1363行:

保存后,重启一下Privoxy:
[code]sudo /etc/init.d/privoxy restart

接着配置终端的环境,打开终端配置文件:
[code]sudo vim ~/.bashrc

在末尾追加下面代码:
[code]export http_proxy="127.0.0.1:8118"
export https_proxy="127.0.0.1:8118"

保存文件后,重启终端或者执行下面的命令重新读取配置文件:
[code]source ~/.bashrc

下面我们来测试穿墙是否成功:
[code]$ wgethttp://www.google.com --2016-09-01 10:51:56-- http://www.google.com/ Connecting to 127.0.0.1:8118... connected.
Proxy request sent, awaiting response... 302 Found
..........
Location:http://www.google.com.hk/?gws_rd=cr [following]
--2016-09-01 10:51:56-- http://www.google.com.hk/?gws_rd=cr Reusing existing connection to 127.0.0.1:8118.
Proxy request sent, awaiting response... 200 OK
Length: 11191 (11K) [text/html]
Saving to: ‘index.html.2’

index.html.2                                       100%[================================================================================================================>]  10.93K  --.-KB/s    in 0s      

2016-09-01 10:51:57 (362 MB/s) - ‘index.html.2’ saved [11191/11191]

穿墙成功,接着将Privoxy添加到开机启动,在/etc/rc.local中添加如下命令,注意在exit 0之前:
[code]sudo /etc/init.d/privoxy start

在/etc/profile的末尾添加如下两句:
[code]export http_proxy="127.0.0.1:8118"
export https_proxy="127.0.0.1:8118"

到这里,就实现了Terminal的穿墙,可以愉快的下载android源码喽。

7 总结

Ubuntu利用Shadowsocks科学上网除了配置Shadowsocks之外,还要额外配置FireFox和Terminal,其中FireFox要配合FoxyProxy代理插件,Terminal要配合Privoxy代理。
本博客经过博主在Ubuntu 16.04上实践得来,如果你在实践中遇到什么问题,欢迎给我留言。
博主是android猿,正在研究android源码,欢迎关注我的 csdn博客—”梧桐那时雨”.

8 转载请注明来自”梧桐那时雨”的博客:/content/11086629.html

Tips:
如果觉得这篇博客对你有帮助或者喜欢博主的写作风格,就关注一下博主或者给博主留个言呗,鼓励博主创作出更多优质博客,Thank you.