我一直在努力让 snmp 在 Ubuntu 20.04 上持续工作。我从一台服务器上开始,最终获得了一个可以在其上运行的 snmpd.conf 配置。然后,我在许多其他 Ubuntu 20.04 服务器上安装了 snmp,并在它们上放置了可以运行的 snmpd.conf 文件,但其中一些可以运行,而其他则不能。对于不能运行的系统,我尝试运行 snmpwalk -v1 -c 。当我在服务器本身上运行命令时,它可以工作,但当我从其他服务器运行它时,我收到“超时:无响应”。
netstat -an | grep 161 的输出显示我所有服务器上的“udp 0 0 0.0.0.0:161 0.0.0.0:*”
我可以从运行命令的服务器 ping 服务器,并且我已确认系统的防火墙允许访问端口 161。事实上,我已在几台服务器上禁用了 ufw,只是为了看看是否会产生影响,但结果却没有。有其他人遇到过这种情况吗?更重要的是,您是如何解决的?
答案1
如果 snmpwalk 在本地主机上响应,则 snmp 很可能在测试目标上配置正确。
如果至少一些远程机器能够查询测试目标上的 snmp 数据,则进一步确认了这一状态。
对于那些没有响应的目标,很有可能是到 snmp 端口的路由被阻止或端口已关闭或以其他方式限制了访问。由于您说您使用了正在运行的 snmp 客户端的配置文件副本,因此我将假设所有计算机都使用相同的端口并具有相同的公共(和私有)社区字符串。
当然,上述情况可能并不正确,因此请检查以确保 snmpwalk 获得了查询 MIB 所需的所有正确的访问信息。
在无法访问目标 snmp 数据的远程计算机上,如果尚未安装 nmap,请安装。
sudo apt update
sudo apt install nmap
验证snmp监听端口是否有响应
nmap <target hostname or ip address>
例子:
frankie@ubuntu-m8h:~$ nmap 192.168.0.9
Starting Nmap 7.80 ( https://nmap.org ) at 2023-03-16 15:31 PDT
Nmap scan report for 192.168.0.9
Host is up (0.00017s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
161/udp open snmp
514/tcp open shell
631/tcp open ipp
snmpwalk的正确用法是:
snmpwalk -r:<device_IP> -c:<community string> -v:<SNMP version>
如果 snmp 端口响应但 snmpwalk 超时,请检查以确保社区字符串匹配(public 是默认社区字符串)。
最佳做法是最初使用默认值安装 snmp。在确认操作正确之前,请勿更改端口或社区字符串。不过,在启动 snmpd 之前更改私有社区字符串是明智之举。