系统相关
首页 > 系统相关> > ubuntu18.10下shadowsocks客户端的安装和配置

ubuntu18.10下shadowsocks客户端的安装和配置

作者:互联网

在ubuntu18.10上安装和配置shadowsocks很顺利,完全不会出什么错误,所以18.10真的很不错,废话不多说,下面就直接入手安装。

第一步:安装shadowsocks,并填写配置文件

sudo apt install python-pip	# 如果之前没有安装pip的话执行此命令,否则不需要执行此命令
sudo pip install shadowsocks  # 此处不要用--user安装,否则会出现找不到sslocal命令的错误的
sudo vim /etc/shadowsocks.json
# 然后按照自己的shadowsocks server(ss服务器)的配置情况输入下列信息
{
    "server":"你的ss服务器ip地址",		
    "server_port":你的ss服务器端口,
    "password":"你的ss服务器访问密码",
    "method":"你的ss服务器上配置的代理加密方式,如:chacha20",
    "local_address":"127.0.0.1",
    "local_port":1080,
    "timeout":300
}

# 启动shadowsocks代理 客户端
sudo sslocal -c /etc/shadowsocks.json -d start

然后按esc键,再按shift + Z + Z就可以保存文件并退出。
需要特别注意一下json文件的格式:主要是双引号和逗号,第一列数据全部有双引号,第二列中如果是字符串则有双引号,数字(如端口号)则没有双引号,还有就是除了最后一项后面没有逗号,其余项后面均有一个逗号。json数据格式可参考中两篇:篇一篇二
还需要注意的是:上面最后一条命令需要执行一下,因为下面你可能需要开启系统全局代理来下载gfwlist.txt文件。只开启系统代理是没有用的,必须先要同时使shadowsocks客户端运行才可以。

第二步:安装genpac、下载gfwlist文件

# 安装genpac
sudo pip install genpac
pip install --upgrade genpac
# 下载gfwlist文件
genpac --pac-proxy "SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" --gfwlist-url=https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt --output="autoproxy.pac"

比较奇怪的是,下载gfwlist的这条命令有时候可以正常下载,有时候又不能下载,目测好像是这个网址需要vpn才能访问(后来验证了一下,确实是这样的),这个时候可以先开启全局代理(网络设置里选手动代理,如下图),然后再用刚才那条genpac命令下载。
需要注意的是这里的端口号1080必须和之前在/etc/shadowsocks .json中设置的local port一样,否则将无法上网。

第三步:设置系统代理为自动方式(也就是局部代理,只代理gfwlist.txt中的网址)
这一步就是将刚才的网络设置中的代理设置的手动改成自动。填写格式为:

file:// + 刚才的pac文件的绝对路径
如: file:///home/caixiong/autoproxy.pac

第四步:配置浏览器
  如果使用chrome的话,其实此步是不需要配置的,因为点击chrome中的代理设置的话,它自动跳到上图的系统代理设置界面,也就是说其实我们在第三步就已经设置好了。
  如果是firefox的话,就依次点击设置,preference,然后在搜索框中输入proxy就找到设置代理的地方了,然后选择系统代理即可,如下图。
  在这里插入图片描述

第五步:写一个小脚本,手动执行sslocal命令(此步根据个人需求来,可以不需要的)
  我是因为一般使用学校的ipv6网上google等网站,只是有时候需要下某些东西无法下载时才使用shadowsocks代理,并且用代理是无法上谷歌学术的,所以我就不把开启代理加到系统自动项里边,而是自己需要的时候手动开启,但是手动开启的命令比较长,于是我写了一个脚本,相当于把命令的写法变简单了,具体做法如下:
01 创建一个名叫ssll的文件,内容是下面的代码

#!/bin/bash
if [ "$1" == "on" ]
then
    sslocal -c /etc/shadowsocks.json -d  start
elif [ "$1" == "off" ]
then
    sslocal -c /etc/shadowsocks.json -d stop
fi

02 给文件添加执行权限,并复制到/bin/目录下

chmod +x ssll
sudo mv ssll /bin/

03 现在就可以使用ssll命令(其实就是刚才那个脚本文件)来手动开关代理来了

# 修改后启动代理的版本
sudo ssll on		# 开启代理
sudo ssll off		# 关闭代理
# 使用原来的命令开启代理的版本
sudo sslocal -c /etc/shadowsocks.json -d start	# 开启
sudo sslocal -c /etc/shadowsocks.json -d stop	# 关闭

这样做就简单了很多吧。

注意: 如果执行sslocal命令过程中出现如下错误:

AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

则需要修改openssl.py文件的第52和111行,将cleanup改成reset就可以了,具体的openssl.py文件位置可以从你出错的信息中看出来的,我的是/usr/local/lib/python3.6/dist-packages/shadowsocks/crypto/openssl.py,也可以参考这篇博客


OK!现在在ubuntu18.10中就可以科学上网了!是不是很爽!

最后再啰嗦一下,就是记得你必须买了代理服务器并且搭建好了shadowsocks 服务器端才能使用这篇经验噢

注: 上面的代理方式是使用系统自带的代理,其实如果我们用chrome浏览我们也可以用另一个比较方便的插件:SwitchyOmega,具体可以参考这篇教程,我现在用的也是这个插件,因为之前设置的系统自动代理出现了点问题,在chrome上必须开启系统手动代理方式才能上网。

参考文献:https://ywnz.com/linuxjc/2687.html

标签:sslocal,shadowsocks,sudo,代理,json,gfwlist,ubuntu18.10,客户端
来源: https://blog.csdn.net/qq_24406903/article/details/85011090