NETSH端口从本地端口转发到本地端口不起作用

Jos*_*hua 22 portforwarding netsh windows-networking

我正在尝试使用NETSH PORTPROXY命令将发送到192.168.0.10端口8001上的XP PC(IP )的数据包转发到端口80(我是一个侦听端口80的XAMPP Apache服务器).

我发布了以下内容:

netsh interface portproxy add v4tov4 listenport=8001 listenaddress=192.168.0.10 connectport=80 connectaddress=192.168.0.10
Run Code Online (Sandbox Code Playgroud)

显示全部确认所有内容都已正确配置:

netsh interface portproxy show all

Listen on IPv4:             Connect to IPv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.0.10    8001        192.168.0.10    80
Run Code Online (Sandbox Code Playgroud)

但是,我无法访问apache网站http://localhost:8001.我可以通过直接端口访问http://localhost,如下所示.

此外,我还尝试了以下方法:1 http://192.168.0.10:8001.使用以下链接从远程PC访问Apache网站:.防火墙已关闭.2.将listenaddress和connectaddress更改为127.0.0.1.

没有进一步的信息,我找不到解决问题的方法.有没有办法调试NETSH PORTPROXY?

在此输入图像描述

注意:顺便说一下,如果你想知道为什么我这样做,我实际上想要将远程MySQL客户端连接从自定义端口映射到默认的MySQL服务器端口3306.

Jos*_*hua 35

我设法通过发布:

netsh interface ipv6 install
Run Code Online (Sandbox Code Playgroud)

另外,出于我的目的,不需要设置listenaddress并且更好地设置connectaddress = 127.0.0.1,例如

netsh interface portproxy add v4tov4 listenport=8001 connectport=80 connectaddress=127.0.0.1
Run Code Online (Sandbox Code Playgroud)

  • 127.0.0.1不能用作连接端口 (4认同)
  • 他们最近改变了命令吗?我收到错误:“未找到以下命令:interface ipv6 install。” (4认同)
  • 用"netsh int ipv4 install"为我工作.谢谢 (2认同)

jwa*_*ins 11

如果netsh的端口代理没有按预期工作,那么您应该验证以下内容,最好按该顺序:

  1. 确保端口代理配置正确
  2. 启动或重启相关的 Windows 服务
  3. 确保安装了对 IPv6 的支持
  4. 确保端口没有被防火墙阻止

确保端口代理配置正确

这可能看起来微不足道,但为了以防万一,在继续之前花点时间检查您的配置。

从命令提示符或 PowerShell 提示符运行以下命令:

netsh interface portproxy show all
Run Code Online (Sandbox Code Playgroud)

结果应该是这样的:

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
24.12.12.24     3306        192.168.0.100   3306
24.12.12.24     8080        192.168.0.100   80
Run Code Online (Sandbox Code Playgroud)

仔细检查这些设置。确保您确实可以从本地计算机连接到该列表右侧的地址。例如,您能否在本地打开 Web 浏览器并访问192.168.0.100:80? 如果协议不是 HTTP,则使用 telnet:(telnet 192.168.0.100 3306请参阅此处了解如何在 Windows 上安装 Telnet 客户端)。

那么,左侧的值是否正确?IP 地址对您的机器有效吗?这是您尝试从外部机器连接到的端口号吗?

启动或重启相关的 Windows 服务

在最新版本的 Windows 上,netsh的端口代理由名为“IP Helper”或“iphlpsvc”的 Windows 服务处理。如果该服务停止,代理显然将不起作用。我也遇到过通过重新启动该服务可以解决的情况。

要在最新版本的 Windows 中执行此操作:

  1. 打开任务管理器,然后转到服务选项卡。
  2. 在“名称”列中,找到名为“iphlpsvc”或“IP Helper”的服务。
  3. 右键单击该服务,然后选择Restart。如果重新启动不可用,则服务可能已停止,实际上必须启动,因此选择Start

在以前版本的Windows,寻找的服务管理工具,在控制面板里面。

确保安装了对 IPv6 的支持(仅限旧版本的 Windows)

在早期版本的 Windows 上(当然是 Windows XP,直到 Windows 10 的一些早期版本,显然,虽然这不清楚),netsh端口代理功能(包括 IPv4 到 IPv4 代理)实际上是由IPV6MON.DLL仅在启用 IPV6 协议支持时才加载的 DLL ( )。因此,在这些版本中,为支持IPv6协议要求,以使netsh的端口进行代理(请参阅Microsoft支持文章在这里)。

从命令提示符或 PowerShell 提示符运行以下命令:

netsh interface ipv6 install
Run Code Online (Sandbox Code Playgroud)

如果您收到指示interface ipv6 install未找到该命令的错误,则意味着您使用的是最新版本的 Windows,其中netsh的 IPv6 支持是隐式的,无法禁用。

确保端口没有被防火墙阻止

本地防火墙甚至可能在端口到达 IP 帮助程序服务之前就已阻止它们。为了验证这个假设,暂时禁用任何本地防火墙(包括 Windows 的本机防火墙),然后重新测试。如果可行,那么只需在防火墙配置中添加端口排除即可。

  • 在 Windows 10 中,以管理员身份在 Powershell 中执行 netsh interface 命令会导致错误:“未找到以下命令:interface ipv6 install”。 (3认同)

小智 6

我有你的问题.我刚才解决了.有一个名为" IP Helper " 的Windows服务提供功能隧道连接.你应该确保它已经开始了.

  • 我不明白这个答案是如何需要改进的.这是许多可能原因之一,在我的情况下,这也是原因. (5认同)