Windows防火墙默认拦截ICMPv4回显请求(类型8),需启用预置规则或新建自定义规则允许入站Ping;支持指定IP/网段、IPv6及命令行批量配置,启用后需验证网络类型与规则顺序。
windows防火墙默认不响应 ping 请求,是因为入站方向的 icmpv4 回显请求(类型 8)被拦截。要让它能被 ping 通,关键是添加一条允许入站 icmpv4 回显请求的规则,而不是关掉整个防火墙。
直接启用系统预置规则(最快)
Windows 自带几条现成的 ICMP 入站规则,启用即可:
- 按
Win + R,输入wf.msc回车,打开「高级安全 Windows Defender 防火墙」 - 左侧点「入站规则」
- 在右侧规则列表中,找到以下任一名称(不同版本略有差异):
-
核心网络诊断 - ICMP回显请求 (ICMPv4-In) -
文件和打印机共享 (Echo Request - ICMPv4-In) -
虚拟机监控 (回显请求 - ICMPv4-In)
-
- 右键 → 「启用规则」
- 如需支持 IPv6,同步启用含
ICMPv6-In的对应规则(如回显请求 - ICMPv6-In)
✅ 适合大多数家庭、办公或测试环境,一步到位。
只允许指定 IP 或网段 ping(更安全)
如果只想让某台管理机或某个子网能 ping 你(比如只允许 192.168.5.0/24 网段),就不能用预置规则,得新建自定义规则:
在 Windows 上执行终端命令,或对比 Windows 与 Linux 的 Shell 语法时使用。建议先检测当前 Shell 是 PowerShell 还是 cmd.exe,再给出相应命令……
- 在
wf.msc中,右键「入站规则」→ 「新建规则…」 - 类型选「自定义」→ 下一步
- 「程序」选「所有程序」→ 下一步
- 「协议和端口」中:
- 协议类型选
ICMPv4 - 勾选「自定义 ICMP 设置」→ 点「设置」→ 类型填
8,代码选「任何」→ 确定
- 协议类型选
- 「作用域」页关键操作:
- 在「远程IP地址」下选「下列IP地址」
- 点「添加」,输入允许的单个 IP(如
10.1.2.3)或 CIDR 网段(如172.16.0.0/16) - 切勿留空或选「任何 IP 地址」
- 「操作」选「允许连接」→ 下一步
- 「配置文件」按需勾选(域、专用、公用)→ 下一步
- 「名称」填清楚,例如
Allow-Ping-From-Dev-Team→ 完成
⚠️ 注意:这条规则必须处于“默认阻止规则”之前(可在规则列表中右键上移调整顺序)。
命令行快速添加(适合批量或脚本)
以管理员身份运行 PowerShell 或 CMD:
# 允许任意来源 ping(等效启用预置规则) netsh advfirewall firewall add rule name="Allow ICMPv4 Echo" protocol=icmpv4:8,any dir=in action=allow # 只允许特定 IP(例如 192.168.1.50) netsh advfirewall firewall add rule name="Allow Ping from 192.168.1.50" protocol=icmpv4:8,any dir=in remoteip=192.168.1.50 action=allow # 查看是否生效 Get-NetFirewallRule -DisplayName "*ICMP*" | Where-Object Enabled -eq True
验证与排查小贴士
- 测试前,确保目标机器本身能 ping 通网关(确认网络层通畅)
- 在目标机上执行
ping 127.0.0.1:通 → 说明本地协议栈正常;不通 → 非防火墙问题 - 若仍不通,检查网络位置类型(控制面板 → 网络和 Internet → 网络和共享中心 → 当前网络):
- 「公用网络」下很多预置规则默认禁用,建议改为「专用网络」再试
- 规则启用后,对方执行
ping <你的IP>,应收到类似来自 xxx 的回复:字节=32 时间<1ms TTL=128
不复杂但容易忽略。

















