Как найти порт коммутатора, к которому подключен хост
Январь 13, 2015
Read the article HOW TO FIND A HOST BY IT’S MAC ADDRESS ON CISCO SWITCH in English
В повседневной работе очень часто появляется необходимость определить коммутатор и порт, к которому подключен пользователь или какое-то устройство. Для этого необязательно искать его визуально. Достаточно лишь узнать MAC адрес.
Секрет в том, что каждый коммутатор хранит информацию о всех МАС адресах, которые проявляют хоть какую-то сетевую активность за последние несколько минут. Необходимо просто грамотно этим воспользоваться.
Итак, допустим, что необходимо найти порт коммутатора, в который подключен пользователь Иванов. Достоверно известно, что ip адрес его компьютера 192.168.10.100
Возможно 2 варианта определения MAC адреса:
- Непосредственно на компьютере пользователя выполнить в командной строке команду ipconfig /all
Или
- Узнать МАС адрес удаленно, зная ip адрес компьютера пользователя. Это возможно при условии, что есть доступ к маршрутизатору Cisco или межсетевому экрану Cisco ASA, которое является шлюзом по умолчанию для хоста. ARP таблица на этих устройствах будет содержать соответствие МАС и IP адресов.
Для поиска используется команда sh arp | inc x.x.x.x, где х.х.х.х – ip адрес интересующего хоста.
R-DELTACONFIG-1# sh arp | inc 192.168.10.100
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.10.100 236 78ac.c0bb.74f2 ARPA Vlan10
Устройство с ip адресом 192.168.10.100 имеет МАС адрес 78ac.c0bb.74f2 и находится во Vlan 10.
Определив МАС адрес устройства, можно продолжить поиск его непосредственного месторасположения на коммутаторе.
Команда show mac address-table (иногда пишется с дополнительным дефисом вместо пробела show mac—address-table) показывает список всех МАС адресов активных устройств, которые подключены к коммутатору.
SW-DELTACONFIG-1# sh mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
1 1111.1111.1111 DYNAMIC Fa0/1
2 2222.2222.2222 DYNAMIC Fa0/2
3 3333.3333.3333 DYNAMIC Fa0/3
4 4444.4444.4444 DYNAMIC Fa0/4
Из-за большого количества записей, которые обычно присутствуют в этой таблице, рекомендуется использовать фильтр по нужному МАС адресу, причем достаточно последних 4х символов. В нашем случае поиск МАС адреса 78ac.c0bb.74f2 выглядит так:
SW-DELTACONFIG-1#sh mac address-table | inc 74f2
10 78ac.c0bb.74f2 DYNAMIC Gi0/1
Строка вывода показывает, что хост находится в Vlan 10 и подключен к порту коммутатора Gigabitethernet 0/1.
Если у вас небольшой офис и вся сеть организована только на одном единственном коммутаторе, то поиск окончен. Однако, если под управлением есть несколько устройств, то может быть так, что к найденному порту текущего коммутатора подключен не конечный хост, а другой коммутатор. В этом случае необходимо повторить поиск в таблице МАС адресов соседнего коммутатора.
Если в сети офиса их несколько, то определить имя и адрес управления нужного нам соседнего коммутатора помогут команды sh cdp neighbors, которая покажется имена и связанные порты всех коммутаторов Cisco, подключенных к текущему и sh cdp neighbors detail, в выводе которой дополнительно указаны ip адреса для управления соседними коммутаторами
SW-DELTACONFIG-1#sh cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID Local Intrfce Holdtme Capability Platform Port ID
SW-TEST-2
Gig 0/1 123 S I WS-C3560G-Gig 0/18
Device ID (SW-TEST-2) – имя соседнего устройства
Local Intrfce (Gig 0/1) – локальный интерфейс, куда подключен соседний коммутатор
Port ID (Gig 0/18) – интерфейс соседнего коммутатора.
SW-DELTACONFIG-1#sh cdp nei detail
-------------------------
Device ID: SW-TEST-2
Entry address(es):
IP address: 192.168.1.202
Platform: cisco WS-C2960-24TT-L, Capabilities: Switch IGMP
Interface: GigabitEthernet0/1, Port ID (outgoing port): GigabitEthernet0/18
Holdtime : 144 sec
Теперь необходимо зайти на соседний коммутатор SW-TEST-2 с адресом управления 192.168.1.202 и произвести на нем поиск нужного нам МАС адреса.
При должной сноровке указанный метод позволит находить хосты в сети любых размеров не более чем за пару минут, не вставая с рабочего места.
Перейти к оглавлению
Firstly, you need to get the MAC address, so get into a machine on the same VLAN and look at its neighbour table — Windows is netsh int ipv4 show neigh
, Linux: ip nei
Cisco: show ip arp x.x.x.x
. Once you have that…
If this is a discovery job on a layer 2 switch, do show mac address-table | i 0011.2233.4455
— replacing the mac address bytes as appropriate.
If on the other hand it’s a router, use show ip arp | i 0011.2233.4455
— again replacing the MAC as appropriate. Obviously when you were getting the MAC, if it turned out to be directly connected to that router, you’re already done.
Long-term however, I heartily recommend that you setup LLDP (failing that, CDP) to your hosts so that you can identify them from either side. lldpd is an absolutely excellent LLDP daemon for Linux that also supports CDP, EDP, SONMP and FDP. If you’re currently able to reach the host and it does happen to run linux/BSD, I’d recommend skipping the above and just turn on LLDP.
С настройками сетевых коммутаторов Cisco сталкивается большинство сетевых инженеров. Рассмотрим более подробно начальную настройку на примере коммутатора Cisco 2960.
Рис.1. Коммутатор Cisco Catalyst 2960-X 48 GigE PoE 740W, 2 x 10G SFP+, LAN Base
Для подключения коммутатора к компьютеру для первичной настройки понадобится консольный кабель из комплекта коммутатора. Кабель может быть как с COM-портом, так и с современным USB-портом. Кабель выбирается в зависимости от наличия требуемого порта на управляющем компьютере. Вместо USB-кабеля возможно использование USB-COM переходника.
Рис. 2 Кабель с COM-портом для подсоединения коммутатора CISCO к компьютеру
Рис. 3 Переходник COM-USB для подключения коммутатора CISCO к компьютеру
В последнее время Cisco комплектует коммутаторы кабелями MiniUSB-USB для прямого подключения через порт MiniUSB к современным компьютерам. В таком случае необходимо использовать Cisco USB Console Driver. Для работы на компьютере под управлением Windows можно использовать любую терминальную программу (Hyperterminal, PuTTY и т.п.).
Первоначальная настройка коммутатора Cisco 2960
После начала сеанса связи с компьютером нам предлагается выполнить начальную настройку по встроенному сценарию в коммутаторе. Необходимо ответить “no”
Would you like to enter the initial configuration dialog? [yes/no]: no
Press RETURN to get started!
Switch>
Теперь мы в командной строке коммутатора. Вначале убедимся, что все настройки коммутатора сброшены к базовым.
Switch>enable
Switch#show startup-config
startup-config is not present
Switch#
Из пользовательского режима переключаемся в привилегированный режим.
Переключаемся в режим глобального конфигурирования.
Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#
Задаем пароль для привилегированного режима.
Switch(config)#enable secret pass
Switch(config)#
Рекомендуется запретить несанкционированный поиск в DNS.
Switch(config)#no ip domain-lookup
Switch(config)#
Проверим настройку доступа по паролю. На экране ввода пароль не отображается.
Switch(config)#exit
Switch#exit
01:19:48: %SYS-5-CONFIG_I: Configured from console by consoleexit
Switch con0 is now available
Press RETURN to get started.
Unauthorized access is strictly prohibited.
Switch>en
Password:pass
Switch#
Для доступа к управлению коммутатором настроим IP-адрес на виртуальном интерфейсе VLAN.
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface vlan1 1
Switch(config-if)#ip address 192.168.1.2 255.255.255.0
Switch(config-if)#no shutdown
Switch(config-if)exit
03:21:33: %LINK-3-UPDOWN: Interface Vlan1, changed state to up
03:21:34: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1, changed state to up
Switch(config)#
Установим пароль для доступа к консоли управления.
Switch(config)#line console 0
Switch(config-line)#password cisco
Switch(config-line)#login
Switch(config-line)#exit
Switch(config)#
Для разрешения удаленного доступа по Telnet настроим VTY (Virtual Teletype).
Switch(config)#line vty 0 4
Switch(config-line)#password cisco
Switch(config-line)#login
Switch(config-line)#end
Switch#
03:28:46: %SYS-5-CONFIG_I: Configured from console by console
Проверим состояние интерфейса SVI. Состояние интерфейса VLAN1 должно быть up/up, что указывает на его активное состояние и получение IP-адреса. Так как все порты коммутатора принадлежат VLAN1 по умолчанию, возможно обращаться к коммутатору на адрес, назначенный VLAN1.
Switch#show ip interface brief
Сохраним настройки.
Switch#copy running-config startup-config
Destination filename [startup-config]?
Building configuration…
[OK]
Switch#
Если необходима обратная задача – удаление текущих настроек коммутатора и возврат к настройкам по умолчанию, используем следующие команды.
Switch#erase startup-config
Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]
[OK]
Erase of nvram: complete
Switch#
06:48:31: %SYS-7-NV_BLOCK_INIT: Initalized the geometry of nvramreload
Switch#reload
Proceed with reload? [confirm]
06:48:46: %SYS-5-RELOAD: Reload requested by console. Reload Reason: Reload Command
Для удаленного управления коммутатором по зашифрованному протоколу SSH используем следующие настройки.
Switch# conf t
Включаем ААА—протокол.
Switch(config)# aaa new-model
Создаем пользователя root с максимальным уровнем привилегий – 15, пароль pass0.
Switch(config)# username root privilege 15 secret pass1230
Создаем правило доступа с названием 01, дающее право заходить по ssh всем хостам сети 192.168.0.0/24; вместо адреса сети можно указать IP-адрес.
Switch(config)# access—list 01 permit 192.168.0 0.0.0.255
Конфигурируем терминальные линии.
Switch(config)# line vty 0 2
Разрешаем вход в привилегированный режим.
Switch(config—line)# privilege level 15
Привязываем правило доступа по ssh к терминальной линии.
Switch(config—line)# access—class 23 in
Вывод лога только после полного ввода команды.
Switch(config—line)# logging synchronous
Выход из режима конфигурирования.
Switch(config—line)# end
Сохраняем настройки.
Switch# copy running-config startup-config
Как найти порт коммутатора Cisco 2960 с подключенным хостом
Часто возникает необходимость найти необходимый коммутатор и порт с подключенным пользователем или необходимым устройством. Нет необходимости искать визуально данный порт. Достаточно узнать MAC-адрес пользователя. Любой коммутатор хранит информацию о всех активных адресах. Допустим, необходимо найти порт коммутатора, в который подключен пользователь Петров с IP-адресом 192.168.10.100. MAC-адрес можно определить двумя способами:
-
непосредственно на компьютере пользователя (под управлением Windows) с помощью команды ipconfig /all;
Рис. 4 Определение MAC-адреса на компьютере пользователя
-
если известен IP-адрес компьютера пользователя, возможно узнать его MAC-адрес дистанционно при условии доступа к маршрутизатору Cisco (являющегося шлюзом по умолчанию для хоста). Таблица ARP маршрутизатора будет содержать необходимые соответствия MAC и IP-адреса.
Для поиска применяется команда sh arp | inc x.x.x.x, где х.х.х.х – ip адрес искомого хоста. Команда подается маршрутизатору.
Router# sh arp | inc 192.168.10.100
Protocol |
Address |
Age (min) |
Hardware Addr |
Type |
Interface |
Internet |
192.168.10.100 |
236 |
78ac.c0bb.74f2 |
ARPA |
Vlan10 |
В протоколе видно, что устройство с ip адресом 192.168.10.100 имеет МАС-адрес 78ac.c0bb.74f2 и находится во Vlan 10. Определив МАС адрес устройства, проведем поиск его размещения на коммутаторе. Используем команду “show mac address-table”, которая выведет список всех МАС-адресов активных устройств, подключенных к коммутатору. Далее общаемся непосредственно с коммутатором.
Switch#sh mac address-table
Mac Address Table
——————————————-
Vlan Mac Address Type Ports
—- ———— ——— ——
1 1111.1111.1111 DYNAMIC Fa0/1
2 2222.2222.2222 DYNAMIC Fa0/2
3 3333.3333.3333 DYNAMIC Fa0/3
4 4444.4444.4444 DYNAMIC Fa0/4
Из-за значительного числа записей, которые присутствуют в этой таблице, рекомендуется использовать фильтр по нужному МАС адресу. Достаточно последних 4-х символов. В таком случае поиск МАС адреса 78ac.c0bb.74f2 выглядит так:
Switch#sh mac address-table | inc 74f2
10 78ac.c0bb.74f2 DYNAMIC Gi0/1
Хост находится во Vlan 10, подключен к порту коммутатора Gigabitethernet 0/1.
Системный интегратор ВИСТЛАН устанавливает и конфигурирует локальные сети любой сложности на оборудовании Cisco.
Время на прочтение
5 мин
Количество просмотров 16K
В локальной сети часто нужно узнать, на каком порту коммутатора находится определенный MAC-адрес устройства. Задача решается легко, если в сети несколько коммутаторов, но, когда их больше 30, всё значительно усложняется. Хочу поделиться небольшим скриптом на Python, который ищет нужный MAC-адрес в сети и возвращает имя и порт коммутатора, на котором зарегистрирован этот MAC.
Конструктивная критика приветствуется. Подробности под катом.
Если дизайн сети выполнен правильно, то есть корневой коммутатор CORE, к которому подключены коммутаторы распределения DS (Distribution Switch), а к ним, в свою очередь, коммутаторы уровня доступа AS (Access Switch). Это правило не всегда выполняется, коммутаторы доступа могут быть подключены последовательно. В любом случае, на порту вышестоящего коммутатора находятся все MAC-адреса устройств, подключенных к нижестоящему коммутатору.
Например, если интересующее нас устройство подключено к коммутатору AS3, то, начав поиск с CORE, мы найдем этот адрес на порту, ведущему к DS1. Зайдя на DS1, мы обнаружим этот MAC на порту, ведущему к AS2, зайдя на AS2, мы увидим, что он ведет нас к AS3, и только на AS3 мы найдем конкретный порт, к которому подключено интересующее нас устройство.
Делать это всё руками не хотелось, перебирать все коммутаторы в цикле и определять, где аплинк, а где нет тоже, поэтому родилось следующее решение, которым и хочу поделиться.
Немного теории.
Чтобы найти MAC 08:62:66:c7:b3:45 на коммутаторе Juniper, нужно выполнить следующую команду:
show ethernet-switching table | match 08:62:66:c7:b3:45
Если такой MAC есть, ответ будет следующим:
vlan151 08:62:66:c7:b3:45 D - xe-0/0/23.0
В последней колонке будет имя интерфейса коммутатора, на котором зарегистрирован MAC. Но как понять, куда ведет этот интерфейс? И тут на помощь приходят Interface Descriptions. Это строки в конфигурационном файле коммутатора, которые позволяют назначить текстовые метки интерфейсам.
Команда
show interfaces xe-0/0/23 descriptions
покажет следующее:
Interface Admin Link Description
xe-0/0/23 up up SW>DS1
При конфигурации мы указываем, что этот интерфейс ведет к нижестоящему коммутатору:
set interfaces xe-0/0/23 description SW>DS1
Реализация
Предлагаемый скрипт будет делать следующее:
- подключаться по SSH на корневой коммутатор;
- проверять, на каком интерфейсе находится передаваемый в параметрах MAC-адрес;
- проверять Description этого интерфейса;
- если интерфейс ведет к коммутатору, рекурсивно заходить на следующий по цепочке коммутатор.
#в этот список будут складываться результаты поиска
searchpass = []
#main функция принимает в качестве параметра MAC-адрес и вызывает функцию checkswitch, в которую в качестве параметра передает имя корневого коммутатора и MAC-адрес. Весь результат поиска складывается в список searchpass в формате json.
def main(argv):
mac_addr = argv[0]
checkswitch('CORE',mac_addr)
for switch in searchpass:
print (json.dumps(switch, ensure_ascii=False))
if __name__ == "__main__":
main(sys.argv[1:])
#функция рекурсивного поиска MAC-адреса
def checkswitch(hostname,mac_addr):
try:
#создаем пустой словарь возвращаемых значений, ключу host присваиваем имя коммутатора
returnvalue = {}
returnvalue['host']=hostname
#sendCommand подключается к заданному коммутатору по SSH и вызывает команду поиска MAC-адреса в таблице коммутации
answer = sendCommand(hostname,'show ethernet-switching table | match '+mac_addr)
#делим строку на колонки, в последней находится имя интерфейса
#vlan151 08:62:66:c7:b3:45 D - xe-0/0/23.0
if(answer!=0):
iface = answer.split()[4]
returnvalue['iface']=iface
#проверяем description интерфейса, нужно отрезать последние 2 символа .0 от имени и забрать последнюю строку
#xe-0/0/23 up up SW>DS01
answer = sendCommand(hostname,'show interfaces '+iface[:-2]+' descriptions | last 1 | no-more')
iface = answer.split()
#Если description на интерфейсе есть, записываем его в словарь и проверяем, начинается ли он с SW>. Если да, отрезаем эти 3 символа, берем имя следующего коммутатора и рекурсивно вызываем функцию снова.
if(len(iface)>2):
iface=iface[3]
returnvalue['description']=iface
else:
returnvalue['description']='none'
searchpass.append(returnvalue)
if (iface[:3]=='SW>'):
checkswitch(iface[3:],mac_addr)
else:
returnvalue['iface']='none'
searchpass.append(returnvalue)
except Exception as e:
print(e)
Таким образом, скрипт пройдет по всем коммутаторам сети, начиная с ядра, и попытается найти нужный MAC. Для успешной работы достаточно поддерживать в актуальном состоянии descriptions на интерфейсах, а топология может быть практически любой сложности.
Пример работы скрипта:
python findmac.py 00:17:fc:21:e8:f9
{"host": "CORE", "iface": "xe-0/0/23.0", "description": "SW>DS1"}
{"host": "DS1", "iface": "xe-0/0/11.0", "description": "SW>AS2"}
{"host": "AS2", "iface": "xe-1/0/1.0", "description": "SW>AS3"}
{"host": "AS3", "iface": "ge-0/0/26.0", "description": "none"}
Если MAC отсутствует, получим
{"host": "CORE", "iface": "none"}
Последняя строка – интересующий нас коммутатор и порт, но при этом мы можем отследить весь путь поиска.
Полный код – под спойлером, благодарю за внимание.
findmac.py
import paramiko
import time
import sys
import json
import threading
import logging
login = 'user1'
password = 'pass1234'
searchpass = []
port = 22
class LogPipe(threading.Thread):
def __init__(self, level):
threading.Thread.__init__(self)
self.daemon = False
self.level = level
self.fdRead, self.fdWrite = os.pipe()
self.pipeReader = os.fdopen(self.fdRead)
self.start()
def fileno(self):
return self.fdWrite
def run(self):
for line in iter(self.pipeReader.readline, ''):
logging.log(self.level, line.strip('n'))
self.pipeReader.close()
def close(self):
os.close(self.fdWrite)
def execute_ssh_command(host, port, username, password, command):
try:
# Create the SSH client.
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Connect to the host.
ssh.connect(host, port, username, password, look_for_keys=False)
# Send the command (non-blocking)
stdin, stdout, stderr = ssh.exec_command(command)
# Wait for the command to terminate
while not stdout.channel.exit_status_ready() and not stdout.channel.recv_ready():
time.sleep(1)
stdoutstring = stdout.readlines()
stderrstring = stderr.readlines()
return stdoutstring, stderrstring
finally:
if ssh is not None:
# Close client connection.
ssh.close()
def sendCommand (hostname,command):
returnvalue = 0
logging.info('Host '+hostname+', command: '+command)
Try:
#add .mydomain for FQDN
(stdoutstring, stderrstring) = execute_ssh_command(hostname+'.mydomain', port, login, password, command+'n')
if (len(stdoutstring)>0):
logging.info(stdoutstring[0])
if (len(stderrstring)>0):
logging.info(stderrstring[0])
except Exception as e:
return returnvalue
else:
returnvalue = stdoutstring[0]
finally:
return returnvalue
def checkswitch(hostname,mac_addr):
try:
returnvalue = {}
returnvalue['host']=hostname
answer = sendCommand(hostname,'show ethernet-switching table | match '+mac_addr)
if(answer!=0):
iface = answer.split()[4]
returnvalue['iface']=iface
#cut .0 prefix in the interface name
answer = sendCommand(hostname,'show interfaces '+iface[:-2]+' descriptions | last 1 | no-more')
iface = answer.split()
if(len(iface)>2):
iface=iface[3]
returnvalue['description']=iface
else:
returnvalue['description']='none'
searchpass.append(returnvalue)
if (iface[:3]=='SW>'):
checkswitch(iface[3:],mac_addr)
else:
returnvalue['iface']='none'
searchpass.append(returnvalue)
except Exception as e:
logging.info(e)
def main(argv):
mac_addr = argv[0]
#configure log
logging.basicConfig(filename='/var/log/findmac.log', level=logging.INFO, format='%(asctime)s %(message)s')
logging.info('Find MAC: '+mac_addr)
checkswitch('CORE',mac_addr)
for switch in searchpass:
print (json.dumps(switch, ensure_ascii=False))
if __name__ == "__main__":
main(sys.argv[1:])
Добавил(а) microsin
Задачка — знаем IP устройства, и нужно дистанционно определить, к какому из портов коммутатора оно подключено.
Памятка по командам, для тех кто знает процедуру:
ping (на устройствах Cisco и компьютерах)
arp -a (на компьютерах)
show arp | incl xxxx.yyyy.zzzz (на устройствах Cisco, в основном на роутерах)
show mac address-table | incl xxxx.yyyy.zzzz (на коммутаторах Cisco)
show mac-address-table | incl xxxx.yyyy.zzzz (на коммутаторах Cisco)
show etherchannel summary (на коммутаторах Cisco для определения портов, входящих в port-channel)
Последовательность действий по шагам:
1. Сначала нужно определить MAC-адрес устройства. Для этого на любом устройстве, которое понимает маршрутизацию (использует протокол IP), нужно посмотреть таблицу arp. Перед этим обязательно нужно послать пакет на устройство (например, сделать ping на него откуда-нибудь). Чтобы посмотреть таблицу arp на маршрутизаторе Cisco 831, нужно дать команду show arp. На компьютере с w2k нужно дать команду arp -a, на *nix команду arp -n.
2. На коммутаторе (С2950) выполнить команду show mac-address-table. Будет выведена примерно такая таблица:
Switch-2950-a.b.96.253#show mac-address-table Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- All 0015.fa4c.d680 STATIC CPU All 0100.0ccc.cccc STATIC CPU All 0100.0ccc.cccd STATIC CPU All 0100.0cdd.dddd STATIC CPU 50 000a.e475.7469 DYNAMIC Fa0/5 50 000a.e476.4515 DYNAMIC Fa0/7 50 0012.01bb.4add DYNAMIC Fa0/1 Total Mac Addresses for this criterion: 7
Теперь осталось сравнить таблицу IP-MAC (полученную на предыдущем шаге) с этим выводом, и будет понятно, к какому порту подключено устройство (выстраиваем цепочку IP-MAC-port).
В случае, когда между нами и устройством стоит цепочка из коммутаторов, нужно использовать следующий метод. Предположим, нужно найти, к какому порту какого коммутатора подключено устройство с IP a.b.0.61.
1. Для начала заходим на корневой коммутатор, и даем команду
Это нужно для того, чтобы гарантировать появление в ARP-таблице MAC-адреса искомого устройства.
2. Даем команду показать ARP-таблицу:
В первой строке Получим MAC устройства с IP a.b.0.61 — 000a.e475.a1a1
3. Даем команду показать таблицу перенаправления MAC-адресов:
#show mac-address-table address 000a.e475.a1a1
Получим имя интерфейса, через который идет трафик на 000a.e475.a1a1 — Gi6/14. Теперь смотрим на имя интерфейса. Если на этом этапе обнаружится, что интерфейс не физический, а Port-channel, то тогда нужно узнать список физических интерфейсов, входящих в этот Port-channel, и для каждого из них повторить шаг 4, пока не будет получен IP соседней циски.
Список интерфейсов в Port-cahnnel можно узнать, дав команду show running-config и просмотрев подкоманду «channel-group номер_группы» у интерфейсов, или дать команду show etherchannel summary.
4. Итак, мы получили имя интерфейса, через который идет трафик искомого хоста и уверены в том, что он не конечный (подключен через один или несколько коммутаторов). В этом случае даем команду нашему коммутатору показать соседей, подключенных по найденному интерфейсу:
#show cdp neighbors GigabitEthernet 6/14 detail
В случае наличия соседей получим IP циски, с которой соединяется GigabitEthernet 6/14 — a.c.0.35. Если соседей нет, то порт конечный (к нему и подключено устройство с искомым IP).
5. Коннектимся к a.c.0.35, и повторяем шаги 1..3. В итоге команда
#show mac-address-table | beg 000a.e475.a1a1
или
#show mac-address-table address 000a.e475.a1a1
покажет имя порта (в случае | beg оно будет в начале списка), к которому подключено искомое устройство (Fa0/10):
50 000a.e475.a1a1 DYNAMIC Fa0/10
[Ссылки]
1. Как определить IP хоста, подключенного к определенному порту коммутатора.