代理流量回放方案

在 SOCKS5、TCP PROXY、Nginx 等代理中,如若需要对代理的流量还原成真实的 IP 网络包并发给网络审计设备,可以采取如下办法:

linux proxy traffic replay

其中 namespace client&server、bridge br0 部分参考 Linux bridge 强制泛洪实验

而还原代理流量的地方是在 namespace client&server, 在其中各运行一个程序,用于模拟真实的 client 和 server。

Linux 透明代理

Linux 透明代理 允许程序使用非本地 IP 去发送网络包,允许程序接收目的地址为非本地 IP 的网络包。也就是,在 namespace client 中,编写程序使用真实 client 地址去发 IP 包;在 namespace server 中,编写程序接收发送到真实 server 地址的 IP 包。

源代码:linux-tproxy-experiment

namespace server 效果:

namespace server

namespace client 效果:

namespace client

在 bridge 上抓包:

bridge

参考 Linux bridge 强制泛洪实验,即可在 bridge 上将流量泛洪到流量审计设备。

方案限制

该方案有个限制:代理流量回放所在的设备需要跟流量审计设备通过网线直连起来,泛洪出来的流量经过该网线直接到达流量审计设备的流量接收网卡。

总结

该方案巧妙地将 Linux 系统上一些成熟的技术组合起来,从而形成特定场景下的解决方案。