如何允许ping(ICMP Echo请求)通过Windows防火墙

当使用默认设置启用Windows防火墙时,您不能从其他设备使用ping命令来查看您的电脑是否处于活动状态。以下是如何改变这一点的方法。

ping命令的工作方式是向目标设备发送称为Internet控制消息协议(ICMP)回应请求的特殊数据包,然后等待该设备发回ICMP回应应答数据包。这不仅允许您测试联网设备是否处于活动状态,而且还可以测量响应时间并为您显示响应时间。默认情况下,具有高级安全性的Windows防火墙会阻止来自网络的ICMP回显请求。当然,您可以出于测试目的而采取禁用防火墙的极端步骤,但更简单的解决方案是创建一个允许ICMP请求通过防火墙的例外。我们将向您展示如何从命令提示符和具有高级安全性的Windows防火墙界面执行此操作。(请注意,如果您的防病毒软件安装了防火墙或其他类型的第三方防火墙程序,则需要打开该防火墙中的端口,而不是内置的Windows防火墙。)

本文中的说明应该适用于Windows7、8和10。我们将指出它们的主要不同之处。

警告:创建例外并通过防火墙打开端口确实会带来安全风险。允许ping请求不是什么大问题,但通常最好阻止任何不需要的东西。

使用命令提示符允许Ping请求

为ping请求创建例外的最快方法是使用命令提示符。您需要以管理员权限打开它。要在Windows8和10中执行此操作,请按Windows+X,然后选择“命令提示符(管理)”。在Windows7中,点击开始并输入“命令提示符”。右键单击生成的条目,然后选择“以管理员身份运行”。

要完全启用ping请求,您将创建两个例外以允许流量通过防火墙-一个用于ICMPv4请求,另一个用于ICMPv6请求。要创建ICMPv4例外,请在提示符下键入(或复制并粘贴)以下命令,然后按Enter键:

netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow

要创建ICMPv6例外,请使用以下命令:

netsh advfirewall firewall add rule name="ICMP Allow incoming V6 echo request" protocol=icmpv6:8,any dir=in action=allow

更改将立即生效-不需要重新启动您的PC或任何东西。现在,如果您从远程设备ping您的PC,您应该会得到实际的结果。

要再次禁用ping请求,您需要禁用您创建的两个例外。对于ICMPv4异常,请在提示符下键入(或复制并粘贴)此命令,然后按Enter键:

netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=block

要禁用ICMPv6请求,请使用以下命令:

netsh advfirewall firewall add rule name="ICMP Allow incoming V6 echo request" protocol=icmpv6:8,any dir=in action=block

当请求被阻止时,对您PC的ping请求将遇到“请求超时”错误。

请注意,在使用我们刚才介绍的命令时,您可以为所需的规则使用任何名称。但是,当您要禁用规则时,您需要使用与创建规则时相同的规则名称。如果忘记了规则的名称,可以使用命令提示符来查看所有规则的列表。只需键入以下命令并按Enter键:

netsh advfirewall firewall show rule name=all

您将看到列出了许多规则,但是向上滚动到列表的顶部,您应该会看到您创建的所有规则都在顶部。

使用具有高级安全性的Windows防火墙允许Ping请求

虽然命令提示符是将ping请求的例外添加到防火墙的最快方式,但您也可以在图形界面中使用“具有高级安全性的Windows防火墙”应用程序执行此操作。点击开始,键入“Windows Firewall with”,然后启动“Windows Firewall with Advanced Security”。

您将创建两个新规则-一个用于允许ICMPv4请求,另一个用于允许ICMPv6请求。在左窗格中,右键单击“入站规则”,然后选择“新建规则”。

在“新建入站规则向导”窗口中,选择“自定义”,然后单击“下一步”。

在下一页中,确保选择了“所有程序”,然后单击“下一步”。

在下一页,从“Protocol type”(协议类型)下拉菜单中选择“ICMPv4”,然后单击“Customize”(自定义)按钮。

在“Customize ICMP Settings”(自定义ICMP设置)窗口,选择“Specific ICMP Types”(特定ICMP类型)选项。在ICMP类型列表中,启用“Echo Request”,然后单击“OK”。

回到后面的“新建入站规则向导”窗口,您就可以点击“下一步”了。

在下一页中,最简单的方法就是确保本地和远程IP地址都选择了“任何IP地址”选项。如果需要,您可以配置PC将响应ping请求的特定IP地址。其他ping请求将被忽略。这使您可以缩小范围,以便只有某些设备才能ping通您的PC。您还可以为本地和远程(Internet)网络配置单独的批准IP地址列表。无论您如何设置,完成后请单击“下一步”。

在下一页上,确保启用了“允许连接”选项,然后单击“下一步”。

下一页允许您控制规则何时处于活动状态。如果您希望无论连接到哪种类型的网络都能应用规则,请保留选项的默认值,只需单击“下一步”即可。但是,如果您的PC不是企业的一部分(并且没有连接到域),或者如果您希望它在连接到公共网络时不响应ping请求,请随时禁用这些选项。

最后,您需要为新规则指定一个名称,还需要一个描述(可选)。但是,我们建议您至少在其中包含文本“ICMPv4”,因为您还将创建第二个规则来允许ICMPv6请求。选择对您有意义的内容,然后单击“完成”。

不幸的是,您还没有完全完成。继续创建允许传入ICMPv6请求的第二个规则是个好主意。大多数情况下,这是一个很好的以防万一的措施。人们在发出ping命令时倾向于使用IPv4地址,但一些网络应用程序使用IPv6。不如把你们的基地都盖上吧。

按照我们刚才介绍的相同步骤设置所有选项,与我们对ICMPv4规则所做的设置完全相同。但是,当您进入端口和协议页面时,从下拉列表中选择“ICMPv6”,而不是“ICMPv4”。这-以及为规则创建一个不同的名称-是唯一改变的两件事。

准备好这两条新规则后,您就可以关闭“具有高级安全性的Windows防火墙”应用程序了。不需要重新启动您的PC或其他任何东西。您的PC应该立即开始响应ping。

如果您想禁用所有这些功能,可以返回并删除这两个规则。然而,如果你只是禁用这些规则,可能会更好。这样,您可以重新启用它们,而无需重新创建它们。在“高级安全Windows防火墙”应用程序中,选择左侧的“入站规则”,然后在中间窗格中找到您创建的规则。右键单击规则并选择“禁用”以阻止ping请求通过防火墙。

允许ping请求到达您的PC并不是每个人都需要做的事情。但是,如果您正在进行任何类型的网络故障排除,ping可能是一个有价值的工具。一旦设置好了,打开和关闭也非常容易。

相关文章