이 문서에서는 SNMP(Simple Network Management Protocol)를 사용하여 MAC 주소를 알고 있는 Cisco Catalyst 스위치의 포트 번호를 가져오는 방법에 대해 설명합니다.
이 문서의 독자는 다음 주제에 대해 알고 있어야 합니다.
SNMP를 사용하여 Catalyst 스위치에서 VLAN을 가져오는 방법
SNMP를 사용하여 커뮤니티 문자열 인덱싱을 사용하는 방법
SNMP get 명령 및 walk 명령의 일반적인 사용
이 문서는 일반 Catalyst OS(CatOS) 또는 Cisco IOS® 소프트웨어를 실행하는 Catalyst 스위치에 적용됩니다.소프트웨어는 BRIDGE-MIB 및 IF-MIB를 지원합니다.
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
Cisco IOS Software 릴리스 12.0(5)WC5a를 실행하는 Catalyst 3524XL
Net-SNMP 버전 5.0.6
참고: 이 소프트웨어를 얻으려면 Net-SNMP를 참조하십시오 .
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다.이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다.현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
CAM(Content-Addressable Memory) 테이블, VLAN 및 CISCO-VTP-MIB 및 BRIDGE-MIB와 같은 모든 관련 MIB를 쿼리하는 방법에 대한 자세한 내용은 SNMP를 사용하는 Catalyst 스위치의 CAM 항목(CAM 테이블)을 가져오는 방법 문서의 배경 섹션을 참조하십시오.
.1.3.6.1.2.1.17.4.3.1.1 dot1dTpFdbAddress OBJECT-TYPE -- FROM BRIDGE-MIB -- TEXTUAL CONVENTION MacAddress SYNTAX OCTET STRING (6) MAX-ACCESS read-only STATUS Mandatory DESCRIPTION "A unicast MAC address for which the bridge has forwarding and/or filtering information." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) dot1dBridge(17) dot1dTp(4) dot1dTpFdbTable(3) dot1dTpFdbEntry(1) 1 } .1.3.6.1.2.1.17.4.3.1.2 dot1dTpFdbPort OBJECT-TYPE -- FROM BRIDGE-MIB SYNTAX Integer MAX-ACCESS read-only STATUS Mandatory DESCRIPTION "Either the value "0", or the port number of the port on which a frame having a source address equal to the value of the corresponding instance of dot1dTpFdbAddress has been seen. A value of "0" indicates that the port number has not been learned, but that the bridge does have some forwarding/filtering information about this address (that is, in the StaticTable). Implementors are encouraged to assign the port value to this object whenever it is learned, even for addresses for which the corresponding value of dot1dTpFdbStatus is not learned(3)." ::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) dot1dBridge(17) dot1dTp(4) dot1dTpFdbTable(3) dot1dTpFdbEntry(1) 2 } .1.3.6.1.2.1.2.2.1.1 ifIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS read-only STATUS current DESCRIPTION "A unique value, greater than zero, for each interface. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re- initialization." ::= { ifEntry 1 } .1.3.6.1.2.1.17.1.4.1.2 dot1dBasePortIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The value of the instance of the ifIndex object, defined in MIB-II, for the interface corresponding to this port." ::= { dot1dBasePortEntry 2 } .1.3.6.1.2.1.31.1.1.1.1 ifName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The textual name of the interface. The value of this object should be the name of the interface as assigned by the local device and should be suitable for use in commands entered at the device's `console'. This might be a text name, such as `le0' or a simple port number, such as `1', depending on the interface naming syntax of the device. If several entries in the ifTable together represent a single interface as named by the device, then each will have the same value of ifName. Note that for an agent which responds to SNMP queries concerning an interface on some other (proxied) device, then the value of ifName for such an interface is the proxied device's local name for it. If there is no local name, or this object is otherwise not applicable, then this object contains a zero-length string." ::= { ifXEntry 1 }
SNMP를 사용하여 MAC 주소가 학습된 포트 번호를 가져오려면 이 섹션의 단계를 완료합니다.포트 번호가 VLAN1에 있음을 고려하십시오.
참고: 이 섹션의 명령에서 다음을 수행합니다.
public은 읽기 커뮤니티 문자열입니다.
@1은 읽기 커뮤니티 문자열의 VLAN 1 부분입니다.
crumpy는 디바이스 호스트 이름입니다.
참고: 이 호스트 이름에 IP 주소를 사용할 수도 있습니다.
참고: 결론 섹션은 명령 출력에서 기울임꼴로 나타나는 값을 사용합니다.
VLAN을 검색합니다.vtpVlanState 객체(.1.3.6.1.4.1.9.9.46.1.3.1.1.2 )에서 snmpwalk 명령을 사용합니다.
%snmpwalk -c public crumpy .1.3.6.1.4.1.9.9.46.1.3.1.1.2 CISCO-VTP-MIB::vtpVlanState.1.1 = INTEGER: operational(1) CISCO-VTP-MIB::vtpVlanState.1.3 = INTEGER: operational(1) CISCO-VTP-MIB::vtpVlanState.1.7 = INTEGER: operational(1) CISCO-VTP-MIB::vtpVlanState.1.10 = INTEGER: operational(1) ...
참고: 이 명령은 커뮤니티 문자열 인덱싱을 사용합니다.또한 이 명령에서는 OID.1.3.6.1.4.1.9.9.46.1.3.1.1.2를 포함하는 vtpVlanState를 사용합니다. MIB를 NMS(네트워크 관리 시스템)에 로드한 경우 OID 대신 개체 이름을 사용할 수 있습니다.대신 이 명령을 실행합니다.
%snmpwalk -c public@1 crumpy vtpVlanState
참고: 2~6단계에서 객체 이름을 사용할 수도 있습니다.
포트가 VLAN1에 속한다는 점을 고려하여 MAC 주소 테이블을 가져오려면 다음 명령을 실행합니다.
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.4.3.1.1 17.4.3.1.1.0.0.12.7.172.8 = Hex: 00 00 0C 07 AC 08 17.4.3.1.1.0.1.2.27.80.145 = Hex: 00 01 02 1B 50 91 17.4.3.1.1.0.1.3.72.77.90 = Hex: 00 01 03 48 4D 5A 17.4.3.1.1.0.1.3.72.221.191 = Hex: 00 01 03 48 DD BF ...
참고: 커뮤니티 문자열 뒤에 적절한 VLAN 번호를 입력합니다.이 예에서는 VLAN1입니다.
이 명령은 VLAN 1에 속하는 모든 포트에서 학습된 모든 MAC 주소를 나열합니다.
VLAN 1의 브리지 포트 번호를 확인하려면 다음 명령을 실행합니다.
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.4.3.1.2 17.4.3.1.2.0.0.12.7.172.8 = 13 17.4.3.1.2.0.1.2.27.80.128 = 13 17.4.3.1.2.0.1.2.27.80.145 = 13 17.4.3.1.2.0.1.2.163.145.225 = 13 ...
참고: VLAN 1은 dot1dTpFdbPort 또는 .1.3.6.1.2.17.4.3.1.2입니다.
브리지 포트를 ifIndex, OID.1.3.6.1.2.1.2.2.1.1에 매핑하려면 다음 명령을 실행합니다.
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.17.1.4.1.2 17.1.4.1.2.13 = 2 17.1.4.1.2.14 = 3 17.1.4.1.2.15 = 4 17.1.4.1.2.16 = 5
이 명령은 dot1dBasePortIfIndex를 쿼리합니다. 이 인덱스는 OID.1.3.6.1.2.1.17.1.4.1.2입니다.
ifIndex 값을 올바른 포트 이름과 상호 연결하려면 ifName과 함께 walk 명령을 사용합니다.
다음 명령을 실행합니다.
참고: ifName에 OID.1.3.6.1.2.1.31.1.1.1이 있습니다.
snmpwalk -c public@1 crumpy .1.3.6.1.2.1.31.1.1.1.1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.1 = VL1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = Fa0/1 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.3 = Fa0/2 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.4 = Fa0/3 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.5 = Fa0/4 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.6 = Fa0/5 ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.7 = Fa0/6 ...
주소가 학습된 포트에 MAC 주소를 연결합니다.
1단계에서 MAC 주소는 다음과 같습니다.
17.4.3.1.1.0.0.12.7.172.8 = Hex: 00 00 0C 07 AC 08
2단계에서 브리지 포트는 MAC 주소가 브리지 포트 번호 13에 속함을 알려줍니다.
17.4.3.1.2.0.0.12.7.172.8 = 13
3단계에서 브리지 포트 번호 13에는 ifIndex 번호 2가 있습니다.
17.1.4.1.2.13 = 2
4단계에서 ifIndex 2는 Fast Ethernet 0/1 포트에 해당합니다.
ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName.2 = Fa0/1
MAC 주소 00 00 0C 07 AC 08은 포트 Fa0/1에서 학습됩니다.
이 결과와 다음 출력의 비교:
CatOS 스위치에 대한 show cam dynamic 명령
Cisco IOS 소프트웨어 스위치에 대한 show mac 명령
다음은 샘플 출력입니다.
crumpy# show mac Dynamic Address Count: 58 Secure Address Count: 2 Static Address (User-defined) Count: 0 System Self Address Count: 51 Total MAC addresses: 111 Maximum MAC addresses: 8192 Non-static Address Table: Destination Address Address Type VLAN Destination Port ------------------- ------------ ---- ------------------- 0000.0c07.ac08 Dynamic 1 FastEthernet0/1 0001.021b.5091 Dynamic 1 FastEthernet0/1 0001.0348.4d5a Dynamic 1 FastEthernet0/1 0001.0348.ddbf Dynamic 1 FastEthernet0/1 0001.972d.dfae Dynamic 1 FastEthernet0/1 0002.55c6.cfe7 Dynamic 1 FastEthernet0/1 0002.7d61.d400 Dynamic 1 FastEthernet0/1 …