SNMP를 사용하여 스위치에서 ARP 및 mac-address 테이블 검색


33

Ubuntu Server 12.04 LTS에 설정된 syslog-ng 서버로의 스위치에서 ARP 테이블을 가져오고 싶습니다. SNMP에 대해 읽었으며 서버가 관리자 역할을하고 스위치가 에이전트 역할을한다는 것을 알고 있습니다. MIB가 포함 된 위치에 대한 세부 사항이 있으며 명령을 사용해야합니다.

snmpwalk -v2c -c <community> <SwitchIP> .1.3.6.1.2.1.17.4.3.1.2

결과 arp 테이블을 내 서버로 보내려고합니다.

내 문제는 정확히 명령을 실행할 위치를 모르거나 출력을 파일에 저장하는 것입니다.


안녕하세요, 데이터베이스에 정보를 추가하는 것은 주제가 아닙니다 ... 수퍼 유저 는 데이터베이스 수정에 도움이 필요한지 물어 보는 좋은 장소입니다. 질문의 해당 부분을 삭제하는 것이 마음에 들지 않으면 다시 열 수 있습니다.
Mike Pennington

내 질문을 수정했습니다
sosytee

"ARP 테이블을 서버에 배치"란 무엇을 의미합니까?
Mike Pennington

가 ARP 테이블은 스위치에 의해 생성 된,하지만 난 그 서버에서 볼 원하는 것
sosytee

텍스트 파일에 넣는 방법을 말하면 어떻게 되나요?
Mike Pennington

답변:


38

약간의 혼동이있는 것 같습니다 ... ARP 테이블에 대해 묻고 있으며 OID를 사용하고 있습니다 .1.3.6.1.2.1.17.4.3.1.2. 그러나 해당 OID는 실제로 스위치의 mac-address 테이블 용입니다.

우분투 서버에 로그인하는 방법을 알고 있다고 가정하고 NET-SNMP설치되었습니다 ...이 작업을 수행하기위한 포인터가 필요한 경우 알려주십시오 ( Linux에서 MIB를로드하는 방법에 대한 힌트는이 질문을 참조하십시오 ). 내 예제 중 일부는 서버에 MIB가로드되어 있다고 가정합니다 -m <mib-name>. MIB가 로컬로로드되지 않은 경우 명령 에서 옵션 을 제거하면 됩니다.

이 답변의 길이에 대해 미리 사과드립니다 ... SNMP를 사용한 폴링이 복잡하지 않기를 바랍니다 ...

mac-address 테이블 폴링 :

스위치에서 mac-address 테이블을 정말로 원한다면, 폴링하는 커뮤니티 문자열을 변경해야한다는 것을 기억하십시오 ... 폴링하는 <commity@vlan>각 VLAN은 다른 커뮤니티가 필요합니다.

아래 예에서 172.16.1.210의 스위치는로 구성되어 snmp-server community public ro있으며 vlan-10의 mac-address 테이블 을 BRIDGE-MIB의 dot1dTpFdbPort 로 폴링합니다 .

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public@10 -OXsq 172.16.1.210 \
  .1.3.6.1.2.1.17.4.3.1.2
dot1dTpFdbPort[0:6:53:fe:39:e0] 52
dot1dTpFdbPort[0:1d:a1:cd:53:46] 52
dot1dTpFdbPort[0:30:1b:bc:a7:d7] 52
dot1dTpFdbPort[0:80:c8:0:0:0] 52
dot1dTpFdbPort[38:ea:a7:6d:2e:8e] 52
dot1dTpFdbPort[80:ee:73:2f:b:40] 52
[mpenning@tsunami ~]$

위의 출력에서 ​​52는의 값으로 dot1dBasePort, MIB가 dot1dTp 테이블을 색인화하는 데 사용하는 숫자입니다. 일반 인터페이스 이름으로 변환하려면 ifName에 매핑해야합니다 ... BRIDGE-MIBdot1dBasePortIfIndex ...

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public@10 -m BRIDGE-MIB 172.16.1.210 \
  .1.3.6.1.2.1.17.1.4.1.2
BRIDGE-MIB::dot1dBasePortIfIndex.52 = INTEGER: 10048
[mpenning@tsunami ~]$
[mpenning@tsunami ~]$ snmpget -v 2c -c public 172.16.1.210 ifName.10048
IF-MIB::ifName.10048 = STRING: Fa0/48
[mpenning@tsunami ~]$

따라서이 스위치의 모든 mac 주소는 vlan-10의 FastEthernet 0/48을 통해 학습되었습니다.

활성 Vlan 폴링 :

당신이 확실 스위치의 여론 조사에 VLAN을하는하지 않은 경우에서 해당 정보를 얻을 수 .1.3.6.1.4.1.9.9.46.1.3.1.1.2있다, vtpVlanState 에서 CISCO-VTP-MIB를 ...

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq -m CISCO-VTP-MIB 172.16.1.210 \
   .1.3.6.1.4.1.9.9.46.1.3.1.1.2
vtpVlanState[1][1] operational
vtpVlanState[1][10] operational
vtpVlanState[1][1002] operational
vtpVlanState[1][1003] operational
vtpVlanState[1][1004] operational
vtpVlanState[1][1005] operational
[mpenning@tsunami ~]$

Vlan 1002-1005는 폴링해서는 안되는 내부 Cisco Vlan 입니다.

ARP 테이블 폴링

스위치에서 ARP 테이블을 실제로 원할 경우 atPhysAddress ... 를 폴링해야합니다 .

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq  172.16.1.210 \
  .1.3.6.1.2.1.3.1.1.2
atPhysAddress[10][1.172.16.1.5] "80 EE 73 2F 0B 40 "
atPhysAddress[10][1.172.16.1.25] "38 EA A7 6D 2E 8E "
atPhysAddress[10][1.172.16.1.32] "BC 51 FE 50 16 F8 "
atPhysAddress[10][1.172.16.1.200] "00 06 53 FE 39 E0 "
atPhysAddress[10][1.172.16.1.210] "00 18 BA 51 5B 41 "
[mpenning@tsunami ~]$

명령 출력을 파일로 저장

우리는이 사이트의 정상적인 범위를 벗어나는 영역을 탐구하고 있지만 위의 ARP 테이블을의 파일에 저장하려면 위 의 끝에 /tmp/S01_ARP.txt추가 > /tmp/S01_ARP.txt해야합니다 snmpbulkwalk...

[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq  172.16.1.210 \
      .1.3.6.1.2.1.3.1.1.2 > /tmp/S01_ARP.txt
[mpenning@tsunami ~]$ cat /tmp/S01_ARP.txt
atPhysAddress[10][1.172.16.1.5] "80 EE 73 2F 0B 40 "
atPhysAddress[10][1.172.16.1.25] "38 EA A7 6D 2E 8E "
atPhysAddress[10][1.172.16.1.32] "BC 51 FE 50 16 F8 "
atPhysAddress[10][1.172.16.1.200] "00 06 53 FE 39 E0 "
atPhysAddress[10][1.172.16.1.210] "00 18 BA 51 5B 41 "
[mpenning@tsunami ~]$

위에서 볼 수 있듯이 cat리눅스에서 텍스트 파일에서 모든 출력을 얻을 수 있습니다. 참고 : 일부 Linux 배포판 (ahem ... CentOS) /tmp은 매월 디렉토리를 정리 합니다. HOME파일을 저장하려면 리눅스에서 디렉토리를 사용해야합니다 . 나는 Ubuntu가 청소하는 것을 기억하지 않지만 /tmp안전하기 위해 물건을 보관하지 않는 것이 좋습니다.

SNMP에 대한 기타 참고 사항 ...

Ubuntu 시스템에 모든 Cisco MIB를로드하지 않은 경우 명령 에서 -m <mib-name>플래그를 사용하지 않아야 snmpbulkwalk합니다. MIB를로드하면 긴 점이 아닌 OID 이름으로 폴링 할 수 있습니다.


참조 정보 :

위의 SNMP 명령에 대한 CLI에 대한 질문이있는 경우 스위치의 일부 show 명령을 포함하고 있습니다 ...

S01#sh ver | i IOS
Cisco IOS Software, C3560 Software (C3560-IPBASEK9-M), Version 12.2(37)SE, RELEASE SOFTWARE (fc2)
S01#
S01#sh mac address-table dynamic
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  10    0006.53fe.39e0    DYNAMIC     Fa0/48
  10    001d.a1cd.5346    DYNAMIC     Fa0/48
  10    0030.1bbc.a7d7    DYNAMIC     Fa0/48
  10    0080.c800.0000    DYNAMIC     Fa0/48
  10    38ea.a76d.2e8e    DYNAMIC     Fa0/48
  10    80ee.732f.0b40    DYNAMIC     Fa0/48
Total Mac Addresses for this criterion: 6
S01#
S01#sh arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  172.16.1.210            -   0018.ba51.5b41  ARPA   Vlan10
Internet  172.16.1.200            0   0006.53fe.39e0  ARPA   Vlan10
Internet  172.16.1.32             0   bc51.fe50.16f8  ARPA   Vlan10
Internet  172.16.1.25             0   38ea.a76d.2e8e  ARPA   Vlan10
Internet  172.16.1.5              1   80ee.732f.0b40  ARPA   Vlan10
S01#

대답은 유용했다, 나는 ip 주소 바로 앞에 -OXsq의 의미를 알고 싶다
sosytee

1
man snmpcmdLinux 호스트에 있고 Net-SNMP가 설치되어 있는지 확인하십시오 . 그렇지 않으면 여기에서이 정보를 찾을 수 있습니다. net-snmp.sourceforge.net/docs/man/snmpcmd.html
John Jensen

@ MikePennington : 당신은 OIDs ipNetToMediaPhysAddress 및 ifPhysAddress에 의견을 말할 수 있습니까? 특히 이러한 테이블과 atPhysAddress의 의미 차이는 무엇입니까?
mormegil

위의 것 외에도 해당 Ubuntu 서버에 netDB를 설치하고 여러 장치의 ARP 테이블에서 더 많은 가시성을 얻을 수 있습니다. netdbtracking.sourceforge.net
Kunal
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.