思科交换机端口号、终端IP地址和MAC地址的互查
步骤 1、小科普
1、MAC地址表
通俗的来讲,每台交换机都存储并维护着一个MAC地址表,它记录了交换机每个端口与所连接的主机的MAC地址的映射关系,交换机正是依据MAC表中的端口与主机地址的映射关系来选择目的端口,进行二层数据转发的。所以我们可以通过MAC地址表查到哪个端口对应哪台主机,而事实上MAC地址与端口的互查就是借助MAC地址表进行的。
2、ARP缓存表
ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议,这样就可以通过三层地址(IP地址)解析得到对应主机的二层硬件地址(MAC地址),从而将数据通过二层转发到目的主机。而ARP缓存表中则记录了常用的IP地址与主机MAC地址的映射关系,以便下一次数据转发。所以一般可以通过ARP缓存表查看哪个IP对应哪台主机,部分没有的映射关系会借助ARP广播得到并存储在缓存表中以便下一次使用,我们这里的IP和MAC的互查就是基于ARP缓存表实现的。
步骤 2、查看终端设备的IP和MAC信息
对于终端PC有很多种方法可以查到它的MAC地址和IP地址,大家可以自己探索一下,这里以win10系统为例进行介绍两种比较常用的方法:
1、通过网络与共享中心查看
这里,首先选中桌面右下角的网络连接图标,单击鼠标右键,然后出来下拉列表中就可以看到打开网络和共享中心选项,选中单击即可进入网络与共享中心界面,在网络共享中心中找到以太网点接,单击击以太网选项即可进入以太网状态框,在以太网状态框中单击详细信息按钮,即可看到详细的连接信息,包括物理地址(MAC)、IP地址,子网掩码,网关及服务器地址等信息。具体步骤如下图所示,操作比较简单,相信很多人都比较熟悉,这里就不分开详细说明了。
注:如果你连的是无线,同样可以点击无线连接图标进入共享中心,在网络连接里选择无线连接,然后也可以在详细信息里看到主机的IP地址和MAC地址等信息,基本是一样的。
2、通过dos命令行来查看
首先通过 win+R 组合键打开运行框,然后在其中输入 cmd 即可进入命令行界面,在命令行界面通过键入命令 ipconfig/all 即可看到本机的IP地址和MAC地址信息,如下图所示:
注:这里连的是有线,故以太网适配器的配置信息即为当前网络的配置,如果是无线则对应IP和MAC信息可以在无线适配器配置信息里看到,这里就不做演示了。
步骤 3、端口号和MAC地址互查
1、查看MAC地址表
show mac address-table
通过这条命令就可看到存储在当前交换机中的MAC地址表,里边记录了交换机目前学习到的所有主机MAC地址与交换机端口的映射关系,二层数据正是通过查找这种映射关系发送到目的主机的,下边的MAC和端口的互查命令其实就是根据已知的端口或MAC地址从这张表中筛选得到我们需要的映射关系信息。
如我们以一台Cisco 2960交换机为例,输入命令 sh mac address-table 即可看到它维护的MAC地址表,里边记录了对应的端口和MAC地址的映射关系,如下图所示:
这里需要说明一下,这里记录的MAC地址有两种类型,一种是STATIC即静态的, 另一种是DYNAMIC即动态的, 静态的MAC地址一般为交换机自身端口或硬件接口的地址,而动态MAC地址一般为用户终端的MAC地址,注意这里的动态不是表示MAC地址是变化的,通常每台终端设备的MAC都是固定且唯一的,除非你换了网卡或搞了其它不可描述事情,这里的动态MAC是指这个MAC是交换机通过学习获得的,是由交换机动态维护的MAC地址。
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:
注:MAC地址的输入格式为XX-XX-XX-XX-XX-XX,每两个字符要用 - 分开,不同厂商的的MAC地址格式不同,比如华三的是要4个一组用 - 隔开,即XXXX-XXXX-XXXX。
注:MAC地址输入一般不区分大小写。
2)、show mac address-table | include <key-word>
这里的 <key-word> 可以是MAC地址或MAC地址的一部分。
如果你觉得输入全部MAC太麻烦,则可以借助管道符号只输入MAC中的一部分关键字做模糊查询,我一般输后四位,一般搜出来的都是唯一的,当然设备多的话也有重复的可能性,不过还是挺方便的。同样我们来用这种方法来查一下本机对应的交换机端口,我们以MAC地址的后四位作为关键字,用命令 sh mac address-table | include 4c42 查找匹配项,可以看到得到的信息跟上边相同。
注:这里使用管道符号进行筛选,其中关键字的格式必须与MAC地址表中信息的格式一致,负责无法进行筛选,因为管道符号本质上是从MAC地址表里直接过滤寻找匹配项,如你要用8位的MAC作为关键字,则输入关键字的格式必须为 xxxx.xxxx,与MAC表中MAC地址记录的格式一样,不能为xx-xx-xx-xx-xx-xx这样。
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,当然就是我自己的电脑了。
2)、show mac address-table | include <key-word>
这里的 <key-word> 可以是端口号或端口号的一部分。
这里也可以借助管道符号只输入端口号中的一部分关键字做模糊查询。如我们来用这种方法来查一下上述交换机端口对应的主机MAC地址,我们以端口编号作为关键字,用命令 sh mac address-table | include 1/0/45 查找匹配项,可以看到得到的信息跟上边相同。同样这里的关键字格式要跟对应MAC表中的信息格式一致,如果你不能确定格式的话,可以先用命令大体查看一下MAC地址表,就知道每一项信息的格式了,然后在根据关键字进行过滤。
步骤 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 也可以得到同样的结果,如下图所示:
其他注意事项
1、简单回顾一下几条命令:
查看MAC地址表:
show mac address-table
根据MAC查端口:
show mac address-table dynamic address <mac-address>
show mac address-table | include <key-mac-addr>
根据端口查MAC:
show mac address-table interface <int-type int-number>
show mac address-table | include <key-int-num>
查看ARP缓存表:
IOS:show arp
NX-OS:show ip arp
根据MAC查IP:
IOS:show arp | include <key-mac-addr>
NX-OS:show ip arp | include <key-mac-addr>
根据IP查MAC:
IOS:show arp | include <key-ip-addr>
NX-OS:show ip arp | include <key-ip-addr>
2、管道符号是非常有用的工具,理论上可以根据任何关键字筛选自己需要的输出信息,大家感兴趣的话,可以自己去进一步学习一下。
3、思科设备不同的操作系统命令有所不同,有些系统可能上述命令不太适用,不过应该大同小异,可以借助帮助命令 ? 查询,大家注意区分使用。
转载自:百度百科 https://jingyan.baidu.com/article/48b558e308be937f38c09a8c.html