31

我正在尝试使用 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

Show all 确认一切配置正确:

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. 我可以通过http://localhost如下所示的直接端口访问。

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

没有更多信息,我无法找到解决问题的方法。有没有办法调试 NETSH PORTPROXY?

在此处输入图像描述

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

4

4 回答 4

45

我设法通过发出:

netsh interface ipv6 install

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

netsh interface portproxy add v4tov4 listenport=8001 connectport=80 connectaddress=127.0.0.1
于 2014-07-14T10:14:29.853 回答
12

我有你的问题。我刚才已经解决了。有一个名为“ IP Helper ”的Windows 服务提供功能隧道连接。您应该确保它已经启动。

于 2017-01-13T02:37:42.340 回答
12

如果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 客户端)。

那么,左侧的值是否正确?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

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

确保端口未被防火墙阻止

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

于 2019-05-07T17:08:43.990 回答
1
  1. 您必须首先以管理员身份运行 Command.exe,方法是右键单击命令提示符图标并选择以管理员身份运行。您将被要求确认。

  2. 将您的命令粘贴netsh到 command.exe 窗口中,然后按 Enter。

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

  4. 在您的网络浏览器http://your-up:8001中查看它的工作原理。

Windows 事件日志可能包含有助于查找故障原因的信息。

于 2016-11-19T17:26:46.100 回答