snmp history 리눅스에서 사용할 수 있는 SNMP는 cmu-snmp(Carnegie Mellon University)가 있다. 이 놈은 다시 ucd-snmp(UCDavis - Univerisity of California at Davis )로 변경(?)되었다. 200/10/18에 ucd-snmp를 net-snmp라는 프로젝트명으로 변경하면서 sourceforge로 이전했다. 현재 sourceforge에 net-snmp라는 project로 들어가 있다. 하지만 소스파일의 이름은 여전히 ucd-snmp로 되어 있다. 현재 ucd-snmp버전이 4.2.x대인데 5.0이후로는 net-snmp라는 명칭으로 배포할 모양이다. 즉, 정리하면 net-snmp는 cmu-snmp와 ucd-snmp에 기반했다. http://net-snmp.sourceforge.net and http://sourceforge.net/projects/net-snmp snmp 설치 [root@ns ucd-snmp-4.2.1]# ./configure [root@ns ucd-snmp-4.2.1]# make [root@ns ucd-snmp-4.2.1]# umask 022 [root@ns ucd-snmp-4.2.1]# make install [root@ns ucd-snmp-4.2.1]# cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf [root@ns ucd-snmp-4.2.1]# cd perl/SNMP/ [root@ns SNMP]# perl Makefile.PL [root@ns SNMP]# make [root@ns SNMP]# make test [root@ns SNMP]# make install SNMP AGENT(snmpd)를 위한 환경설정 보통 위에서처럼 EXAMPLE.conf를 복사해 와서 수정하는 방법을 많이(?) 사용한다. 그리고 나서 아래의 예와 같이 수정한다. ip/netmask는 자신의 환경에 맞게 설정한다. 보통 아래에 나온 부분만 수정하면 된다. # sec.name source community #com2sec local localhost COMMUNITY #com2sec mynetwork NETWORK/24 COMMUNITY com2sec local localhost private com2sec mynetwork 211.104.51.96/29 public syslocation "Seoul Korea" sysservices 76 syscontact "kang myung gyu, kang@dbakorea.pe.kr" 자신이 직접 설정파일을 생성하고 싶다면 snmpconf라는 것을 사용하면 된다. snmpconf로 perl로 된 스크립트인데 메뉴방식으로 snmpd.conf, snmp.conf, snmptrapd.conf파일을 생성할 수 있게 해준다. 설정파일을 검색하는 곳 /usr/local/share/snmp /usr/local/lib/snmp $HOME/.snmp 환경변수 SNMPCONFPATH [root@ns SNMP]# cd /usr/local/share/snmp/ [root@ns snmp]# snmpconf 설정파일 생성 [root@ns snmp]# chmod 600 snmpd.conf 설정을 끝냈다면 snmpd를 쉘상에서 실행한다. [root@ns snmp]# snmpd 테스트 snmptest로 접속해보면 다음과 같다. [root@ns ucd-snmp-4.2.1]# snmptest localhost public Variable: sysLocation.0 Variable: sysServices.0 Variable: sysContact.0 Variable: 엔터 Received Get Response from 127.0.0.1 requestid 0x78794697 errstat 0x0 errindex 0x0 system.sysLocation.0 = "Seoul Korea" system.sysServices.0 = 76 system.sysContact.0 = "kang myung gyu, kang@dbakorea.pe.kr" 보통 라우터의 경우 자체OS에 snmp agent가 심어져 있지만, 일반 호스트서버의 경우, 위와 같이(snmpd) agnet를 실행해줘야 한다. 사용된 변수(udpInDatagrams)의 이름은 대소문자를 구분함 테이블이 아닌 일반변수의 경우, 마지막에 .0을 붙여서 질의한다. snmp application의 사용예 snmpget [kang@ns kang]$ snmpget localhost public udpInDatagrams.0 snmpwalk [kang@ns kang]$ snmpwalk localhost public udpInDatagrams.0 [kang@ns kang]# snmpwalk localhost public interface [kang@ns mrtg]$ snmpwalk -Of localhost private memory (full oid output) [kang@ns mrtg]$ snmpwalk -On localhost private memory (oid를 숫자형식으로 출력) snmpgetnext [kang@ns kang]$ snmpget localhost public udpInDatagrams.0 udp.udpInDatagrams.0 = Counter32: 3404 [kang@ns kang]$ snmpgetnext localhost public udpInDatagrams.0 udp.udpNoPorts.0 = Counter32: 285 [kang@ns kang]$ snmpgetnext localhost public udpNoPorts.0 udp.udpInErrors.0 = Counter32: 0 [kang@ns kang]$ snmpgetnext localhost public udpInErrors.0 udp.udpOutDatagrams.0 = Counter32: 3594 snmptest [root@ns ucd-snmp-4.2.1]# snmptest localhost public Variable: sysDescr.0 Variable: sysObjectID.0 Variable: sysUpTime.0 Variable: sysContact.0 Variable: sysName.0 Variable: sysLocation.0 Variable: sysServices.0 Variable: Received Get Response from 127.0.0.1 requestid 0x449D7035 errstat 0x0 errindex 0x0 system.sysDescr.0 = Linux ns.dbakorea.pe.kr 2.4.4 #2 Wed May 2 11:52:31 KST 2001 i586 system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.linux system.sysUpTime.0 = Timeticks: (23439) 0:03:54.39 system.sysContact.0 = "kang myung gyu, kang@dbakorea.pe.kr" system.sysName.0 = ns.dbakorea.pe.kr system.sysLocation.0 = "Seoul Korea" system.sysServices.0 = 76 Variable: snmptranslate [kang@ns mrtg]$ snmptranslate .1.3.6.1.4.enterprises.ucdavis.dskTable.dskEntry.dskPercent.1 .1.3.6.1.4.1.2021.9.1.9.1 SNMP MIB관계 UCD-SNMP AGENT ucd-snmp AGENT는 대부분의 정보를 mib tree중 .1.3.6.1.4.1.2021섹션에 질의하여 REPORT한다. .iso.org.dod.internet.private.enterprises.ucdavis (.1.3.6.1.4.1.2021) 161은 snmp, 162번 포트는 snmp-trap이 사용하는 포트이다. company.com에 snmp agent가 동작중인가는 다음과 같이 파악할 수 있다. nmap -sU -p 161,162 company.com MRTG 리소스모니터링 예제 /usr/local/src/mrtg-2.9.10/contrib/ SNMP에 관한 링크 http://www.ieng.com/univercd/cc/td/doc/cisintwk/ito_doc/snmp.htm http://net-snmp.sourceforge.net/tutorial/mrtg/index.html MIB 목록 /usr/local/share/snmp/mibs/UCD-SNMP-MIB.txt 참고 매뉴얼 페이지 snmpd.conf, snmp.conf, snmptrapd.conf, snmp_config |
work/snmp