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

时间:2014-07-09 05:47:08

标签: portforwarding netsh windows-networking

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

我发布了以下内容:

netsh interface portproxy add v4tov4 listenport=8001 listenaddress=192.168.0.10 connectport=80 connectaddress=192.168.0.10

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

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

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

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

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

enter image description here

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

4 个答案:

答案 0 :(得分:34)

我设法通过发布:

让它发挥作用
netsh interface ipv6 install

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

netsh interface portproxy add v4tov4 listenport=8001 connectport=80 connectaddress=127.0.0.1

答案 1 :(得分:6)

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

答案 2 :(得分:2)

  1. 您必须首先以管理员身份运行Command.exe,方法是右键单击“命令提示符”图标并选择以管理员身份运行。您将被要求确认。

  2. netsh命令粘贴到command.exe窗口,然后按Enter键。

  3. 如果未显示任何错误消息,则该命令有效。

  4. 在您的网络浏览器中,转到http://your-up:8001查看是否有效。

  5. Windows事件日志可能包含有助于查找失败原因的信息。

答案 3 :(得分:0)

如果netsh的端口代理未按预期工作,则应按以下顺序验证以下内容:

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

确保正确配置了端口代理

这似乎是微不足道的,但以防万一,请花点时间检查配置,然后再进行下一步。

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

netsh interface portproxy show all

结果应如下所示:

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

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

然后,左侧的值正确吗? IP地址对您的机器有效吗?是您要从外部计算机连接的端口号吗?

启动或重新启动相关的Windows服务

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

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

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

在Windows的早期版本中,在控制面板内的管理工具中寻找服务

确保已安装对IPv6的支持

需要 支持IPv6,以启用netsh的端口代理,包括IPv4-to-IPv4代理(请参阅Microsoft的支持文章here)。 / p>

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

netsh interface ipv6 install

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

即使在到达IP Helper服务之前,本地防火墙也可能会阻塞端口。要验证此假设,请暂时禁用任何本地防火墙(包括Windows的本机防火墙),然后重新测试。如果可行,则只需将端口排除项添加到防火墙配置中即可。