Routing Windows上的数据包重定向

Routing Windows上的数据包重定向,routing,network-programming,iptables,windows-firewall,pcap.net,Routing,Network Programming,Iptables,Windows Firewall,Pcap.net,由于软件限制,我们目前在所有机器上运行windows 然而,在这种情况下,我们需要将进入IP和端口的某些数据包重定向到不同的端口(相同的IP)。我们有软件监听“代理端口” 这可以通过在linux上使用IPTables实现,方法类似于: iptables -t nat -I PREROUTING -p udp -d <DSTIP> --dport <DSTPORT> -m u32 --u32 '0>>22&0x3C@8=0xFFFFFFFF &&

由于软件限制,我们目前在所有机器上运行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>
iptables-t nat-I预路由-p udp-d-dport-m u32-u32'0>>22&0x3C@8=0xFFFFFF&&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重定向--到端口
这在linux上非常有效,并且会将某些数据包重定向到我们的代理软件,但是在windows上做这样的事情,而不必在我们的windows机器前面安装一台专用机器,这有可能吗

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

从:

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

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

netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
另外,如中所述,netsh是Windows上的iptabes的良好替代品。

命令

netsh interface portproxy ...
执行端口代理,但不执行数据包转发。主要区别在于

  • 性能比iptables差得多(参见)
  • 源IP地址更改为本地主机(127.0.0.1或::1取决于IP版本),您将丢失原始请求源IP地址

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

那是哪个版本的windows?你看到了吗?只是出于好奇:你为什么需要这个?我想你将不得不为Windows编写一个过滤器驱动程序或设置一个Linux(虚拟)机,这几乎是我们需要的,只是它只需要将包含一些负载的特定流量转发到一个新端口,而不是所有流量。