Loading... # Linux代理 在使用Linux开发的过程, 经常有需要通过代理上网的需求(下载资源文件, 加速远程访问连接), 如下为实践可用的一些简单实方式. ## 代理服务器分类 我们比较常用、支持http(s)协议代理主要分为两大类:http代理和socks代理,见下表: ![2023-10-09T06:29:13.png][1] 目前比较推荐使用的协议为socks5, 各类常见应用中直接提供了使用代理的方式(接口)相当便捷; ## 代理类型 代理(Proxy)一般可以简单分为全局与非全局方式代理. 本文主要记录非全局代理方式. ## 代理实践 测试平台: * Ubuntu18.04, docker创建的容器内, 主机标识为A * 局域网内, MacAirBook, 使用ClashX配置了代理(允许局域网连接, 直接http/https/socks协议, 端口7890), 主机标识为B(192.168.114.123) * 远程/国外主机, 可以访问到谷歌等服务, 主机标识为C ### 局域网内借助其它主机的代理服务实现的流量转发 局域网内B主机可以通过代理服务进行外网访问, 且代理工具ClashX支持局域网代理共享; 此时主机A可以借助主机B实现外网访问 主机B的ClashX代理配置 <img src="https://zoe.red/usr/uploads/2023/10/1610222312.png" alt="clashx" width="25%" height="25%" style=""> 主机A配置, 可选择多种方式 * 简单设置环境变量直接使用 * [推荐]借助第三方工具 简单直接设置环境变量方式 * 不足之处在于一些不想使用代理的场景, 可能也会受到影响 ```shell # 临时使用设置, 命令行输入 export ALL_PROXY="socks5://192.168.114.123:7890" export all_proxy="socks5://192.168.114.123:7890" #export https_proxy=https://192.168.114.123:7890 #export http_proxy=http://192.168.114.123:7890 #export no_proxy='localhost,127.0.0.1' # 测试, 此时ClashX全局代理模式 curl myip.ipip.net 当前 IP:**** 来自于:日本 大阪府 大阪 it7.net # 取消环境变量设置 unset ALL_PROXY unset all_proxy #unset http_proxy #unset https_proxy # 取消代理后在此测试 curl myip.ipip.net 当前 IP:**** 来自于:中国 浙江 杭州 阿里云 ``` 借助第三方工具 * [推荐]proxychains * ... proxychains主要有以下功能: * 支持http/https/socks4/socks5 * 支持认证 * 远端dns查询 * 多种代理模式 项目地址: * https://github.com/haad/proxychains * https://proxychains.sourceforge.net proxychains 安装&配置&使用过程 * 推荐: 在需要使用的场景, 才会对代理应用的tcp流量进行转发, 不会影响到其它场景使用 ```shell # 安装 apt-get install proxychains -y # 编辑配置文件 vim /etc/proxychains.conf """ # 注释最后一行, 并且新增如下配置 #socks4 127.0.0.1 9050 socks5 192.168.114.123 7890 """ # 在需要使用代理的场景测试, # 如curl, wget, git等, 使用格式为在正常命令前添加 proxychains即可 proxychains curl myip.ipip.net ProxyChains-3.1 (http://proxychains.sf.net) |DNS-request| myip.ipip.net |S-chain|-<>-192.168.114.123:7890-<><>-4.2.2.2:53-<><>-OK |DNS-response| myip.ipip.net is 172.67.22.102 |S-chain|-<>-192.168.114.123:7890-<><>-172.67.22.102:80-<><>-OK 当前 IP:**** 来自于:日本 大阪府 大阪 it7.net curl myip.ipip.net 当前 IP:**** 来自于:中国 浙江 杭州 阿里云 # 如果需要对如下执行的所有命令都进行代理, 可以使用proxychains bash 创建一个新的全部走代理的shell # 同理, 如果想打开一个全部代理的浏览器, 可以proxychains Firefox创建 ``` ### 远程主机+SSH动态端口转发实现流量代理 已知主机C为外网主机, 主机A能够与之建立SSH连接, 此时通过在A主机建立到C主机的SSH动态端口转发命令(指定A主机的任意端口, 比如为9999), 建立了一个简单的socks代理服务, 此时可以借助proxychains等工具, 实现外网访问. 仅需对A主机进行额外配置即可!!! ```shell # 建立SSH端口转发 # ssh -D 9999 C # 具体例子 # 示例C主机用户:IP端口 root@45.78.50.61 -p 6102 # -fN: 建立SSH连接后转入后台运行 # -C: 压缩, 大文件传输时有效加速 # ssh通信有时因为各种原因被中断但是客户端并不能及时知道, # 这里设置这2个参数来-o ServerAliveInterval=60 -o ServerAliveCountMax=3, # 在与服务端多次通信无响应时,客户端就自动断开连接并退出 ssh -fN -C -D 9999 root@45.78.50.61 -p 6102 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 # 修改proxychains配置代理 vim /etc/proxychains.conf """ # 注释最后一行, 并且新增如下配置 #socks4 127.0.0.1 9050 socks5 127.0.0.1 9999 """ # 测试输出 proxychains curl myip.ipip.net curl myip.ipip.net ``` 实战案例 * 2024年6月起国内的docker镜像加速站点都被禁止了, 可以通过SSH动态端口转发的方式实现临时FQ访问官方加速站, 更多详情参见本站博文 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://zoe.red/2024/536.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://zoe.red/usr/themes/handsome/assets/img/sj/1.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">SSH端口转发实战</p> <div class="inster-summary text-muted"> 前言记录下SSH端口转发的一些实践案例Docker官方源加速SSH动态端口转发功能, 会在当前主机A与目标主机B之... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 参考: https://zoe.red/2023/8.html https://cloud.tencent.com/developer/article/1921948 https://www.linuxprobe.com/proxychains-proxy.html [1]: https://zoe.red/usr/uploads/2023/10/2166368638.png [2]: https://zoe.red/usr/uploads/2023/10/2550289684.png [3]: https://zoe.red/usr/uploads/2023/10/1610222312.png THE END 本文作者:将夜 本文链接:https://zoe.red/2023/26.html 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。 最后修改:2024 年 08 月 21 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏
1 条评论
测试评论样式![](https://zoe.red/usr/themes/handsome/assets/img/emotion/twemoji/smile.png)