dnomd343 / XProxy

虚拟旁路由网关,支持内网设备IPv4与IPv6双栈透明代理
MIT License
204 stars 28 forks source link

我想在代理机器上知道转发过来的流量是局域网哪个机器来的 #1

Open gotoin opened 2 years ago

gotoin commented 2 years ago

xproxy转发流量到代理机器上,代理机器怎么知道实际是局域网内的哪台机器(ip)来的?

dnomd343 commented 2 years ago

XProxy流量工作在传输层,Socks层面代理不会转发原始网络层数据包,也就是远程服务器不会尝试理解内网流量来源(这个本身也是Shadowsocks、VMess、Trojan等协议的特性),因此直接在代理机器上获取局域网IP不太现实。

但是在XProxy工作的机器上,获取内网机器访问记录是可行的,示例如下:

image

如果有必要,您可以将以上的内网日志实时同步给代理机器。

此外,您可以尝试借助Proxy Protocol在TCP流量头部附着来源地址,远端服务器可以借此获取到内网地址,但是实现这个模式需要修改很多配置,理论上可行但实际较为麻烦,且效率偏低。

如果想最方便地实现需求,您可以考虑VPN组网(比如WireGuard),这种方案可以实现完整的链路层流量转发。

gotoin commented 2 years ago

谢谢您的建议,Proxy Protocol我尝试过了,可行。 我的目地是解析流经路由的http/https流量,通过Proxy Protocol对tcp包装一层后,我没有找到能解开Proxy Protocol并对tcp流量解析出其中http内容的开源工具,我可能需要自己来开发这块了,请问您有了解这块有没有现成工具可用的吗,非常感谢。

dnomd343 commented 2 years ago

这个需求理论上借助Xray是可以实现的,可以考虑去交流群咨询一下。