snmp 的 基本安装 和 测试


snmpd 的 基本安装。

安装 前的准备工作

  • 查看 ssl 库的路径。后续需要 安装 snmpd 需要 --with-openssl 指定 ssl 路径。
ldconfig -p | grep ssl
>	libssl3.so (libc6,x86-64) => /usr/lib64/libssl3.so
>	libssl.so.10 (libc6,x86-64) => /usr/lib64/libssl.so.10
>	libssl.so.1.1 (libc6,x86-64) => /usr/local/lib/libssl.so.1.1		# <-- openssl is in /usr/local
>	libssl.so.1.0.0 (libc6,x86-64) => /usr/local/lib/libssl.so.1.0.0	# <-- openssl is in /usr/local
>	libssl.so (libc6,x86-64) => /usr/lib64/libssl.so
>	libevent_openssl-2.0.so.5 (libc6,x86-64) => /usr/lib64/libevent_openssl-2.0.so.5

安装 snmp service

如果系统无法使用 yum源 安装,则需要下载 5.7.3 版本的源码安装。
使用 yum源 安装,会安装 5.7.2 版本。

下载地址:
https://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.3/net-snmp-5.7.3.tar.gz/download

cd /root
tar xvf net-snmp-5.7.3.tar.gz
cd /root/net-snmp-5.7.3
# --prefix 安装到 `/usr`
# 使用 python & perl 模块
# --with-openssl指定了 ssl 路径
./configure --prefix=/usr --with-python-modules --with-perl-modules --with-openssl=/usr/local
make && make install

注意1
configure 的时候,如果出现交互式的设置,使用默认设置就可以。

Default version of SNMP to use (3):
System Contact Information (@@no.where):
System Location (Unknown):
Location to write logfile (/var/log/snmpd.log):
Location to write persistent information (/var/net-snmp):

注意2
snmpd v3 需要支持 认证和加密。所以需要确认一下,配置的结果:

  • 支持 认证和加密 的配置的结果
>	---------------------------------------------------------
>	            Net-SNMP configuration summary:
>	---------------------------------------------------------
>	
>	  SNMP Versions Supported:    1 2c 3
>	  Building for:               linux
>	  Net-SNMP Version:           5.7.3
>	  Network transport support:  Callback Unix Alias TCP UDP IPv4Base SocketBase TCPBase UDPIPv4Base UDPBase
>	  SNMPv3 Security Modules:     usm
>	  Agent MIB code:            default_modules =>  snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host
>	  MYSQL Trap Logging:         unavailable
>	  Embedded Perl support:      disabled
>	  SNMP Perl modules:          building -- not embeddable
>	  SNMP Python modules:        building for /usr/bin/python
>	  Crypto support from:        crypto							# <--  GOOD, supports auth and priv. 
>	  Authentication support:     MD5 SHA1
>	  Encryption support:         DES AES
>	  Local DNSSEC validation:    disabled

注意3
安装后,需要重启机器。

验证 snmpd,是否支持 认证和加密

snmpd v3 需要支持 认证和加密。所以需要确认一下。

  • 正确安装的 snmpd,支持 认证和加密。有 libcrypto
ldd `which snmpd`
>	linux-vdso.so.1 =>  (0x00007ffff7ffd000)
>	libnetsnmpagent.so.30 => /usr/lib64/libnetsnmpagent.so.30 (0x00007ffff7d9a000)
>	libnetsnmpmibs.so.30 => /usr/lib64/libnetsnmpmibs.so.30 (0x00007ffff7930000)
>	libnetsnmp.so.30 => /usr/lib64/libnetsnmp.so.30 (0x00007ffff7654000)
>	libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007ffff7450000)
>	libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007ffff7062000)		# <-- GOOD, with libcrypto.
>	libm.so.6 => /usr/lib64/libm.so.6 (0x00007ffff6d5a000)
>	libc.so.6 => /usr/lib64/libc.so.6 (0x00007ffff699d000)
>	/lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
>	libz.so.1 => /usr/local/lib/libz.so.1 (0x00007ffff6780000)
  • 不正确安装的 snmpd,不支持 认证和加密。会缺少 libcrypto

snmp 配置文件

文件路径:

/etc/snmp/snmpd.conf

文件内容:

com2sec tester 172.16.105.0/24 public
group user_group v2c tester
view user_view included .1
access  user_group  ""  any noauth exact user_view user_view none

注意:
172.16.105.0 是 snmp服务器,所在的网段。
tester 是 用户名称。
public 是 group。
以上的字段请按照实际需要修改。

手动启动 snmpd 服务

手动启动 snmpd 服务。

/usr/sbin/snmpd -LS0-6d -f

注意:
-f 是 un-fork 进程。表示不会将 snmpd 作为守护进程。


本地测试

0. 添加用户

可以使用 net-snmp-config 来整体用户。
这样可以防止 snmpwalk 出现 unsupport security level 错误。

service snmpd stop 
net-snmp-create-v3-user -a SHA -A 123456789 -x DES -X 123456789 bluedon
service snmpd restart

帮助:

net-snmp-create-v3-user --help
>	Usage:
>	  net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]
>							  [-a MD5|SHA] [-x DES|AES] [username]

1. 无认证无加密

  • 配置文件
cat /etc/snmp/snmpd.conf
>	createUser user_name 
>	rwuser user_name noauth 1.3.6.1.2.1.1
  • 对应的指令
snmpwalk -v 3 -u user_name -l noAuthNoPriv 127.0.0.1 .1.3.6.1.2.1.1

2. 有认证无加密

  • 配置文件
cat /etc/snmp/snmpd.conf
>	createUser user_name SHA 123456789
>	rwuser user_name auth 1.3.6.1.2.1
  • 对应的指令
snmpwalk -v 3 -u user_name -l authNoPriv -a MD5 -A 123456789 127.0.0.1 .1.3.6.1.2.1
snmpwalk -v 3 -u user_name -l authNoPriv -a SHA -A 123456789 127.0.0.1 .1.3.6.1.2.1

3. 有认证有加密

  • 配置文件
cat /etc/snmp/snmpd.conf
>	createUser user_name SHA 123456789 DES 123456789
>	rwuser user_name priv 1.3.6.1.2.1
  • 对应的指令
snmpwalk -v 3 -u user_name -l authPriv -a MD5 -A 123456789 -x DES -X 123456789 127.0.0.1 .1.3.6.1.2.1
snmpwalk -v 3 -u user_name -l authPriv -a SHA -A 123456789 -x DES -X 123456789 127.0.0.1 .1.3.6.1.2.1

使用 MIB Browser 读取 snmp服务器 信息

在 windows 安装 MIB Browser

iReasoning MIB Browser Persional Edition 的下载地址如下:
http://www.ireasoning.com/download/mibfree/mibbrowser.zip

在 windows 启动 MIB Browser

  1. 以管理员身份运行:
    ireasoning\mibbrowser\bin\browser.bat

  2. 在 MIB Browser 设置

2.1. 文本框输入:

Address: [172.16.105.1]

注意:
172.16.105.1 是 snmp服务器 的管理口。
请按实际修改。

2.2. 点击 Advanced… 按钮。在页面 Advanced Properties of SNMP Agent 中:

2.2.1. 文本框输入:

Port: [161]

2.2.2. 列表框中选择:

SNMP Version: [2]

  1. 列表框中选择:

Operations: [Walk]

  1. 点击 MIB Tree
    随便点击一个 叶节点。

  2. 从 Result Table 中可以读取得结果。


制作 snmpd 的 systemd 服务

1. 添加 snmpd.service

文件路径:

/usr/lib/systemd/system/snmpd.service

文件内容:

[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon.
After=syslog.target network.target

[Service]
Type=notify
Environment=OPTIONS="-LS0-6d"
EnvironmentFile=-/etc/sysconfig/snmpd
ExecStart=/usr/sbin/snmpd $OPTIONS -f
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

2. 登记 service 文件。

systemctl daemon-reload

3. 启动 snmpd 的 systemd 服务

service snmpd restart

注意:
如果 出现以下问题:

localhost.localdomain snmpd[17114]: NET-SNMP version 5.7.3
localhost.localdomain systemd[1]: snmpd.service start operation timed out. Terminating.
localhost.localdomain snmpd[17114]: Received TERM or STOP signal… shutting down…
localhost.localdomain systemd[1]: Failed to start Simple Network Management Protocol (SNMP)
localhost.localdomain systemd[1]: Unit snmpd.service entered failed state.
localhost.localdomain systemd[1]: snmpd.service failed.

则修改 snmpd.service 文件。注释掉 Type=notify

文件路径:

/usr/lib/systemd/system/snmpd.service

文件内容差分:

-	Type=notify

+	#Type=notify

原因:
Type=notify 支持将"启动成功"的消息及时通知给 systemd 。
但是守护进程必须支持 systemd 通知协议,否则 systemd 将会认为该服务一直处于"启动中"(activating)状态,并在超时后将其杀死。
注释后,服务默认使用 Type=simple,可以避免 systemd 等待 snmpd 的消息返回。


ref:

# snmpd.conf 的帮助
man 5 snmpd.conf
# snmp 系统配置
net-snmp-config --help
# snmpwalk 的帮助
snmpwalk -h

systemd.service 中文手册

猜你喜欢

转载自blog.csdn.net/yk_wing4/article/details/89479298