Windows:将 IP 和端口的网络流量映射到本地计算机上的另一个 IP 和端口

Windows:将 IP 和端口的网络流量映射到本地计算机上的另一个 IP 和端口

在 Windows 上,我需要将一个 IP 地址(例如 10.255.255.255)的所有流量映射到另一个 IP 地址(例如 127.0.0.1)。

我遇到了 netsh interface portproxy 并且尝试过了。

netsh interface portproxy add v4tov4 listenaddress=10.255.255.255 listenport=7073 connectaddress=127.0.0.1 connectport=7071

目标是,如果用户发送任何数据包到,10.255.255.255:7073就像她将数据包发送到127.0.0.1:7071

netsh interface portproxy show all

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
10.255.255.255  7073        127.0.0.1         7071

我还添加了 7073 端口的防火墙规则。

netsh advfirewall firewall add rule name="7073 port" protocol=TCP dir=in localport=7073 action=allow

这是在 Windows 11 上。

netstat -na|find "7073" 的结果为空,7071 的结果相同,如下所示

netstat -na|find "7071"
  TCP    0.0.0.0:7071           0.0.0.0:0              LISTENING

在我的应用程序中,我首先尝试通过 Postman 将请求发送到 10.255.255.255:7073,但出现超时。同一请求可以成功发送到 127.0.0.1:7071。

如果我通过 telnet 连接到 7073,它就无法连接。

telnet 10.255.255.255 7073
Connecting To 10.255.255.255...Could not open connection to the host, on port 7073: Connect failed

我已检查IP Helper服务是否也在运行。

我的目的是,如果用户已经可以向 发送请求127.0.0.1:7071,那么在端口转发之后,他们也可以向 发送请求10.255.255.255:7073并看到相同的行为。我的应用程序实际上发送的是 HTTP 请求。

请注意,实际上没有服务在监听7073传入流量。但这就是重点,我希望任何向此端口发送任何内容的人(即使没有人在监听它)都会将流量发送到7071(有人在监听它)。

关于将一个 IP:port 映射到另一个 IP 以将所有网络流量从源 IP 转发到目标 IP,我的方法正确吗?

如果是,那么这里可能存在什么问题?

谢谢

答案1

该命令的问题在于指定和netsh的参数时,这些参数用于 listenaddressconnectaddress一个特定的 IP 地址,而不是地址范围

因此,您使用的语法10.255.255.255指定了这个精确的 IP 地址,而不是整个10.* 地址范围。

文档 Netsh 接口 portproxy 命令 - 添加 v4tov4 说:

连接地址

指定IPv4 地址要连接到的计算机。可接受的值是 IP 地址、计算机 NetBIOS 名称或计算机 DNS 名称。如果未指定地址,则默认为本地计算机。

监听地址

指定IPv4 地址要监听的对象。可接受的值是 IP 地址、计算机 NetBIOS 名称或计算机 DNS 名称。如果未指定地址,则默认为本地计算机。

如果您希望重新创建端口代理,则需要先删除使用以下命令创建的端口代理 删除 v4tov4

相关内容