WinDivert: 仅重定向到监听回环接口的代理

7

我试图像这篇文章中一样实现透明代理,但我的“代理”只在回环接口上侦听。一旦将DstAddr设置为回环,TCP握手的第二个数据包就永远不会被接收。

...
iphdr->DstAddr = htonl(INADDR_LOOPBACK);
tcphdr->DstPort = ProxyPort;
addr->Direction = WINDIVERT_DIRECTION_INBOUND;
...

如果DstAddr = 从捕获的网络接口数据包的地址,则它将起作用。

还尝试修改 addr

    addr->IfIdx = 1;
    addr->SubIfIdx = 0;

没有任何效果。

有没有一种方法来实现这样的配置?

1个回答

0
与原始链接帖子一样,这里似乎没有任何处理反向路径的代码(即处理连接 -> 代理,但不处理代理 -> 连接)。这就解释了为什么永远不会收到 SYNACK
要转发到本地代理,请参阅streamdump示例程序。

谢谢回复。 - mbg033
但是关键是我需要将代理限制在回环接口(127.0.0.1)上。我的过滤器是(tcp.DstPort == 80 or tcp.DstPort == 443 or tcp.SrcPort == <proxy_port>),所以我认为它应该处理'proxy->connection'路径? - mbg033
如果我修改[streamdump](https://github.com/mbg033/Divert/blob/develop/examples/streamdump/streamdump.c),以便它在INADDR_LOOPBACK上运行代理,并在主循环中进行适当的更改,它将停止工作。也许有任何技巧可以注入/重定向到回送接口吗? - mbg033
供参考,此问题在此处进一步讨论:https://github.com/basil00/Divert/issues/82 - Basil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接