关键是要精准开放udp端口161并限制访问来源:在windows防火墙高级设置中新建入站规则,协议选udp、端口161,仅勾选“域”或“专用”配置文件;同时在snmp服务属性的“安全”选项卡中添加监控服务器ip和只读团体名,最后用snmpwalk命令验证通路。
要让 windows 系统的防火墙允许 snmp 监控流量通过,关键不是“全局放行所有流量”,而是精准开放 udp 端口 161,并限制访问来源——这是安全且有效的做法。默认情况下,windows 防火墙会阻止外部对 snmp 服务(snmp.exe)的入站请求,即使服务已启动也无法响应。
确认 SNMP 服务已启用并监听
先确保 SNMP 代理服务正在运行:
- 按 Win + R,输入 services.msc,回车
- 找到 SNMP Service,右键 → 属性
- 检查“启动类型”为“自动”,状态为“正在运行”
- 切换到“日志”选项卡,勾选“启动时记录事件”,便于后续排查
添加专用入站规则开放 UDP 161 端口
不建议用“允许应用通过防火墙”界面添加 SNMP(它通常不识别 snmp.exe),应直接新建端口规则:
- 打开“控制面板” → “系统和安全” → “Windows Defender 防火墙” → 左侧“高级设置”
- 在左侧选“入站规则”,右侧点“新建规则…”
- 选择“端口”,点击“下一步”
- 协议选 UDP,本地端口填 161,点击“下一步”
- 操作选“允许连接”,点击“下一步”
- 配置配置文件:建议仅勾选“域”和/或“专用”,**不要勾选“公用”**(避免暴露在不可信网络)
- 给规则命名,例如 Allow SNMP v2c Inbound (UDP 161),完成
限制可访问的监控服务器 IP(推荐)
仅开放端口还不够,需配合 SNMP 服务自身的访问控制,防止未授权查询:
- 回到 services.msc,右键“SNMP Service” → “属性” → 切换到“安全”选项卡
- 在“接受来自这些主机的SNMP数据包”区域,点击“添加”
- 输入你的监控服务器 IP(如 192.168.5.20),或子网(如 192.168.5.0/24)
- 在“接受团体名称”中,添加只读团体名(如 public 或更安全的自定义名),并确保勾选“只读”
- 点击“确定”,重启 SNMP 服务生效
验证防火墙是否真正放行
规则生效后,可用以下方式快速验证:
- 在监控服务器上执行:snmpwalk -v 2c -c public 192.168.5.100 system(将 IP 替换为目标 Windows 主机)
- 若返回 OID 结果,说明端口、服务、团体名、IP 白名单全部通路正常
- 若超时,检查 Windows 防火墙日志(eventvwr.msc → Windows 日志 → 安全,筛选事件 ID 5152)确认是否被拦截











