Ubuntu的科学上网

Author Avatar
Zeta 1月 16, 2017
  • 在其它设备中阅读本文章

最近迷上了Ubuntu,感觉用Vim来敲代码实乃集高效与装逼于一体的一大利器。
然而如何在Ubuntu上科学上网却成了一个问题,经过查找,找到了适用于Ubuntu的shadowsocks客户端,并且配合polipo可实现全局代理。

Ubuntu下安装并使用shadowsocks 客户端

此处,我选择使用的是 shadowsocks-qt5,一种基于Qt开发的shadowsocks客户端,最大的优点就是具有图形化界面,非常方便使用。

项目页面在此

安装过程也十分简单,通过PPA源安装

1
2
3
sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5

安装完毕后,在已安装程序中就可以找到Shadowsocks-Qt5,打开后,界面如下

客户端界面

安装后就是要添加节点,点击菜单栏的链接——添加,就可看到多种节点添加方式,选择其一添加即可,不再赘述。

添加后选择你的节点,点击链接,顺便还可以测试下延迟什么的

安装过程到此结束

配置浏览器实现科学上网

如果只完成了以上的步骤,还不足以“跨越长城”,还需要配合浏览器的插件,才能实现真正的科学上网。

通常来说,无论是在Windows下运行shadowsocks还是通过浏览器的插件设置,运用较多的还是著名的 GFWList ,原理很简单,即在名单内被屏蔽的网站通过代理访问,不在名单内的则直接访问。这样即保证了访问国内网站的速度,同时也在一定程度上节约了代理服务器的流量。

但是这样做最大的缺点就是List 的维护成本很高,需要人来不断地更新,否则就无法访问最近被屏蔽的网站。

在这里,我推荐使用破娃酱(@breakwa11) 维护的GFW白名单,即在名单内的网站不通过代理访问,其余一律通过代理访问。这样做虽然会多花费一定的流量,但是最大的好处就是即使长时间不更新名单,也不会出现网站无法访问的情况。更重要的一点就是,有些网站虽然并没有被屏蔽,但是有时会出现访问速度会很慢甚至访问不了的情况,如Github Reddit, 这时如果通过代理来访问就会解决,达到一种看上去“加速访问”的效果(事实上,这只是因为绕过了防火墙的限制而产生的效果。)
以下是作者原话:

著名的 autoproxy.pac (GFW List) 是一个 GFW 黑名单,访问名单中网站需要通过代理,不在名单中的网站直接访问。有效使用黑名单,维护者和用户都需要时常更新此名单,否则可能不能访问最近被墙的网站。这些不便之处是推广科学上网的阻碍之一。
白名单的方法是白名单中的网站不走代理,其它网站全部通过代理访问。白名单的优点是对维护的要求非常低。第一次安装后,即使很长时间不更新,也不会出现网站打不开的问题。当然,用户会要付出稍多一些流量。
事实上 GFW 的变化速度相当快,屏蔽的网站也越来越多,国外稍微有点意思的网站大都已经被墙,或者随时可能被墙。因此作者认为有必要开始维护一份白名单的 pac 文件。
本项目包含域名白名单与IP白名单,而最终生成的实用版本列表proxy.pac同时使用黑白名单,以便于更精确更高速地科学上网。推荐直接使用proxy.pac。
本列表的国内域名部分会由作者编写的Spider自动更新,提取出常用的大部分网站。如果需要其它格式的列表请联系作者。

此处以最常见的Chrome 和Firefox 浏览器为例,简述配制方法。

Chrome浏览器

  • 安装 SwitchyOmega 插件
    Chrome浏览器安装插件的最佳方式自然是从 Chrome 网上应用店搜素安装,但是应用店又被挡在长城之外,自然无法搜索安装到,还好有离线安装这种东西

    这个网站 下载 SwitchyOmega 的安装包(.crx),打开Chrome的拓展程序界面,把下载好的文件拖拽进去即可完成安装。

  • 配置 SwitchyOmega

  • 第一次进入SwitchyOmega 会出现一些简单的教程,好奇的可以跟着教程看看,不感兴趣直接跳过也无妨。
    点击左侧新建情景模式,在弹出的窗口中据你喜好填写情景模式的名字,选择PAC情景模式,创建。

    设置界面

    情景模式设置

    • 点击左侧自动切换,默认情景模式设置为刚才创建的PAC情景模式,点击左侧的应用选项,此时,就可以正常地访问被屏蔽的网站了。
  • 有时在访问网站时,SwitchyOmega 图标上会出现一个数字角标,这代表了访问网页中如果有资源(如样式、图片、脚本等)未加载成功,点击图标,会显示有“*个资源未加载”,点击该提示就会显示具体的未加载资源,如下。

未加载资源

这是是我在使用上文所述PAC地址时访问微博所产生的提示。

一般情况下,如果使用上述PAC访问国内网站是才会出现该提示(因为国外网站基本都通过代理访问了),一般对此类未加载资源选择直接链接即可。有时候这样操作一次还不够,因为新加载成功的资源又加载了别的资源,重复个两三次大概也就行了。

但是比如说微博这样的网站,随着你的不断下滑网页,新的资源会不断加载,也就会有新的未加载资源提示,但是经过我长期使用,这些未加载资源并不会对使用产生影响,所以基本无视就好。如果你的强迫症发作,可以以到选项>通用>网络请求里关闭检测功能,但这只能隐藏问题而不能真正解决问题。

Firefox浏览器

  • Firefox浏览器同样需要安装插件才能实现,这里的插件叫做 FoxyProxy ,点击安装即可。

  • 配置FoxyProxy

    • 重启浏览器之后,点击地址栏右侧的插件图标,弹出插件配置页面,点击右侧的新建代理服务器。
      代理服务器名称设置
      在第一项常规中,填写代理的名称,方便日后管理

    • 填写完名称后,,点击第二项代理服务器细节选择“自动代理服务器配置”——“由PAC”
      在自动配置代理服务器URL中,填写如下地址

      https://raw.githubusercontent.com/breakwa11/gfw_whitelist/master/whiteiplist.pac

      PAC设置

      配置至此完成。

  • 右键FoxyProxy图标,选择“为所有URLs启用代理服务器XXX” 即可正常访问被屏蔽网站了。

  • 发现的问题
    不知是我电脑的问题(Ubuntu16.04,i7-5500U,8G内存)还是浏览器的原因,使用Firefox+FoxyProxy+PAC时可能会出现卡死的现象,稍作等待后即可恢复。禁用FoxyProxy后无此现象。

关于浏览器的配置,至此结束。

通过polipo实现全局代理

由于家里的网络环境并不是特别好,有时候在 git clone 或者 git pull 时速度会出奇的慢,就想如果能够实现全局代理应该就能解决此问题,由于shadowsocks是socks 5代理,并不能直接代理全局,需要结合polipo才能达到目标。

  • 首先,安装polipo:
1
sudo apt-get install polipo
  • 修改polipo配置文件
1
sudo vim etc/polipo/config
  • 把以下文件复制进配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
# This file only needs to list configuration variables that deviate
# from the default values. See /usr/share/doc/polipo/examples/config.sample
# and "polipo -v" for variables you can tweak and further information.
logSyslog = true
logFile = /var/log/polipo/polipo.log
proxyAddress = "0.0.0.0"
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
  • 重启polipo服务
1
sudo /etc/init.d/polipo restart
  • 为终端配置http代理
1
export http_proxy="http://127.0.0.1:8123/"
  • 测试
1
curl ifconfig.me

如果返回的是代理服务器的地址则说明配置成功。

  • 进入系统设置——网络——网络代理

    如下图设置,应用到整个系统后,即可实现全局代理。

全局设置

其实买一个能刷OpenWrt或者梅林的路由器就能就解决这种问题了还要这么麻烦干嘛

你说有钱多好