8

由于软件限制,我们目前在所有机器上运行 Windows。

但是,在此范围内,我们需要将进入 IP 和端口的某些数据包重定向到不同的端口(相同的 IP)。我们有软件在“代理端口”上侦听。

这可以通过 linux 上的 IPTables 来实现,方法如下:

iptables -t nat -I PREROUTING -p udp -d <DSTIP> --dport <DSTPORT> -m u32 --u32 '0>>22&0x3C@8=0xFFFFFFFF && 0>>22&0x3C@12=0x54536F75 && 0>>22&0x3C@16=0x72636520 && 0>>22&0x3C@20=0x456E6769 && 0>>22&0x3C@24=0x6E652051 && 0>>22&0x3C@28=0x75657279' -j REDIRECT --to-port <REDIRECT PORT>

这在 linux 上效果很好,并将某些数据包重定向到我们的代理软件,但是是否有可能在 windows 上做这样的事情而不必在我们的 windows 机器前面安装专用机器?

我正在考虑用 pcap.net 写一些东西,但我猜这必须直接从 NIC 而不是 windows 读取?

4

2 回答 2

6

MSDN

Netsh是一个命令行脚本实用程序,允许您在本地或远程显示或修改当前正在运行的计算机的网络配置。

您可以使用以下命令将来自任何端口的连接重定向到另一个本地(或远程)端口:

netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport

此外,正如这篇 SO 帖子中所述,netsh是 Windows 上iptabes的一个很好的替代品。

于 2016-04-08T13:07:59.620 回答
1

命令

netsh interface portproxy ...

做端口代理,但不做数据包转发。主要区别是

我们一直在使用这种技术进行端口转发,但在这些发现之后,我们不得不在网络防火墙上使用额外的规则来避免使用 netsh。

于 2018-05-30T10:49:44.317 回答