일하면서 필요해서 공부했던 내용입니다.

이리저리 검색하면서 한거라서 정확하지 않을 수 있습니다.

환경은 Hyper-V에 올린 FreeBSD 9.1 릴리즈 버전에서 했습니다.

----------------------------------------------------------------------------

Fedora 였다면 그냥 yum을 이용해서 snmp 패키지르 설치하면 되지만 FreeBSD는 내가 모르는 건지 따로 yum 같은 기능이 없어보여서 찾아봤다

주로 ports를 이용해서 패키지를 설치한다고 하는데 사용해보니 아마 해당 패키지 정보를 가지고 있고 설치를 진행하면 인터넷에서 다운 받아 설치하는 듯 했다.

Hyper-V에 올리고 외부 네트워크 안잡아주고 했다가 경로를 찾을 수 없다고 하길래 네트워크 잡아주니 바로 다운 받더라..

 

우선 root로 /usr/ports/net-mgmt/net-snmp/ 이 경로로 이동하고

make install clean을 친다.

make 명령어를 치고 나면 아래와 같은 화면이 뜨는데 원하는 기능을 선택하고 OK를 선택해준다.(저게 다 정확히 뭐하는지는 모르겠다..)

 

 

OK를 선택하면 마치 yum 처럼 혼자 열심히 다운 받고 설치하기 시작한다.

 

 

그러다 도중에 perl 설치 관련해서 화면이 또 뜨는데 이것도 입맛에 따라 선택하고 OK를 눌러준다.

뭐가 뭔지 모르면 나처럼 그냥 바로 엔터쳐도 된다.

 

 

그러면 또 열심히 perl을 설치하기 시작한다.

 

 

perl까지 설치가 완료가 되면 아래 사진과 같이 깔끔하게 종료가 될 것이다. 깔끔하지 않았다면 뭔가 문제가 있는게 아닐까 싶다.

 

이렇게 하면 FreeBSD에 net-snmp 패키지 설치가 완료 된다.

이후 아주 간단하게 설정을 한번 해보겠다.(나는 RRDTool인 Cacti에 붙게 하기 위해서만 설정해서 다른 기능은 잘 모른다..)

 

일단 snmp 관련해서 설정하는 법은 크게 두 가지가 있는걸로 알고있다.

하나는 직접 snmpd.conf 파일을 수정하는 것

다른 하나는 snmpconf를 이용해 수정하는 것

(snmpconf도 두 가지 방법이 있는데 하나는 -i 옵션으로 원하는 값만 골라서 수정하는 거고 하나는 snmpconf -g basic_setup을 입력하면

설정값 하나하나 step by step으로 모두 직접 설정하는 방법이있다.)

최초 설치 때는 snmpconf가 있는 줄 몰라서 직접 snmpd.conf를 수정했었는데 몇 번 해보면서 snmpconf로 설정하고 마무리로 직접 수정을 병행하고 있다.

물론 여기에는 병행하는 걸 쓸 것이다.(사실 snmpconf만으로 충분히 설정이 되는데 정확한 사용법을 몰라서 직접 수정도 같이 했다..)

 

우선 /usr/local/share/snmp/ 디렉토리에 가보면 snmpd.conf 파일은 없고 snmpd.conf.example이 존재할 것이다.

저 파일은 net-snmp 자체에서 설정값을 예시로 해놓은건데 몇 개 설정값 빼고는 그냥 둬도 되니 cp로 snmpd.conf로 카피해준다.

 

 

복사를 해주고 난 뒤 상위 디렉토리나 다른 아무 디렉토리로 이동하고 snmpconf -i를 입력한다.

(다른 디렉토리로 가는 이유는 정확하진 않는데 snmpd.conf가 있는 디렉토리에서 snmpconf를 실행하면 밑에 사진 처럼 상대 경로와 절대경로로 파일을

스캔해서 같은 snmpd.conf인데 파일이 2개 존재하는 걸로 인식해서 저장이 제대로 되지 않더라..)

(같은 파일을 다른 두 개 파일로 인식하는 문제의 경우)

 

그리고 snmpd.conf.example 파일을 미리 snmpd.conf로 복사 해놨기 때문에 아래 같이 뜰 것이다.

원래는 복사를 안해놔도 되지만 그렇게 되면 모든 설정값을 일일이 해줘야하기 때문에 미리 복사를 해놓았다.

저렇게 파일을 하나만 인식하면 저장이 잘 되니까 놀라지 말고 엔터를 쳐주자

 

엔터를 치면 아래와 같이 화면이 뜨는데 설정할 파일 종류를 선택하는 화면이다.

우리가 설정할 파일은 snmpd.conf 니까 당연히 1번을 누르고 엔터를 친다.

(아래 스샷은 snmpd.conf를 복사하기 전에 찍어서 위 사진 같은 말이 없는 것)

 

 

1번을 고르면 또 다시 선택지가 나오는데 이제서야 진짜 설정을 하기 시작한다.

궁금하면 하나씩 다 들어가서 설정해도 되지만.. 무턱대고 아무거나 설정해버리면 나중에 snmpd가 안올라가는 상황이 발생할 수도 있다.

이 선택지들 중에서 내가 하려는 Cacti를 위해 필요한 번호는 2, 3, 6번이다.

우선 2를 누르고 엔터를 치자

 

 

Access Control Setup을 선택하면 아래 처럼 또 다시  선택지가 나오는데

쉬운 영단어로 되있어서 금방 파악할 것이다.

1번은 SNMPv3 에서 읽고쓰기 권한을 갖는 유저 설정

2번은 SNMPv3 에서 읽기 권한만 갖는 유저 설정

3번은 SNMPv1/v2 에서 읽기 권한만 갖는 커뮤니티 이름 설정

4번은 SNMPv1/v2 에서 읽고쓰기 권한을 갖는 커뮤니티 이름 설정

여기서 cacti에 손 쉽게 붙이려면 3번을 선택해서 커뮤니티 이름을 설정해준다.

 

 

3번을 선택하면 먼저

The community name to add read-only access for:

라고 질의를 던진다. 그러면 원하는 커뮤니티 이름을 적고 엔터. cacti에서 기본 커뮤니티 이름은 public기 때문에 나는 public을 입력했다.

다음으로 The hostname or network address to accept this community name from [RETURN for all] 라고 바로 나온다.

그러면 cacti나 다른 RRDTool을 사용하고 있는, 즉 이 컴퓨터를 모니터링할 컴퓨터의 hostname이나 IP주소를 입력해준다.

나는 cacti가 설치되있는 컴퓨터의 IP를 입력해줬다.

그리고 나면 마지막 줄에 OID를 입력하라고 뜨는데 이건.. 정확히 뭔지 모르겠다..

OID라는 건 어느 정도 알겠는데 정확히 뭘 설정하는건지는 모르겠다..

(아시는분은 가르침을 부탁드립니다 ㅠ)

 

 

이렇게 Access Control Setup 란에서 설정하는 건 끝났다.

그럼 이제 finished를 입력하고 다시 초기 선택지 화면으로 돌아가준다.

돌아왔으면 이제 3을 누르고 엔터를 쳐주자

 

 

이번엔 Trap Destinations 관련 설정을 하는건데 Trap에 대한 정확한 개념을 몰라서 여기다 적기엔 부족하다..

아마 특정 이벤트에 대해 뭔가 작동하는 걸텐데.. 궁금하신 분은 따로 검색해보시는 걸 추천..!

어쩄든 여기 선택지에서 설정해줄 것은 2번인 A SNMPv2c trap receiver 이다.

2를 누르고 엔터를 치자

 

 

그럼 아까 커뮤니티 이름 설정하는 것 처럼 한 줄씩 질의를 던진다

맨 처음 Trap정보를 받을 host의 이름을 입력하고 뜨는데 이 것 역시 cacti가 설치된 host의 IP를 써주면 된다.

그리고 엔터를 치면 커뮤니티 이름을 쓰라고 나오는데 아까 위에서 설정했던 이름을 입력해주면 되고

마지막에는 사용할 포트를 입력하라고 나오는데 아무 것도 입력안하고 엔터를 치면

SNMP 기본값인 161포트가 설정이 된다.

 

 

다 입력했으면 다시 finished를 입력하고 초기 선택지 화면으로 돌아간다.

이제 마지막 6번 관련 설정을 하면 된다. 6을 누르고 엔터 ~

 

6번인 Agent Operationg Mode 에 진입하면 아래와 같이 뜨는데 1, 2, 3번에 대한 기능은 정확히 모르겠다..

설정을 한 번 해봤는데 딱히 다른 점을 모르겠더라..(저장이 안됬었나)

무튼 여기서 4번을 선택해준다.

 

 

4번을 선택하면 역시나 바로 질의를 던지는데 snmpd.conf에서 agentaddress 설정을 하는 곳이다.

통신 할 때 사용할 프로토콜이랑 포트 관련 설정을 하는 것이다.

사진에 udp:161이라고 입력했는데 이는 통신할 때 UDP를 사용하고 모든 네트워크에 대해 포트는 161을 사용하겠다는 의미다.

나는 모든 네트워크 말고 특정 네트워크만 설정해주고 싶어서 IP를 입력해봤지만 snmp 데몬이 실행이 안됬었다..

arguments를 보면 [transport:]port[@interface/address]라고 되어있는데

이 형식으로 입력하면 snmp 데몬이 실행이 안된다..혹여 잘 못입력한 건가 하고 검색을 해봤지만

저 형식으로 입력하는 사람을 보질 못했다..(내가 틀리게 한 걸 수도)

agentaddress 입력값에 대해 자세한 내용은

man 8 snmpd 를 참고하길 바란다.(거기 나온대로 해도 안되더라 ..)

 

 

이제 finished를 입력하고 마지막에 quit를 입력해주면 저장이 됬다고 출력될 것이다.

이렇게 하면 snmpconf로 필요한 설정을 다 해줬다..

더 해줘야 할게 있을 수도 있을테지만 적어도 Cacti 사용에는 문제가 없었다.

아 한 가지 빼먹은게 마지막에 agentaddress를 설정을 하고 나서 snmpd.conf를 수정해줘야한다.

snmpd.conf.example에 agentaddress가 최초에 udp:127.0.0.1:161로 정의되어있는데

이 라인을 지우거나 주석처리 해줘야 충돌없이 실행된다.

아마 snmpconf에서 지울 수 있지 않을까 싶은데 못 찾겠더라..

 

 

이렇게 수정하고 저장하면 일단 대략적인 설정 끝!

좀 더 세세하게 설정하고 싶은 분들은 구글링을 추천한다..

국내 블로그에 그렇게 많은 내용이 포팅되어 있지는 않아서..

이제 snmp를 실행해야하는데 그 전에 마지막으로 한 가지 더 해줘야할 것이 있다.

vi나 기타 에디터로 /etc/rc.conf를 열어 snmpd_enable="YES" 를 입력하고 저장해준다.

이걸 해주지 않으면 실행은 시킬 수 있으나 .. 해주는게 실행할 때 오류도 없고 나중에 편하다..

이제 /usr/local/etc/rc.d/snmpd start를 입력해주면 snmpd가 시작한다.

아마 net-snmp를 설치하자 마자 snmpd가 시작되어있을 수도 있다.

start나 restart를 사용하자.

아래처럼 깔끔하게 시작이 됬다면 설정 한 값이 시작하는데 크게 문제되는 것은 없는 것이다.

 

 

정상적으로 시작 되었으니 제대로 돌고 있는지 확인해보자

sockstat -4 -l | grep 161 를 입력해준다.(왜냐고 물어보지 않길)

netstat를 사용해도 된다.

 

 

다 됬으니까 이제 SNMP를 설치한 진짜 목적인 Cacti에서 접근이 되는지 확인해보자

간단하게 사진 두장으로 보겠다.

바로 아래 사진을 보면 hostname에 방금 SNMP를 설치한 host IP주소가 입력되있고

그 밑으로 SNMP Version 2가 선택되어있고 커뮤니티 이름으로 public, 사용 포트로 161이 입력되있다.

 

 

저렇게 제대로 값을 입력하고 Create를 눌렀을 때 아래와 같이 뜨면 성공한것이다.

 

 

------------------------------------------------------------------------------------------------------------

사진이 많으니 참 기내요..

별 내용도 없고 정확하지도 않은 내용들이니 혹 이 글 보신 분들은 참고용으로만 사용하시길 ~

제가 작업하면서 주로 본 사이트는 없구요..

단지 꽤 오랜 시간 구글에 기대있었내요

틀린 내용이 있다면 바로바로 알려주세요 ~

 

' 2016년 이전 > Network' 카테고리의 다른 글

FreeBSD Net-SNMP Source 설치  (2) 2014.07.21
Ubuntu에 SNMP 설치하기  (1) 2014.04.10
CentOS Setup으로 고정아이피 설정하기  (0) 2009.11.11
DHCP를 고정으로 바꾸는 법  (0) 2009.11.11

+ Recent posts