-
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-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 查找匹配项,可以看到得到的信息跟上边相同。
-
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>
这里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,当然就是我自己的电脑了。
-
8
2)、show mac address-table | include <key-word>
这里的 <key-word> 可以是端口号或端口号的一部分。
这里也可以借助管道符号只输入端口号中的一部分关键字做模糊查询。如我们来用这种方法来查一下上述交换机端口对应的主机MAC地址,我们以端口编号作为关键字,用命令 sh mac address-table | include 1/0/45 查找匹配项,可以看到得到的信息跟上边相同。同样这里的关键字格式要跟对应MAC表中的信息格式一致,如果你不能确定格式的话,可以先用命令大体查看一下MAC地址表,就知道每一项信息的格式了,然后在根据关键字进行过滤。
END
步骤 4、终端MAC地址和IP地址互查
-
由于ARP是工作在三层(网络层)的协议,所以一般二层交换机是没有主机物理地址与IP地址的映射表的,要想查IP地址与主机MAC地址的映射关系,只能在三层交换机上通过ARP映射表查看。同样以刚刚那台主机为例,由于它的上连交换机为普通二层接入交换机,不具备三层路由功能,查找ARP缓存表也只能查到管理IP和网关IP等,查不到终端IP信息,如下图所示。
-
所以我们要查到终端主机IP地址和MAC地址的映射只能到更上一级的三层交换机上查,这里就直接在核心上查看。
-
1、查看ARP缓存表
IOS操作系统:
show arp
NX-OS操作系统:
show ip arp
思科交换机不同级别的交换机操作系统也有所不同,一般普通交换机以IOS居多,高端交换机有NX-OS,好有其他系统,大家可以自己去了解哈。对于IOS系统查看ARP缓存表,直接使用 show arp 命令即可,我这里核心是NX-OS系统,命令稍微有点变化,要使用 show ip arp 命令才行,查到的为所有下联设备(包括用户终端)IP和MAC的映射表,如下图所示。同样接下来的IP和MAC的互查实际上也是借助这张表进行过滤实现的。
-
2、根据MAC地址查对应IP地址
IOS 操作系统
show arp | include <key-word>
NX-OS操作系统
show ip arp | include <key-word>
这里的 <key-word> 可以是MAC地址或MAC地址的一部分。
这里直接使用管道符号,以MAC地址或其中的一部分为关键字,对ARP缓存表进行过滤即可得到与IP地址间的映射信息。如我们这里还是以上一台主机为例,使用命令 show ip arp | include 509a.4c57.4c42 ,即可得到对应主机IP地址,如下图所示,主机IP为 10.100.X.103:
-
同样为了方便我们可以直接选取后4位MAC作为关键字进行查询,使用命令 show ip arp| include 4c42 也可以得到同样的结果,如下图所示:
-
注:这里也跟上边一样,要注意输入关键字格式跟ARP缓存表中相关信息格式一致,MAC地址格式应为XXXX.XXXX.XXXX,而不能是XX-XX-XX-XX-XX。
-
3、根据IP地址查看对应MAC地址
IOS 操作系统
show arp | include <key-word>
NX-OS操作系统
show ip arp | include <key-word>
这里的 <key-word> 可以是IP地址或IP地址的一部分。
这里也一样直接使用管道符号,以IP地址或其中的一部分作为关键字,对ARP缓存表进行过滤即可得到与对应主机MAC的映射关系。如我们这里还是以上一台主机为例,根据IP地址查看其MAC,使用命令 show ip arp | include 10.100.X.103 ,即可得到对应主机MAC地址,如下图所示,MAC地址为 509a.4c57.4c42:
-
同样为了方便我们可以直接选取后16位IP作为关键字进行查询,使用命令 show ip arp | include X.103 也可以得到同样的结果,如下图所示: