一、背景
-
今天在和同事的讨论中,突然向我提问我所使用的代理是否真的应用了代理!第一反应是,我都流量肯定是走代理出去啊,我都开全局了!
-
随后便是开始我的证明,在使用全局代理的模式下,在百度搜索“IP”,不出意外,是代理IP。但是,随后在终端的测试以及在一些安全工具使用的测试中,我发现它们并没有走代理流量,而还是自己的真实IP。一下子就感觉头大了。。。。。
-
请回想下,你开着所谓的全局代理,又干过哪些好事。🤐💤
二、原因
- 像是我们所设定的所谓
全局代理
,其实就只是申明一个系统全局变量,但实际上只是部分应用会使用系统已声明的代理变量,而不是系统的全部流量都走代理出去。 - 就我们经常使用的Clash、v2rayN,其定义的全局代理,也就是更改系统配置后,对系统环境声明一个系统变量,但该变量正如以上所言,其实并非系统全局所有的程序都会引用该变量,也就不是所有的流量都走代理端口了。
- 需要深入对系统流量进行分析,windows推荐使用wireshark ,Linux推荐使用以下命令抓包后下载本地使用
wireshark
进行流量分析tcpdump -w capture.cap
三、解决方案
3.1、在使用安全攻击工具时,额外配置代理
- 示例-长亭洞鉴
3.2、更改系统配置,对终端也采用流量代理
3.2.1Windows环境
临时代理使用
- 有密码的情况(终端输入以下命令)
set http_proxy=socks5://账号:密码@代理IP:端口
set https_proxy=socks5://账号:密码@代理IP:端口
- 无密码的情况
set http_proxy=socks5://代理IP:端口
set https_proxy=socks5://代理IP:端口
长期代理使用(推荐)
- 在系统环境变量中创建
http_proxy
、https_proxy
的变量,然后以你的代理服务参数
3.2.2Linux环境(示例:ubuntu)
临时代理使用
- 有密码情况(终端输入以下命令)
export http_proxy="socks5://账号:密码@代理IP:端口"
export https_proxy="socks5://账号:密码@代理IP:端口"
- 无密码的情况
export http_proxy="socks5://代理IP:端口"
export https_proxy="socks5://代理IP:端口"
长期代理使用(推荐)
- 修改自己的用户目录下的隐藏文件
.bashrc
或.zshrc
,设置系统环境变量,在文件中添加以下内容- 注:
.zshrc
是用户使用zsh美化shell后所使用的默认shell,.bashrc
是系统默认的shell环境
- 注:
export http_proxy="socks5://账号:密码@代理IP:端口"
export https_proxy="socks5://账号:密码@代理IP:端口"
3.2.3检验代理效果
- 请于终端中输入以下指令查看:
curl -v gotarget.top
- Windows环境:
- Linux环境:
- 补充:查看自身外网IP命令:
curl ifconfig.me
- curl使用代理:
curl -v -x "协议://用户名:密码@代理IP:代理端口" gotarget.top
- 补充:查看自身外网IP命令: