การใช้ SNMP เพื่อดึงข้อมูลตาราง ARP และ mac-address จากสวิตช์


33

ฉันต้องการรับตาราง ARP จากสวิตช์ไปยังเซิร์ฟเวอร์ syslog-ng ที่ติดตั้งบน Ubuntu Server 12.04 LTS ฉันได้อ่านเกี่ยวกับ 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 ในสวิตช์

ฉันสมมติว่าคุณรู้วิธีลงชื่อเข้าใช้เซิร์ฟเวอร์ Ubuntu ของคุณและNET-SNMPติดตั้งแล้ว ... โปรดแจ้งให้เราทราบหากคุณต้องการตัวชี้สำหรับการทำสิ่งนี้ (ดูคำถามนี้สำหรับคำแนะนำเกี่ยวกับการโหลด MIB ใน Linux ) ตัวอย่างบางส่วนของฉันสมมติว่าคุณได้โหลด MIB บนเซิร์ฟเวอร์ของคุณ ... คุณเพียงแค่ต้องลบ-m <mib-name>ตัวเลือกในคำสั่งหากคุณไม่ได้โหลด MIB ภายในเครื่อง

ฉันขอโทษล่วงหน้าสำหรับความยาวของคำตอบนี้ ... ฉันหวังว่าการสำรวจด้วย SNMP นั้นไม่ซับซ้อน ...

การสำรวจตารางที่อยู่ mac:

หากคุณต้องการตารางที่อยู่ mac จากสวิตช์โปรดจำไว้ว่าคุณต้องเปลี่ยนสตริงชุมชนที่คุณสำรวจด้วย ... มันควรจะอยู่ในรูปแบบของ<commity@vlan>... แต่ละ vlan ที่คุณสำรวจต้องการชุมชนที่แตกต่างกัน

ในตัวอย่างด้านล่างของฉัน, สวิทช์ที่ 172.16.1.210 มีการกำหนดค่าด้วยsnmp-server community public roและฉันเลือกตั้งตารางแม็คที่อยู่ใน vlan-10 กับdot1dTpFdbPortจากสะพาน MIB

[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-MIBทำเช่นนั้นด้วยdot1dBasePortIfIndex ...

[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-address ทั้งหมดบนสวิตช์นี้เรียนรู้ผ่าน FastEthernet 0/48 ใน vlan-10

การสำรวจ Vlans ที่ใช้งานอยู่:

หากคุณไม่แน่ใจว่า vlans ใดที่ต้องการสำรวจความคิดเห็นเกี่ยวกับสวิตช์คุณสามารถรับข้อมูลจาก.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 ~]$

โปรดทราบว่า Vlans 1002-1005 เป็นCisco Vlans ภายในที่คุณไม่ควรสำรวจ

การสำรวจตาราง ARP

หากคุณต้องการตาราง ARP จากสวิตช์คุณจะต้องสำรวจที่PhysAddress ...

[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ไดเรกทอรีของคุณใน linux เพื่อจัดเก็บไฟล์ ฉันจำอูบุนตูไม่ได้เลย/tmpแต่เพื่อความปลอดภัยฉันจะหลีกเลี่ยงการเก็บของไว้ที่นั่น

หมายเหตุเกี่ยวกับ SNMP ...

หากคุณไม่ได้โหลด MIB ของ Cisco ทั้งหมดในเครื่อง Ubuntu ของคุณคุณควรหลีกเลี่ยงการใช้-m <mib-name>แฟล็กในsnmpbulkwalkคำสั่ง กำลังโหลด MIBs ให้คุณสำรวจความคิดเห็นด้วยชื่อ OID แทนจำนวนจุดที่มีความยาว ...


ข้อมูลอ้างอิง:

ฉันกำลังรวมคำสั่ง show จากสวิตช์ในกรณีที่คุณมีคำถามเกี่ยวกับ CLI สำหรับคำสั่ง SNMP ด้านบน ...

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#

คำตอบก็คือมีประโยชน์ผมอยากจะทราบความหมายของ -OXsq ก่อน IP ที่อยู่
sosytee

1
ตรวจสอบman snmpcmdว่าคุณอยู่บนโฮสต์ Linux และติดตั้ง Net-SNMP มิฉะนั้นคุณสามารถหาข้อมูลนี้ได้ที่นี่: net-snmp.sourceforge.net/docs/man/snmpcmd.html
John Jensen

@ MikePennington: คุณสามารถแสดงความคิดเห็นใน OIDs ipNetToMediaPhysAddress และ ifPhysAddress ได้หรือไม่ ความแตกต่างทางความหมายระหว่างตารางเหล่านี้และ atPhysAddress โดยเฉพาะคืออะไร
mormegil

นอกเหนือจากข้างต้นคุณสามารถติดตั้ง netDB บนเซิร์ฟเวอร์ Ubuntu นั้นและรับการมองเห็นได้มากขึ้นในตาราง ARP ของอุปกรณ์ต่าง ๆ netdbtracking.sourceforge.net
Kunal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.