我想从交换机到已在 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 表定向到我的服务器。
我的问题是我不知道在哪里运行命令,或者将输出保存到文件中。
我想从交换机到已在 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 表定向到我的服务器。
我的问题是我不知道在哪里运行命令,或者将输出保存到文件中。
似乎有点混乱……您正在询问 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-address 表,那么记住你必须改变你轮询的社区字符串......它应该是<commity@vlan>
......你轮询的每个 vlan 需要不同的社区。
在下面的示例中,位于 172.16.1.210 的交换机配置为snmp-server community public ro
,我正在使用来自BRIDGE-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-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 地址都是通过 vlan-10 中的 FastEthernet 0/48 获知的。
如果你不知道哪个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 表,那么你需要轮询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 中使用从文本文件中获取所有输出。注意:一些 linux 发行版(嗯... CentOS)/tmp
每月清理一次目录。您应该使用您HOME
在 linux 中的目录来存储文件。我不记得 Ubuntu 清理过/tmp
,但为了安全起见,我会避免在那里存放东西。
如果你还没有在你的 Ubuntu 机器上加载所有 Cisco 的 MIB,那么你应该避免-m <mib-name>
在snmpbulkwalk
命令中使用这些标志。加载 MIB 允许您使用 OID 名称进行轮询,而不是长点的数字...
我包含了一些来自交换机的 show 命令,以防您对上述 SNMP 命令的 CLI 有疑问...
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#