Linux下使用Shadowsocks和PAC玩转小飞机


最近 hosts越来越吃紧,直到现在基本已废,作为一名安卓开发者不得不自己折腾搬瓦工搭建一个用于资料下载以及学习的隧道。搭建完成后,连接方式有必要记录下来用于下次使用 

ps:搭建教程自行搜索 测试环境为Ubuntu16.04 LTS (Ubuntu 14.04以上均可)

服务端配置:

很多人都知道怎么去买vps,怎么去安装ss或者ssr,但是具体配置步骤,网上很多并不清晰,且不适合新手,所以简单记录下

仅供学习交流,请勿用于违法犯罪,否则后果自负

步骤一:

准备条件:搬瓦工一台,2.99$即可,服务器选址随意,后台安装ss或者ssr

image.png

右边安装即可,然后会有启动后的端口等,网上资料很多,不细究了

步骤二:

这是最重要的一点 配置文件:随意命名,因为是指定位置,无影响,我的是 /etc/shadowsocks.json

ss版(命令为ssserver):

安装完后登录控制台:

ssserver -c /etc/shadowsocks.json -d start #启动
ssserver -c /etc/shadowsocks.json -d stop #关闭

其配置文件shadowsocks.json内容为:wiki

#单用户

{
 "server":"remote-shadowsocks-server-ip-addr",
 "server_port":443,
 "local_address":"127.0.0.1",
 "local_port":1080,
 "password":"your-passwd",
 "timeout":300,
 "method":"chacha20-ietf",
 "fast_open":false,
 "workers":1
}

#多用户

{
 "server":"remote-shadowsocks-server-ip-addr",
 "local_address":"127.0.0.1",
 "local_port":1080,
 "port_password":{
 #纯 SS 不带混淆 端口25 密码为123456.
 "25":"123456",
 "443":"123456",
 #注意无论怎么变化,最后一个端口设置,不带逗号!
 "27":"123456"
 #此处没有逗号!
 },
 "timeout":300,
 "method":"chacha20-ietf",
 "fast_open":false,
 "workers":1
}

步骤三:

配置完后,运行步骤二开头的命令,关闭下再开启 或者restart

SSR版(未找到直接启动命令,因闹得沸沸扬扬的SSR风波,不推荐SSR):

安装与上面相同,三步走:

安装,配置文件,重新启动SSR/SS

其安装目录为/shadowsocksr,切换进去后会有一个 shadowsocks文件夹,里面有个server.py脚本,至于做了什么我不去研究,这个server.py类似一个启动命令,

cd /shadowsocksr/shadowsocks #到达目的地
python server.py -h #查看帮助说明
python server.py -d stop #停止
python server.py -c /etc/shadowsocks.json -d start #启动

其配置文件shadowsocks.json内容为:

{
 "server": "remote-shadowsocks-server-ip-addr",
 "server_port": 443,
 "local_address": "127.0.0.1",
 "local_port": 1080,
 "password": "password",
 "timeout": 120,
 "udp_timeout": 60,
 "method": "aes-256-cfb",
 "protocol": "auth_sha1_compatible",
 "protocol_param": "",
 "obfs": "http_simple_compatible",
 "obfs_param": "",
 "dns_ipv6": false,
 "connect_verbose_info": 0,
 "redirect": "",
 "fast_open": false
}

多个用户的配置则为:

如果要多个用户一起使用的话,请写入以下配置:

{
"server": "0.0.0.0",
"local_address": "127.0.0.1",
"local_port": 1080,
"port_password":{
 "80":"password1", //端口和密码1
 "443":"password2" //端口和密码2
},
"timeout": 120,
"udp_timeout": 60,
"method": "aes-256-cfb",
"protocol": "auth_sha1_compatible",
"protocol_param": "",
"obfs": "http_simple_compatible",
"obfs_param": "",
"dns_ipv6": false,
"connect_verbose_info": 0,
"redirect": "",
"fast_open": false
}

按照格式修改端口和密码:

"port_password":{
 "80":"password1", //端口和密码1
 "443":"password2" //端口和密码2
},

如果要为每个端口配置不同的混淆协议,请写入以下配置:

{
 "server":"remote-shadowsocks-server-ip-addr", #你的ip
 "server_ipv6":"::",
 "local_address":"127.0.0.1",
 "local_port":1080,
 "port_password":{
 #纯 SS 不带混淆 端口25 密码为123456.
 "25":"123456",
 #端口443,密码123456 ,protocol选择auth_chain_a。
 #obfs选择tls1.2_ticket_auth,具体插件的介绍如下参考资料中
 "443":{"protocol":"auth_chain_a", "password":"123456", "obfs":"tls1.2_ticket_auth", "obfs_param":""},
 #注意无论怎么变化,最后一个端口设置,不带逗号!
 "27":{"protocol":"auth_aes128_md5", "password":"123456", "obfs":"tls1.2_ticket_auth", "obfs_param":""}
 #此处没有逗号!
 },
 "timeout":400,
 #默认全局的加密方式,即上边各个端口的默认加密方式。一般为aes-256-cfb>,
 #此处,选择为chacha20,移动设备性能较好。
 "method":"chacha20",
 #protocol.协议定义插件的默认值,origin即使用原版SS协议,不混淆。
 #即上面端口配置中,你没有设置 protocol 和 obfs 情况下,使用的默认值。
 "protocol": "origin",
 "protocol_param": "",
 #protocol.协议定义插件的默认值,plain即使用原协议,不混淆。
 "obfs": "plain",
 "obfs_param": "",
 "redirect": "",
 "dns_ipv6": true,
 #TCP FAST OPEN ,打开
 "fast_open": true,
 "workers": 1
}

各选项说明:

NameExplanation中文说明
serverthe address your server listens监听地址
server_ipv6the ipv6 address your server listensipv6地址
server_portserver port监听端口
local_addressthe address your local listens本地地址
local_portlocal port本地端口
passwordpassword used for encryption密码
timeoutin seconds超时时间
methoddefault: “aes-256-cfb”加密方式
protocol_paramdefault:””协议插件参数,默认””
protocoldefault:”auth_sha1_compatible”协议插件,默认”auth_sha1_compatible”
obfsdefault:”http_simple_compatible”混淆插件,默认”http_simple_compatible”
obfs_paramdefault:””混淆插件参数,默认””
redirectdefault:””重定向参数,默认””
dns_ipv6default:false是否优先使用IPv6地址,有IPv6时可开启
fast_openuse TCP_FASTOPEN, true / false快速打开(仅限linux客户端)
workersnumber of workers, available on Unix/Linux线程(仅限linux客户端)

其中protocol有如下四种取值:

protocol说明
“origin”原版协议
“verify_simple”带校验的协议
“verify_deflate”带压缩的协议
“verify_sha1″带验证抗CCA攻击的协议,可兼容libev的OTA
“auth_simple”抗重放攻击的协议
“auth_sha1″带验证抗CCA攻击且抗重放攻击的协议
“auth_sha1_v2″类似”auth_sha1″,提供更好的长度混淆特性

其中obfs有如下四种取值:

obfs说明
“plain”不混淆
“http_simple”伪装为http协议
“tls_simple”伪装为tls协议(不建议使用)
“random_head”发送一个随机包再通讯的协议
“tls1.2_ticket_auth”伪装为tls ticket握手协议(强烈推荐),同时能抗重放攻击

客户端配置:

安装Shadowsocks-qt5

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

服务器设置

点击菜单栏中 “Connection > Add > Manually” 进行手动配置
点此查看详细配置信息
右键点击新建的连接,选择connect与代理服务器进行连接

更改系统代理设置

进入代理设置 System settings > Network > Network Proxy
设置Method为Manual
设置Socks为 Host 127.0.0.1 1080
这时的代理设置为全局代理,接下来我们要介绍如何使用PAC文件进行更为智能的代理

2. 安装GenPAC

在多数情况下,我们更希望使用PAC模式的代理,让我们访问国内网站时不再先绕地球跑一圈,在Windows和Mac上的shadowsocks客户端可以轻松切换到PAC模式,而在Ubuntu上我们需要使用pac文件来设置系统代理以达到相同的效果

#首先安装pip
sudo apt-get install python-pip
#通过pip安装genpac
sudo pip install genpac

使用GenPAC生成pac文件

进行这个步骤需要保证shadowsocks已经连接
点此查看更多genpac参数

genpac -p "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"

此时会生成一个名为autoproxy.pac的文件

更改系统代理设置

进入代理设置 System settings > Network > Network Proxy
设置Method为Automatic
设置Configuration URL为autoproxy.pac文件的路径

#例如 /home/lckiss/autoproxy.pac

现在只有当你访问PAC列表内的域名时才会通过代理服务器获取数据

3.开启BBR算法加速

登录服务器控制台,按顺序执行即可

wget --no-check-certificate https://raw.githubusercontent.com/wn789/BBR/master/bbr.sh
chmod +x bbr.sh
./bbr.sh

执行完会提示重启,重启后,你可能需要手动重启一次ss,

ssserver -c /etc/shadowsocks.json -d stop
ssserver -c /etc/shadowsocks.json -d start

然后你会发现,以前480p都卡的YouTube,现在1080也都是小事

资料来自:

http://www.pandagao.com/2016/05/13/ubuntu-use-shadowsocks-and-pac/

https://www.wn789.com/5632.html

被墙文章:

http://rt.cn2k.net/?p=328

https://doub.io/ss-jc55/

当然要理解些东西的话推荐:

ss不完全指南

Linux下不像mac与win可以直接全局代理,往往要配置许多才能达到目的,本人才疏学浅,推荐以下两篇文章:

ss-local + privoxy 代理

ss-redir 透明代理

开发已转战mac,Linux且行且珍惜

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - Linux下使用Shadowsocks和PAC玩转小飞机


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.