一般情况,在国内,ssr客户端使用比较多的场景是在用户量比较多的windows、mac、ios和android系统上,相应的这些操作系统对应的ssr客户端也都比较容易上手。那么在linux操作系统下是否有其使用场景呢?答案那是肯定的,首先对于开发人员来说,还是有一部分人在使用诸如ubuntu、deepin这样交互性比较好的操作系统的,那么在进行科学上网的时候,势必会用到代理客户端。还有一种场景,那就是运维人员也会有使用到的可能性,比如希望快速通过wget下载墙外的文件资源等等。
一、SSR
¶1、gui客户端代理
¶1.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
啦
¶2、终端命令代理
以服务器中的centos7操作系统为例。
¶2.1 安装ssr客户端
客户端可以选择原版的ssr,也可以使用二次开发的开源项目,比如下面这几个不错:
shadowsocksr原版备份项目 配置较麻烦,这里不用。
ssr-helper 这个项目使用体验很棒,比如可以使用命令导入ssr链接、ssr订阅等。但我发现在Ubuntu上使用没问题,但在centos7上总是失败,所以目前先不用这个
Linux_ssr_script 这个项目功能少了一点,但是在centos7没有问题,于是就使用它。
1 | git clone http://git.mrwang.pw/Reed/Linux_ssr_script.git |
¶2.2 配置节点
1 | ./ssr config |
1 | { |
根据情况配置ssr节点
一般情况:server(服务端ip)、server_port(服务端端口)、password(节点密码)、method(加密方法)、protocol(协议)、protocol_param(协议参数)、obfs(混淆)、obfs_param(混淆参数)是都要填的。而其他的参数视节点情况而配置即可。
¶2.3 启动客户端
1 | ./ssr start |
¶2.4 测试
然后通过访问cip.cc查询ip信息来查看是否成功。
1 | [root@iz2ze4uom6jrktiqj54y48z ~]# curl cip.cc |
¶2.5 关闭客户端
1 | ssr stop |
¶2.6. 代理转发
Shadowsocks属于socks5协议,默认不对http协议的请求进行代理比如在以上配置完成后执行如下命令是访问不了Google的。
1 | curl www.google.com |
如果需要让一些http相关的命令成功走代理,那么可以借助privoxy把HTTP协议转成socks5协议即可。
¶2.6.1 privoxy代理转发
¶2.6.1.1 安装配置privoxy
(1)安装配置
1 | sudo yum install privoxy -y |
1 | (1)找到listen-address确保有这行代码 |
1 | 如果需要自动代理,可以把/改为如下类似的匹配规则即可 |
(2)启动并查看privoxy运行状态
1 | 启动 |
(3)配置环境变量让http、https和ftp协议转发给privoxy处理
1 | 全局环境变量/etc/profile |
在末尾处添加以下环境变量
1 | proxy="http://127.0.0.1:8118" |
然后加载环境变量
1 | source ~/.bashrc |
(4)测试访问外网
1 | 访问需要代理才能访问的google |
¶2.6.1.2 privoxy使用pac模式代理
经过以上测试可以发现能够代理成功了。但发现目前在终端任何HTTP连接全都走代理了,这不符合我们的预期,我们希望的让代理走pac模式(即需要的连接才代理,不需要的就不用代理,另外如果代理不可用了也不会影响原来的访问)。要配置Privoxy
的pac模式,首先需要一个符合Privoxy
的pac规则的文件,可以使用GFWList2Privoxy来生成。
(1)安装 GFWList2Privoxy
1 | pip install --user gfwlist2privoxy |
(2)获取gfwlist文件,生成actionsfile
1 | cd /tmp |
其中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 | 注释掉这行,防止pac失效,而全部走代理了 |
重启Privoxy
1 | sudo service privoxy restart |
(4)测试代理是否走了pac模式
1 | #访问google发现没问题 |
由于开机自启动privoxy,并且环境变量中指定请求转发给privoxy以pac模式处理,所以后续只需要维护ssr客户端即可。需要代理就开启ssr客户端,不需要不开启即可。
¶2.6.2 proxychains4代理转发
经过上面的实战可以发现privoxy虽然可以实现代理转发的作用,但它侵入性比较大。为了“轻量”,我们可以选择使用ProxyChains来完成代理转发的目的,它可以让用户决定命令是否走代理,比如需要走代理,那么就在命令的最前面加上proxychains4
,如果不需要不加就行,如此它的侵入性就降到了很低的level了。
➡️ 在使用前先确保开启ssr客户端。
(1)安装 proxychains-ng
1 | git clone https://github.com/rofl0r/proxychains-ng.git |
(2) 编辑proxychains 配置文件
1 | vim /etc/proxychains.conf |
1 | [ProxyList] |
(3)对于需要代理转发的命令,我们只需要在该命令前加上proxychains4
即可,如下:
1 | proxychains4 wget https://github.com/seata/seata/releases/download/v1.2.0/seata-server-1.2.0.tar.gz |
📚 参考:
二、V2ray
1 | 下载 |
三、Clash
¶1、安装配置
1 | git clone https://github.com/wanhebin/clash-for-linux.git |
¶2、启动
1 | ./start.sh |
Clash Web管理页面:http://IP:9090/ui
¶3、关闭
1 | ./shutdown.sh |
四、相关代理操作命令
1 | #一、终端请求设置代理 |