linux关于ssr客户端的使用

一般情况,在国内,ssr客户端使用比较多的场景是在用户量比较多的windows、mac、ios和android系统上,相应的这些操作系统对应的ssr客户端也都比较容易上手。那么在linux操作系统下是否有其使用场景呢?答案那是肯定的,首先对于开发人员来说,还是有一部分人在使用诸如ubuntu、deepin这样交互性比较好的操作系统的,那么在进行科学上网的时候,势必会用到代理客户端。还有一种场景,那就是运维人员也会有使用到的可能性,比如希望快速通过wget下载墙外的文件资源等等。

一、gui客户端代理

1. shadowsocks-qt5

以pc端的ubuntu18.04操作系统为例:

(1)添加ppa源

1
$ sudo add-apt-repository ppa:hzwhuang/ss-qt5

(2)修改ppa,改成如下

1
http://ppa.launchpad.net/hzwhuang/ss-qt5/ubuntu artful main

(3)更新软件源

1
$ sudo apt-get update

(4)安装

1
$ sudo apt-get install shadowsocks-qt5

(5)其他问题

安装过程遇到 libappindicator1 依赖问题(dependency problems),而 libappindicator1 又遇到 libindicator7依赖的解决办法。一并安装 libappindicator1 libindicator7 依赖,再重新安装 shadowsocks-qt5

1
$ sudo apt-get -f install libappindicator1 libindicator7

完成后就可以打开shadowsocks-qt5

二、终端命令代理

以服务器中的centos7操作系统为例。

1. 安装ssr客户端

客户端可以选择原版的ssr,也可以使用二次开发的开源项目,比如下面这几个不错:

1
2
3
$ git clone http://git.mrwang.pw/Reed/Linux_ssr_script.git
$ cd Linux_ssr_script && chmod +x ./ssr
$ ./ssr install

2. 配置节点

1
$ ./ssr config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"server": "xxxx.xyz",
"server_ipv6": "::",
"server_port": 999,
"local_address": "127.0.0.1",
"local_port": 1080,

"password": "xxxx",
"method": "aes-256-ctr",
"protocol": "auth_aes128_md5",
"protocol_param": "11215:rZg30E",
"obfs": "tls1.2_ticket_auth",
"obfs_param": "e082711215.microsoft.com",
"speed_limit_per_con": 0,
"speed_limit_per_user": 0,

"additional_ports" : {}, // only works under multi-user mode
"additional_ports_only" : false, // only works under multi-user mode
"timeout": 120,
"udp_timeout": 60,
"dns_ipv6": false,
"connect_verbose_info": 0,
"redirect": "",
"fast_open": false
}

根据情况配置ssr节点

一般情况:server(服务端ip)、server_port(服务端端口)、password(节点密码)、method、obfs是都要填的。而其他的参数视节点情况而配置即可。

3. 启动客户端

1
$ ./ssr start

4. 配置请求走代理

指定http和https走socks5代理

1
2
$ export http_proxy="socks5://127.0.0.1:1080"
$ export https_proxy="socks5://127.0.0.1:1080"

或者直接让所有代理都走socks5

1
$ export ALL_PROXY=socks5://127.0.0.1:1080

5. 测试配置情况

然后通过访问cip.cc查询ip信息来查看是否成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@iz2ze4uom6jrktiqj54y48z ~]# curl cip.cc
IP : 39.106.195.202
地址 : 中国 北京
运营商 : 阿里云/电信/联通/移动/铁通/教育网

数据二 : 北京市 | 阿里云

数据三 : 中国北京北京 | 阿里云

URL : http://www.cip.cc/39.106.195.202
[root@iz2ze4uom6jrktiqj54y48z ~]# export http_proxy="socks5://127.0.0.1:1080"
[root@iz2ze4uom6jrktiqj54y48z ~]# export https_proxy="socks5://127.0.0.1:1080"
[root@iz2ze4uom6jrktiqj54y48z ~]# curl cip.cc
IP : 47.241.70.253
地址 : 中国 香港 阿里云

数据二 : 美国 | 阿里云

数据三 : 美国加利福尼亚圣克拉拉 | 阿里巴巴

URL : http://www.cip.cc/47.241.70.253

6. 代理转发

Shadowsocks属于socks5协议,默认不对http协议的请求进行代理比如在以上配置完成后执行如下命令是访问不了Google的。

1
$ curl www.google.com

如果需要让一些http相关的命令成功走代理,那么可以借助privoxy把socks5转为HTTP协议即可。

(1)配置环境变量让http、https和ftp协议转发给privoxy处理

1
2
3
4
5
# 全局环境变量/etc/profile
# 用户环境变量~/.bash_profile或者~/.bashrc
# ======================
# 选择以上一个环境变量配置文件进行编辑(比如选择~/.bashrc)
$ vi ~/.bashrc

在末尾处添加以下环境变量

1
2
3
4
proxy="http://127.0.0.1:8118"
export https_proxy=$proxy
export http_proxy=$proxy
export ftp_proxy=$proxy

然后加载环境变量

1
$ source ~/.bashrc

(2)安装并配置privoxy

1
2
$ sudo yum install privoxy -y
$ sudo vi /etc/privoxy/config
1
2
3
4
5
#(1)找到listen-address确保有这行代码 
listen-address 127.0.0.1:8118

#(2)找到forward-socks5确保有下面这行代码并且打开注释(没有自己加),其中/代表匹配全部 URL,即全局代理
forward-socks5 / 127.0.0.1:1080 .
1
2
#如果需要自动代理,可以把/改为如下类似的匹配规则即可
#forward-socks5 .google.com 127.0.0.1:1080 .

(3)启动并查看privoxy运行状态

1
2
3
4
5
6
#启动
$ systemctl start privoxy
#开机启动
$ systemctl enable privoxy
#查看状态
$ sudo systemctl status privoxy

(4)测试访问外网

1
2
3
4
# 访问需要代理才能访问的google
$ curl www.google.com
# 访问搜狐的这个接口能够返回你的IP地址
$ curl "http://pv.sohu.com/cityjson?ie=utf-8"

7. pac模式代理

经过以上测试可以发现能够代理成功了。但发现目前在终端任何HTTP连接全都走代理了,这不符合我们的预期,我们希望的让代理走pac模式(即需要的连接才代理,不需要的就不用代理,另外如果代理不可用了也不会影响原来的访问)。要配置Privoxy的pac模式,首先需要一个符合Privoxy的pac规则的文件,可以使用GFWList2Privoxy来生成。

(1)安装 GFWList2Privoxy

1
$ pip install --user gfwlist2privoxy

(2)获取gfwlist文件,生成actionsfile

1
2
3
4
$ 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就是privoxy的pac文件,一般里面包含的所有域名都需要代理才能访问的,如果以后某个pac文件之外的网站也想走代理的话,那么仅需要把域名添加到pac文件里面就可以了,比如添加wp.com到pac里面,那么可执行下面的命令进行添加:

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

(3)配置privoxy

1
$ sudo vim /etc/privoxy/config
1
2
3
4
#注释掉这行,防止pac失效,而全部走代理了
#forward-socks5 / 127.0.0.1:1080 .
#激活pac文件
actionsfile gfwlist.action

重启Privoxy

1
$ sudo service privoxy restart

(4)测试代理是否走了pac模式

1
2
3
4
#访问google发现没问题
$ curl www.google.com
#访问请求ip信息,返回的是客户端的IP而不是代理服务器的ip,说明成功走了pac模式
$ curl "http://pv.sohu.com/cityjson?ie=utf-8"

由于开机自启动privoxy,并且环境变量中指定请求转发给privoxy以pac模式处理,所以后续只需要维护ssr客户端即可。需要代理就开启ssr客户端,不需要不开启即可。

8. 轻量级代理转发

经过上面的实战可以发现privoxy虽然可以实现代理转发的作用,但它侵入性比较大。为了“轻量”,我们可以选择使用ProxyChains来完成代理转发的目的,它可以让用户决定命令是否走代理,比如需要走代理,那么就在命令的最前面加上proxychains4,如果不需要不加就行,如此它的侵入性就降到了很低的level了。

➡️ 在使用前先确保开启ssr客户端。

(1)安装 proxychains-ng

1
2
3
4
5
$ git clone https://github.com/rofl0r/proxychains-ng.git
$ cd proxychains-ng/
$ ./configure --prefix=/usr --sysconfdir=/etc
$ make && make install
$ make install-config

(2) 编辑proxychains 配置文件

1
$ vim /etc/proxychains.conf
1
2
3
4
5
6
7
8
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
#注释掉默认的这个配置
#socks4 127.0.0.1 9050
#添加下面这个配置
socks5 127.0.0.1 1080

(3)对于需要代理转发的命令,我们只需要在该命令前加上proxychains4即可,如下:

1
2
3
4
5
$ proxychains4 wget https://github.com/seata/seata/releases/download/v1.2.0/seata-server-1.2.0.tar.gz

$ proxychains4 curl www.google.com

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

📚 参考:

https://huangweitong.com/229.html

https://juejin.im/post/5c91ff5ee51d4534446edb9a



----------- 本文结束 -----------




如果你觉得我的文章对你有帮助,你可以打赏我哦~
0%