SNMPを使用してスイッチからARPおよびMACアドレステーブルを取得する


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テーブルをサーバーに送信したいです。

私の問題は、どこでコマンドを実行するか、または出力をファイルに保存する場所が正確にわからないことです。


こんにちは、データベースへの情報の追加はトピック外です。スーパーユーザーは、データベースの変更についてサポートが必要かどうかを尋ねるのに適した場所です。質問のその部分を削除しても構わない場合は、再開できます。
マイクペニントン

私は質問を修正しました
-sosytee

「ARPテーブルをサーバーに配置する」とはどういう意味ですか?
マイクペニントン

Arpテーブルはスイッチによって生成されますが、サーバーから表示する必要があります
-sosytee

それらをテキストファイルに入れる方法を教えたらどうでしょうか。
マイクペニントン

回答:


38

少し混乱しているようです。ARPテーブルについて尋ねているのに、OIDを使用しています.1.3.6.1.2.1.17.4.3.1.2。ただし、そのOIDは実際にはスイッチのMACアドレステーブル用です。

Ubuntuサーバーへのログイン方法を知っていて、NET-SNMPインストールされていると仮定しています...これを行うためのポインターが必要な場合はお知らせください(LinuxでMIBをロードするためのヒントについては、この質問を参照してください)。私の例のいくつかは、サーバーにMIBがロードされていることを前提としています... -m <mib-name>MIBがローカルにロードされていない場合は、コマンドのオプションを削除するだけです。

この回答の長さについて事前に謝罪します... SNMPによるポーリングがそれほど複雑ではなかったことを望みます...

MACアドレステーブルのポーリング:

スイッチのmac-addressテーブルが本当に必要な場合は、ポーリングするコミュニティストリングを変更する必要があることを覚えておいてください...の形式である<commity@vlan>必要があります...ポーリングする各VLANには異なるコミュニティが必要です。

以下の私の例では、172.16.1.210のスイッチはで構成されておりsnmp-server community public roBRIDGE-MIBからのdot1dTpFdbPortでvlan-10のmac-addressテーブルをポーリングしています。

[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である、vtpVlanStateCISCO-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であることに留意してくださいシスコれる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 ~]$

コマンド出力をファイルに保存する

このサイトの通常の範囲外の領域を掘り下げていますが/tmp/S01_ARP.txt、上のARPテーブルをのファイルに保存するに> /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 ~]$

上記のように、catLinuxでテキストファイルからすべての出力を取得するために使用できます。注:一部のLinuxディストリビューション(ahem ... CentOS)は、/tmpディレクトリを毎月クリーンアップします。HOMELinuxのディレクトリを使用してファイルを保存する必要があります。Ubuntuが一掃されたことを覚えていません/tmpが、安全のためにそこに物を保管することは避けたいと思います。

SNMPに関するその他の注意事項...

Ubuntuマシンにすべてのシスコの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
ジョンジェンセン

@MikePennington:OID ipNetToMediaPhysAddressとifPhysAddressについてコメントできますか?具体的には、これらのテーブルとatPhysAddressのセマンティックの違いは?
モルメギル14年

上記に加えて、そのUbuntuサーバーにnetDBをインストールして、いくつかのデバイスのARPテーブルをよりよく見ることができます。netdbtracking.sourceforge.net
Kunal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.