Linux环境的客户端
1. 安装ssr客户端
客户端可以选择原版的ssr,也可以使用二次开发的开源项目,比如下面这几个不错:
- shadowsocksr原版备份项目 配置较麻烦,这里不用。
- ssr-helper 这个项目使用体验很棒,比如可以使用命令导入ssr链接、ssr订阅等。但我发现在Ubuntu上使用没问题,但在centos7上总是失败,所以目前先不用这个
- Linux_ssr_script 这个项目功能少了一点,但是在centos7没有问题,于是就使用它。
| 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” |