运维百科

Ubuntu18.04下科学上网神器Shadowsocks篇

一、引言

Linux下可完美配置SS,包括PAC模式,终端代理,开机自启等;

不过要想完美使用尚需一番配置;

这里针对以Ubuntu18.04为例。

二、安装配置 SS Server

要使用SS,首先要有SS Server,可以购买SS Server账号,或者自行搭建。这里以自行搭建为例。

安装SS Server:

sudo apt update
sudo apt install python-pip
pip install git+github的https地址@分支
从git pip 安装
pip install git+https://github.com/shadowsocks/shadowsocks.git@master
或者 pip install zip地址包
pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip

配置SS Server:

sudo touch /etc/ssserver-config.json
sudo echo '{"server":"your_server_ip",
"server_port":your_server_port,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"your_server_passwd",
"timeout":300,
"method":"aes-256-cfb"}' > /etc/ssserver-config.json

启动SS Server:

ssserver -c /etc/ssserver-config.json -d start

三、SS Client 安装及基础配置

安装SS Client(命令行版本):

sudo apt install python-pip
pip install git+https://github.com/shadowsocks/shadowsocks.git@master

配置SS Client:

vim /etc/sslocal-config.json # 可自行选择创建位置

写入如下内容:

'{"server":"your_server_ip",
"server_port":your_server_port,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"your_server_passwd",
"timeout":300,
"method":"aes-256-cfb"}'

启动SS Client:

sslocal -c /etc/sslocal-config.json &

说明:如果不需要终端走HTTP上网,仅仅需要浏览器代理上网的话,推荐使用SwitchyOmega浏览器插件来管理代理上网,这个插件很强大、很灵活,配置起来也很简单,这里就不多做累述了。

下面的步骤是配置全局使用HTTP代理。


将Socks5转换为HTTP代理:Privoxy篇

安装Privoxy之前我们先来测试一下,看看终端是否能够走代理上网

curl www.google.com

发现明显是不行的,因为Shadowsocks属于socks5协议,不能全局使用,所以需要把socks5转为HTTP协议。

安装

sudo apt install privoxy

配置

sudo vi /etc/privoxy/config
找到 listen-address 确保有这行代码 listen-address 127.0.0.1:8118

找到 forward-socks5 确保有这行代码并且打开注释(没有自己加) 

forward-socks5 / 127.0.0.1:1080 .

启动

sudo service privoxy start
sudo service privoxy status

配置环境变量,让终端也能走代理

# 全局环境变量vi /etc/profile
# 用户环境变量vi ~/.bash_profile
proxy="http://127.0.0.1:8118" 
export https_proxy=$proxy 
export http_proxy=$proxy 
export ftp_proxy=$proxy

验证一下

curl www.google.com

发现可以上了,是不是很开心,再来试一下:


# 搜狐的这个接口能够返回你的IP地址

curl "http://pv.sohu.com/cityjson?ie=utf-8"

发现我们目前在终端任何HTTP连接都走了代理了,这不符合我们的预期,我们希望的让代理走pac模式:需要的连接才代理,不需要的就不用代理。

好了,我们来看看Privoxy如何使用pac模式,首先需要一个符合Privoxy的pac规则的文件,可以使用GFWList2Privoxy来生成。


PAC模式:安装GFWList2Privoxy

pip install --user gfwlist2privoxy  #获取gfwlist文件,生成actionsfile
cd /tmp
wget https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
~/.local/bin/gfwlist2privoxy -i gfwlist.txt -f gfwlist.action -p 127.0.0.1:1080 -t socks5
sudo cp gfwlist.action /etc/privoxy/

gfwlist.action 长这样子:

微信图片_20191221000440.png

其实它的格式很简单,如果以后某个pac文件之外的网站也想走代理的话,那么仅需要把域名添加到pac文件里面就可以了,比如添加wp.com到pac里面:

echo '.github.com' >> /etc/privoxy/gfwlist.action

好了,生成这个pac文件之后,如果需要让终端代理自动走pac模式的话,则需要在/etc/privoxy/config文件中加上

actionsfile gfwlist.action

重启Privoxy,测试代理是否走了pac模式

curl www.google.com

OK,没问题,google还是可以访问的;

curl "http://pv.sohu.com/cityjson?ie=utf-8"

这个也OK,返回的是我们自己宽带的IP,也没问题。

注意:如果还是显示代理服务器的IP,则把

/etc/privoxy/config中的forward-socks5 / 127.0.0.1:1080 .

这一行注释了,然后重启privoxy,如果不注释这行,所有的流量都走代理,我们刚才做的pac模式,它就不走了。

至此,配置完成。


本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!

2
分享到:

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址