Ubuntu 18.04 LTS 系统下SSR全局代理
14 Jan 2019 2642字 9分 次 Linux打赏作者 CC BY 4.0 (除特别声明或转载文章外)
1.前言
在Ubuntu 18.04 LTS中实现全局代理,代理模式为PAC模式。本文几乎全部参考了fattoliu666的文章,只不过他这里面有多处错误,直接套用会出错,我对其修改了一小下。
- 系统版本:Ubuntu 18.04 LTS
- 准备工具:SSR服务
2.详细步骤
打开终端(快捷键”ctrl”+”alt”+”t”)。更新软件源。
sudo apt update
安装python-pip。
sudo apt install python-pip
安装 shadowsocks。
sudo pip install shadowsocks
配置 shadowsocks。
sudo gedit /etc/shadowsocks.json
在 shadowsocks.json 文件中写入:
{
"server": "your_server_ip", //代理服务器IP地址
"server_port": your_server_port, //代理服务器端口地址
"local_port": 1080,
"password": "yourpassword", //代理密码
"timeout": 600,
"method": "aes-256-cfb" //数据加密方式
}
启动 shadowsocks。
sudo sslocal -c /etc/shadowsocks.json -d start
这一步会报错,这个问题是由于在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数。
解决方法:
1、打开shadowsocks.json:
sudo vim /etc/shadowsocks.json
2、按下“i”切换到插入模式。
3、将第52行
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
改为
libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)
4、将第111行
libcrypto.EVP_CIPHER_CTX_cleanup(self._ctx)
改为
libcrypto.EVP_CIPHER_CTX_reset(self._ctx)
修改完之后保存退出:按下“ESC”退出插入模式,输入“:wq”保存退出。然后再次执行:
sudo sslocal -c /etc/shadowsocks.json -d start
这样就成功启动shadowssocks。
安装GenPAC
sudo pip install genpac
pip install --upgrade genpac
完成之后下载GFWlist:
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"
这样PAC文件“autoproxy.pac”就下载到user目录下了。然后进入:设置—网络—网络代理,选择手动,URL 指向该文件路径即可,url 格式为: file:///home/{user}/autoproxy.pac ({user}替换成自己的用户名)。
搞定,上个Google试一下。
为 git 配置代理,否则 google / android 源码是同步不下来的。
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
配置 Shadowsocks privoxy 自启动。先创建软连接:
sudo ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
该脚本内容为:
# SPDX-License-Identifier: LGPL-2.1+
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
在该文件中加上:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
然后创建/etc/rc.local文件:
sudo touch /etc/rc.local
sudo chmod 755 /etc/rc.local
编辑该文件:
sudo vim /etc/rc.local
加入以下内容:
#!/bin/bash
sudo sslocal -c /etc/shadowsocks.json -d start
sudo /etc/init.d/privoxy start
保存退出,完事儿!
告辞。