snmpd 未侦听 Ubuntu 服务器上的端口 161

use*_*308 1 linux ubuntu snmp

我已经通过apt-get install snmpd snmp 在我的 Ubuntu 服务器上安装了 snmpd。然后我更改了 /etc/default/snmpd 中的行

SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid 0.0.0.0'
Run Code Online (Sandbox Code Playgroud)

之后,我重新启动了 snmpd 服务器(/etc/init.d/snmpd restart)。但是,当我运行netstat -an |时 grep "LISTEN ",我没有看到 snmpd 正在侦听端口 161。

我没有任何防火墙阻止该端口。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Run Code Online (Sandbox Code Playgroud)

Dou*_*ley 5

用户“nos”正确;UDP 绑定不会在“netstat”下显示为“LISTEN”。相反,您将看到如下所示的一两行,表明“snmpd”确实已准备好在 UDP 端口 161 上接收数据:

Proto Recv-Q Send-Q Local Address  Foreign Address  State  PID/Program name
udp        0      0 0.0.0.0:161    0.0.0.0:*               1785/snmpd      
udp6       0      0 ::1:161        :::*                    1785/snmpd
Run Code Online (Sandbox Code Playgroud)

“netstat”联机帮助页对“State”列有这样的说法:

套接字的状态。由于原始模式下没有状态,UDP 中通常也没有使用状态,因此该列可以留空。

因此,您不会期望在这里看到“LISTEN”一词。


然而,从实际角度来看,我还想指出一件事。通常,默认的 Net-SNMP“snmpd.conf”配置文件将传入连接限制为仅限本地进程。

默认 /etc/snmp/snmpd.conf

#  Listen for connections from the local system only
agentAddress  udp:127.0.0.1:161
#  Listen for connections on all interfaces (both IPv4 *and* IPv6)
#agentAddress udp:161,udp6:[::1]:161,tcp:161,tcp6:[::1]:161
Run Code Online (Sandbox Code Playgroud)

通常,设置“snmpd”的目的是让另一台机器可以监视它。要实现此目的,请确保注释掉第一行并启用第二行。