ubuntu使用shadowsocks设置全局代理 | 系统总结,亲测可行

ubuntu使用shadowsocks设置全局代理

本文讲解了如何使用shadowsocks为ubuntu设置ss全局代理,最终可达到的效果是:浏览器和终端均可使用代理进行网络访问。经笔者亲测可行,如果有问题可以给我发邮件:[email protected],笔者若看到会及时回复de~

第一步:安装shadowsocks

目前shadowsocks在ubuntu上有两种可选的安装版本:

  • 命令行版本
  • 图形界面版本

(一)先介绍命令行版本的安装方法:

# 先安装pip工具包,如果有则跳过
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-setuptools m2crypto

# 接着安装shadowsocks
pip install shadowsocks

安装完成后,在终端输入 sslocal –help 就能查看使用帮助。比如:

sslocal -s xx.xx.xx.xx -p xxxx -k123456-l 1080 -t 300 -m aes-256-cfb

-s 表示ss服务器的IP,-p 指的是服务器的端口,-l 表示本地端口(默认是1080),-k 是密码(要加英文状态的引号”“),-t 为超时(默认300),-m 表示加密方法为aes-256-cfb。

这里,笔者建议使用导入配置文件的方法来进行设置,配置文件是json格式的文件,格式如下:(可以用任何一款文本编辑器按如下格式预先写好配置信息,保存为后缀名为 .json 的文件)

{  
    "server":"xx.xx.xx.xx",  
    "server_port":xxxx,  
    "local_address": "127.0.0.1",  
    "local_port":1080,  
    "password":"xxxxxxxx",  
    "timeout":300,  
    "method":"aes-256-cfb",   
}  

参数解释如下:
server:ss服务器端的IP
servier_port:服务端的端口号
local_address:本地ip,一般为127.0.0.1
local_port:本地端口,默认为1080
passwd:ss服务端设置的密码
timeout:超时设置
method:加密方法


然后将json文件保存到本地某路径下,执行下列命令:

# /xxx/为json文件的路径
sslocal -c /xxx/config.json

如果没有出错,就会出现类似下面的信息:
这里写图片描述

(二)接下来介绍图形界面版本的安装方法:
如果觉得命令行的不太直观,可以考虑安装GUI版的shadowsocks(github传送门),方法如下:

# 先导入ppa仓库
sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update

# 再进行安装
sudo apt-get install shadowsocks-qt5

(P.S. 一般来说不会出什么问题,如果apt-get update那一步有问题,多半是源的问题,可以查一查如何更改apt源;如果提示没有add-apt-repository这条命令,那么需要先安装这个命令,可以参考这位博主的博客;如果提示add出错,多半是sources.list.d的问题,可以尝试先删除/etc/apt/sources.list.d/文件夹,再新建立一个sources.list.d文件夹,再update一下)

第二步:配置代理

配置好shadowsocks,连接成功后,还并不能立即使用,需要给电脑或者浏览器添加网络代理。配置代理可以分为以下几个层面:

  1. 浏览器代理(局部代理)
  2. 全局代理(终端也可使用!)

先介绍浏览器的代理(以chrome浏览器为例):
这里需要一个chrome插件:SwitchyOmega 点此下载 ,下载完毕拖动安装(不会的可以自行搜索“chrome”如何安装crx插件,这里不再详叙)。装好插件后,会自动跳转到插件设置界面,随后手动进行如下设置:

1> 点击左侧菜单栏”新建情景模式“——选择”代理服务器“——随意起一个名字(比如我起的是ss)——其他默认——点击创建,代理协议选择SOCKS5,地址为127.0.0.1,端口默认为1080 ,最后点击左侧菜单栏的”应用选项“进行保存。

2> 接着点击左侧菜单栏的”自动切换 ( Auto switch)“上面的不用管,勾选下边的”规则列表规则”,“情景模式”选择刚才新建的SS,底下一行的“默认情景模式”选择“直接连接”。然后点击“应用选项”进行保存。接下来,在下边的“规则设置”的“规则列表格式”中选择 AutoProxy,然后填写以下地址:
https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
然后点击下面的”立即更新情景模式”,会提示更新成功。最终效果如下图:
这里写图片描述

到此就结束了,浏览器的代理已经配置完毕。


下面介绍全局代理,可以将代理应用到整个系统(也就是说用其他浏览器也可以访问了)。这里需要用到genpac工具包,这是基于gfwlist的代理自动配置(Proxy Auto-config)文件生成工具,支持自定义规则(github传送门)。安装如下:

sudo pip install genpac

然后选择你要生成配置文件的存放目录:

# 笔者选择的目录是 /home/user/Documents/shadowsocks
cd /home/user/Documents/shadowsocks

然后执行以下命令:

sudo genpac --proxy="SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"

注意:如果报错“fetch gfwlist fail.online: https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt local:None”,可以使用后面的语句:

sudo genpac --proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"

执行完毕就会在目录下生成一个autoproxy.pac文件。

接下来打开系统设置——网络——网络代理:“方法”选择“自动”,“配置URL”填写:

# 格式是 file:// + 以 / 开头的文件路径
file:///home/user/Documents/shadowsocks/autoproxy.pac

点击“应用到整个系统”,就设置完毕了。


再进一步地:可以使得终端也能使用代理。因为有时候我们需要wget的链接只能通过代理访问。为什么安装好了shadowsocks还不能在终端中使用呢?因为它是socks5代理,我们在shell里执行的命令,发起的网络请求目前还不支持socks5代理,只支持http/https代理。所以这里我们还需要安装一个privoxy代理工具,它通过设置防火墙把电脑上所有的http流量导向中间件,再由中间件把流量导向shadowsocks。安装方法如下:

sudo apt-get install privoxy

安装好后编辑privoxy的配置文件,在/etc/privoxy/目录下:

sudo gedit /etc/privoxy/config 

在文档中搜索“listen-address”(即监听地址),找到如下一行:listen-address localhost:8118 确保它没有被注释(如果这一行有#号,就手动删除)。再查找“forward-socks5t”,找到如下一行:forward-socks5t / 127.0.0.1:1080 . 同样确保它没有被注释。如果没有这一行,就手动添加(注意!句尾那个点 . 是要写的!)。然后保存退出,再执行以下命令启动privoxy:

sudo privoxy --user privoxy /etc/privoxy/config

不同平台做法可能不同,具体可以查阅官网。(P.S. 之后每次修改了配置文件后,都要执行sudo service privoxy restart来重启服务)

最后,再配置/etc/profile:

# 先进入编辑模式
sudo gedit /etc/profile

# 在末尾添加以下三行:
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export ftp_proxy=http://127.0.0.1:8118

第三句ftp的代理可以根据需要添加。然后执行 source /etc/profile,再执行curl www.google.comwget www.google.com判断是否可以访问。注意不能用ping命令判断,因为ping走的是icmp协议,在这里是不可行的。


参考文章(致谢):
[1] linux-ubuntu使用shadowsocks客户端配置
[2] CentOS命令行使用shadowsocks代理的方法

猜你喜欢

转载自blog.csdn.net/TotoroCyx/article/details/80032556