步骤 、端口号和MAC地址互查
-
1、查看MAC地址表
show mac address-table
通过这条命令就可看到存储在当前交换机中的MAC地址表,里边记录了交换机目前学习到的所有主机MAC地址与交换机端口的映射关系,二层数据正是通过查找这种映射关系发送到目的主机的,下边的MAC和端口的互查命令其实就是根据已知的端口或MAC地址从这张表中筛选得到我们需要的映射关系信息。
如我们以一台Cisco 2960交换机为例,输入命令 sh mac address-table 即可看到它维护的MAC地址表,里边记录了对应的端口和MAC地址的映射关系,如下图所示:
-
2
这里需要说明一下,这里记录的MAC地址有两种类型,一种是STATIC即静态的, 另一种是DYNAMIC即动态的, 静态的MAC地址一般为交换机自身端口或硬件接口的地址,而动态MAC地址一般为用户终端的MAC地址,注意这里的动态不是表示MAC地址是变化的,通常每台终端设备的MAC都是固定且唯一的,除非你换了网卡或搞了其它不可描述事情,这里的动态MAC是指这个MAC是交换机通过学习获得的,是由交换机动态维护的MAC地址。
-
3
2、根据终端设备MAC地址查对端交换机端口
1)、show mac address-table dynamic address
这里 为你要查的终端设备的MAC地址。
通常如果你已经知道终端设备的MAC地址(一般可以通过以上两种方法轻松获取,这是最基本的信息,除非终端崩掉),而且知道了他连到哪台交换机,但是不知道终端设备连到交换机的哪个端口上,这时可以使用这条命令来查看。
如这里我已经通过上述方法获得了本机的MAC地址为 50-9A-4C-57-4C-42,已知它连到了本楼层的用户交换机上,我就可以先远程登录这台交换机,然后通过命令 sh mac address-table dynamic address 50-9A-4C-57-4C-42 就可以查到其对端的交换机端口号,如下图所示,该设备连接到的端口号以及端口所属VLAN均可以看到,可以看到其对应交换机端口号为 g1/0/45:
-
4
注:MAC地址的输入格式为XX-XX-XX-XX-XX-XX,每两个字符要用 - 分开,不同厂商的的MAC地址格式不同,比如华三的是要4个一组用 - 隔开,即XXXX-XXXX-XXXX。
注:MAC地址输入一般不区分大小写。
-
5
2)、show mac address-table | include
这里的 可以是MAC地址或MAC地址的一部分。
如果你觉得输入全部MAC太麻烦,则可以借助管道符号只输入MAC中的一部分关键字做模糊查询,我一般输后四位,一般搜出来的都是唯一的,当然设备多的话也有重复的可能性,不过还是挺方便的。同样我们来用这种方法来查一下本机对应的交换机端口,我们以MAC地址的后四位作为关键字,用命令 sh mac address-table | include 4c42 查找匹配项,可以看到得到的信息跟上边相同。
-
6
注:这里使用管道符号进行筛选,其中关键字的格式必须与MAC地址表中信息的格式一致,负责无法进行筛选,因为管道符号本质上是从MAC地址表里直接过滤寻找匹配项,如你要用8位的MAC作为关键字,则输入关键字的格式必须为 xxxx.xxxx,与MAC表中MAC地址记录的格式一样,不能为xx-xx-xx-xx-xx-xx这样。
-
7
3、根据交换机端口查对端设备MAC地址
1)、show mac address-table interface
这里int-type为端口类型,int-number为端口号。
反之,如果我们已知交换机某个端口号或想知道某个端口连接的终端端设备的MAC地址,则可以通过这条命令来查看指定端口对应的终端设备的MAC地址,当然前提是对端有设备,如果都没连设备,那就什么都查不到咯。
同样如果我想知道楼层用户交换机的 g1/0/45 端口连到哪台终端设备,我就可以远程登录该用户交换机,通过命令 sh mac address-table dynamic interface int g1/0/45 就可以查到其对端设备的MAC地址,如下图所示,可以看到MAC地址为 50-9A-4C-57-4C-42,当然就是我自己的电脑了。
简单回顾一下几条命令:
查看MAC地址表:
show mac address-table
根据MAC查端口:
show mac address-table dynamic address
show mac address-table | include
根据端口查MAC:
show mac address-table interface
show mac address-table | include
查看ARP缓存表:
IOS:show arp
NX-OS:show ip arp
根据MAC查IP:
IOS:show arp | include
NX-OS:show ip arp | include
根据IP查MAC:
IOS:show arp | include
NX-OS:show ip arp | include
但是在4507中执行"Cisco4507#show arp | include 10.1.1.2"和"Cisco4507#sh mac address-table dynamic | include 0060.160a.b5a3"两条命令后,并没有任何结果显示,如下所示:
- Cisco4507#sh arp | include 10.1.1.2
- Cisco4507#
- Cisco4507#sh mac address-table dynamic | include 0060.160a.b5a3
- Cisco4507#
从上面的输出中可以看出,在4507的ARP表和CAM表中并没有包含"10.1.1.2"和"0060.1601.b5a3"的表项。若是在这两个表中包含某一参数的话,一般会得到和下面格式一致的输出结果:
- Cisco4507#sh arp | include 192.168.2.1
- Protocol Address Age (min) Hardware Addr Type Interface
- Internet 192.168.2.14 0 131d.920d.1a32 ARPA Vlan2
- Internet 192.168.2.1 0 1613.7868.4a9d ARPA Vlan2
- Cisco4507#sh mac address-table dynamic | include 1223.8916.1227
- vlan mac address type protocols port
- 200 1223.8916.1227 dynamic ip GigabitEthernet3/1
-
根据终端设备MAC地址查对端交换机端口
1)、show mac address-table dynamic address <mac-address>
这里 <mac-address> 为你要查的终端设备的MAC地址。
通常如果你已经知道终端设备的MAC地址(一般可以通过以上两种方法轻松获取,这是最基本的信息,除非终端崩掉),而且知道了他连到哪台交换机,但是不知道终端设备连到交换机的哪个端口上,这时可以使用这条命令来查看。
如这里我已经通过上述方法获得了本机的MAC地址为 50-9A-4C-57-4C-42,已知它连到了本楼层的用户交换机上,我就可以先远程登录这台交换机,然后通过命令 sh mac address-table dynamic address 50-9A-4C-57-4C-42 就可以查到其对端的交换机端口号,如下图所示,该设备连接到的端口号以及端口所属VLAN均可以看到,可以看到其对应交换机端口号为 g1/0/45:
-
4
注:MAC地址的输入格式为XX-XX-XX-XX-XX-XX,每两个字符要用 - 分开,不同厂商的的MAC地址格式不同,比如华三的是要4个一组用 - 隔开,即XXXX-XXXX-XXXX。
注:MAC地址输入一般不区分大小写。
-
5
2)、show mac address-table | include <key-word>
这里的 <key-word> 可以是MAC地址或MAC地址的一部分。
如果你觉得输入全部MAC太麻烦,则可以借助管道符号只输入MAC中的一部分关键字做模糊查询,我一般输后四位,一般搜出来的都是唯一的,当然设备多的话也有重复的可能性,不过还是挺方便的。同样我们来用这种方法来查一下本机对应的交换机端口,我们以MAC地址的后四位作为关键字,用命令 sh mac address-table | include 4c42 查找匹配项,可以看到得到的信息跟上边相同。
sh mac address-table dynamic address 50-7b-9e-da-9f-e6
根据Mac地址查询IP的对应交换机端口号为 Gi 1/0/45