Menggunakan SNMP untuk mengambil tabel ARP dan alamat-mac dari switch

33

Saya ingin mendapatkan tabel ARP dari switch ke server syslog-ng yang telah diatur di Ubuntu Server 12.04 LTS. Saya telah membaca tentang SNMP dan saya tahu server akan bertindak sebagai manajer dan saklar sebagai agen. Saya memiliki detail tentang di mana MIB terkandung, dan saya harus menggunakan perintah

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

Saya ingin tabel arp yang dihasilkan diarahkan ke server saya.

Masalah saya adalah bahwa saya tidak tahu di mana tepatnya menjalankan perintah, atau menyimpan output ke file.

sosytee
sumber
Hai, menambahkan informasi ke basis data bukan topik ... Super User adalah tempat yang baik untuk bertanya apakah Anda perlu bantuan memodifikasi database. Jika Anda tidak keberatan menghapus bagian dari pertanyaan itu, kami dapat membukanya kembali.
Mike Pennington
Saya telah mengubah pertanyaan saya
sosytee
Apa yang Anda maksud dengan "menempatkan tabel ARP ke server"?
Mike Pennington
Tabel Arp akan dihasilkan oleh switch, tetapi saya ingin mereka dilihat dari server
sosytee
Bagaimana jika kami memberi tahu Anda cara memasukkannya ke dalam file teks ... apakah itu boleh?
Mike Pennington

Jawaban:

38

Tampaknya ada sedikit kebingungan ... Anda bertanya tentang tabel ARP, dan Anda menggunakan OID .1.3.6.1.2.1.17.4.3.1.2; Namun, OID itu sebenarnya adalah untuk tabel alamat-mac di sakelar.

Saya berasumsi Anda tahu cara masuk ke server Ubuntu Anda, dan itu NET-SNMPsudah diinstal ... tolong beri tahu saya jika Anda perlu petunjuk untuk melakukan ini (lihat pertanyaan ini untuk petunjuk tentang memuat MIB di linux ). Beberapa contoh saya menganggap Anda memiliki MIB dimuat di server Anda ... Anda hanya perlu menghapus -m <mib-name>opsi dalam perintah jika Anda tidak memiliki MIB dimuat secara lokal.

Saya minta maaf sebelumnya atas panjangnya jawaban ini ... Saya berharap polling dengan SNMP tidak serumit ...

Polling tabel alamat-mac:

Jika Anda benar-benar menginginkan tabel alamat-mac dari sakelar, maka ingatlah Anda harus mengubah string komunitas yang Anda polling dengan ... itu harus dalam bentuk <commity@vlan>... setiap vlan yang Anda polling memerlukan komunitas yang berbeda.

Dalam contoh saya di bawah ini, saklar di 172.16.1.210 dikonfigurasi dengan snmp-server community public ro, dan saya polling tabel mac-address di vlan-10 dengan dot1dTpFdbPort dari BRIDGE-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 ~]$

Dalam output di atas, 52 adalah nilai dot1dBasePort, yang merupakan angka yang digunakan MIB untuk mengindeks tabel dot1dTp. Untuk menerjemahkannya menjadi nama antarmuka normal, Anda harus memetakannya ke ifName ... BRIDGE-MIB melakukannya dengan 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 ~]$

Jadi kita tahu bahwa semua mac-address pada switch ini dipelajari melalui FastEthernet 0/48 di vlan-10.

Polling the Vlans aktif:

Jika Anda tidak yakin vlan.1.3.6.1.4.1.9.9.46.1.3.1.1.2 mana yang akan disurvei pada sakelar, Anda dapat memperoleh informasi itu , yang merupakan vtpVlanState di 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 ~]$

Perlu diingat bahwa Vlans 1002-1005 adalah internal Cisco Vlans yang tidak boleh Anda polling.

Polling tabel ARP

Jika Anda benar-benar menginginkan tabel ARP dari sakelar, maka Anda perlu polling diPhysAddress ...

[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 ~]$

Menyimpan output perintah ke file

Kami sedang menggali area yang berada di luar cakupan normal situs ini, tetapi untuk menyimpan tabel ARP di atas ke file /tmp/S01_ARP.txt, Anda akan menambahkan > /tmp/S01_ARP.txtke akhir di snmpbulkwalkatas ...

[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 ~]$

Seperti yang Anda lihat di atas, Anda dapat menggunakan catdi linux untuk mendapatkan semua output dari file teks. CATATAN: Beberapa distribusi linux (ahem ... CentOS) membersihkan /tmpdirektori setiap bulan. Anda harus menggunakan HOMEdirektori Anda di linux untuk menyimpan file. Saya tidak ingat pembersihan Ubuntu /tmp, tetapi untuk amannya saya akan menghindari menyimpan barang-barang di sana.

Catatan lain-lain tentang SNMP ...

Jika Anda belum memuat semua MIB Cisco pada mesin Ubuntu Anda, maka Anda harus menghindari menggunakan -m <mib-name>flag pada snmpbulkwalkperintah. Memuat MIB memungkinkan Anda untuk melakukan polling dengan nama OID, alih-alih nomor yang bertitik panjang ...


Informasi referensi:

Saya menyertakan beberapa perintah pertunjukan dari sakelar, jika Anda memiliki pertanyaan tentang CLI untuk perintah SNMP di atas ...

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#
Mike Pennington
sumber
jawabannya bermanfaat, saya ingin tahu arti -OXsq sebelum ip address
sosytee
1
periksa man snmpcmdapakah Anda menggunakan host Linux dan menginstal Net-SNMP. Kalau tidak, Anda dapat menemukan informasi ini di sini: net-snmp.sourceforge.net/docs/man/snmpcmd.html
John Jensen
@MikePennington: Bisakah Anda mengomentari OID ipNetToMediaPhysAddress dan ifPhysAddress? Secara khusus perbedaan semantik antara tabel ini dan atPhysAddress?
mormegil
Selain hal di atas, Anda dapat menginstal netDB pada server Ubuntu itu dan mendapatkan lebih banyak visibilitas pada tabel ARP dari beberapa perangkat. netdbtracking.sourceforge.net
Kunal