Тем кто работает с оборудованием Cisco наверняка известен такой удобный протокол как CDP (Cisco Discovery Protocol), с его помощью достаточно удобно исследовать сеть, редкий администратор захочет отключить его поддержку в своей сети (безусловно, что для своих внешних соседей мы однозначто скажем no cdp en).
Рано или поздно становится вопрос, а есть ли полноценная или вообще хотя бы какая-то поддержка CDP в Linux'е и других *nix-системах. Оказывается есть такой инструментарий. Под катом будут освещены два из них.
cdpr — это небольшая программа которая умеет слушать протокол CDP на указанном интерфейсе.
Установить пакет cdpr не составляет особого труда, в Debian это делается так:
После того как пакет будет установлен можно ввести cdpr -help чтобы получить помощь с описанием опций программы. (Следует обратить внимание на то, что cdpr устанавливается в /usr/sbin, так что простой пользователь должен вводить или полный путь или работать с root'овыми правами, например через sudo)
Запуск cdpr без указания опций выводит простое меню в котором можно выбрать интерфейс с которого мы хотим получить информацию по CDP:
Указываем номер сетевого интерфейса из меню и терпеливо ожидаем пока cdpr проанализирует поступающую с интерфейса информацию:
Ура! Есть контакт! Правда, проще некуда? ;)
Но если внимательно посмотреть на вывод cdpr --help то можно заметить, что не обязательно работать с программой через меню, интересующий интерфейс можно так-же указать через опцию -d, а заодно включить более многословный режим работы, указав -v или -vvv:
Заметим, что получаемый через cdpr вывод, при необходимости, достаточно удобно анализировать в любых скриптах.
Также хочется остановится ещё на одном интересном проекте.
lldpd (включает IEEE 802.1ab LLDP) — демон для GNU/Linux который включает как приём так и передачу по протоколам LLDP (Link Layer Discovery Protocol) и CDP (Cisco Discovery Protocol).
Установим пакет:
Теперь можно изучить возможности собранной программы man lldpd. Для добавления нужных опций при автоматическом запуске lldpd во время загрузки редактируем /etc/default/lldpd.
После запуска все журнальные записи от lldpd можно посмотреть syslog'е.
lldpctl используется без каких-либо аргументов и отображает найденных соседей. Ниже приведён пример вывода после обнаружения по соседству Cisco:
Если были включены CDP, EDP or SONMP то на соседней киске можно будет увидеть примерно такой вывод:
Ну вот, на этой оптимистической ноте, думается, статью можно и закончить ;)
Рано или поздно становится вопрос, а есть ли полноценная или вообще хотя бы какая-то поддержка CDP в Linux'е и других *nix-системах. Оказывается есть такой инструментарий. Под катом будут освещены два из них.
cdpr — это небольшая программа которая умеет слушать протокол CDP на указанном интерфейсе.
Установить пакет cdpr не составляет особого труда, в Debian это делается так:
aptitude install cdpr
После того как пакет будет установлен можно ввести cdpr -help чтобы получить помощь с описанием опций программы. (Следует обратить внимание на то, что cdpr устанавливается в /usr/sbin, так что простой пользователь должен вводить или полный путь или работать с root'овыми правами, например через sudo)
$ sudo cdpr -help cdpr - Cisco Discovery Protocol Reporter Version 2.2.1 Copyright (c) 2002-2006 - MonkeyMental.com d: Specify device to use (eth0, hme0, etc.) h: Print this usage t: time in seconds to abort waiting for a packet (should be > 60) v[vv]: Set verbose mode ** Options dealing with server updates: ** u: Send cdpr information to a cdpr server requires config file as arg l: Location/description of this port for use with -u or -s and -p n: Override the hostname reported to the server for use with -u or -s and -p s: Server to send information to specify port with a : after Server/IP Example: 192.168.1.20:88 (default: 80) requires -p (overridden by -u) p: Path of server script to send data to requires -s (overridden by -u)
Запуск cdpr без указания опций выводит простое меню в котором можно выбрать интерфейс с которого мы хотим получить информацию по CDP:
$ sudo cdpr cdpr - Cisco Discovery Protocol Reporter Version 2.2.1 Copyright (c) 2002-2006 - MonkeyMental.com 1. eth0 (No description available) [... skip ...] 22. any (Pseudo-device that captures on all interfaces) 23. lo (No description available) 24. lo:ring (No description available) Enter the interface number (1-24):13
Указываем номер сетевого интерфейса из меню и терпеливо ожидаем пока cdpr проанализирует поступающую с интерфейса информацию:
Using Device: vlan1315 Waiting for CDP advertisement: (default config is to transmit CDP packets every 60 seconds) Device ID value: cisco.netcom.ks.ua Addresses value: 213.44.40.27 Port ID value: FastEthernet0/1.1315
Ура! Есть контакт! Правда, проще некуда? ;)
Но если внимательно посмотреть на вывод cdpr --help то можно заметить, что не обязательно работать с программой через меню, интересующий интерфейс можно так-же указать через опцию -d, а заодно включить более многословный режим работы, указав -v или -vvv:
$ sudo cdpr -d vlan1315 -vvv cdpr - Cisco Discovery Protocol Reporter Version 2.2.1 Copyright (c) 2002-2006 - MonkeyMental.com Using Device: vlan1315 Waiting for CDP advertisement: (default config is to transmit CDP packets every 60 seconds) Received a CDP packet, header length: 372 cdp packet: version: 02 time to live: b4 checksum: cfcb cdp type/len/val: type: 0001 - Device ID length: 0016 Device ID value: cisco.netcom.ks.ua cdp type/len/val: type: 0005 - Software version length: 00fc Software version value: Cisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(12), RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2006 by Cisco Systems, Inc. Compiled Fri 17-Nov-06 12:02 by prod_rel_team cdp type/len/val: type: 0006 - Platform length: 000e Platform value: Cisco 2811 [... skip ...] cdp type/len/val: type: 000b - Duplex length: 0005 Duplex value: 01 Data Link Type: Ethernet (10MB, 100MB, 1000MB and up).
Заметим, что получаемый через cdpr вывод, при необходимости, достаточно удобно анализировать в любых скриптах.
Также хочется остановится ещё на одном интересном проекте.
lldpd (включает IEEE 802.1ab LLDP) — демон для GNU/Linux который включает как приём так и передачу по протоколам LLDP (Link Layer Discovery Protocol) и CDP (Cisco Discovery Protocol).
Установим пакет:
$ sudo dpkg -i lldpd_0.4.1-1_i386.deb
Теперь можно изучить возможности собранной программы man lldpd. Для добавления нужных опций при автоматическом запуске lldpd во время загрузки редактируем /etc/default/lldpd.
После запуска все журнальные записи от lldpd можно посмотреть syslog'е.
lldpctl используется без каких-либо аргументов и отображает найденных соседей. Ниже приведён пример вывода после обнаружения по соседству Cisco:
Interface: tun-cisco ChassisID: ciscotest (local) SysName: ciscotest SysDescr: cisco 7206VXR running on Cisco Internetwork Operating System Software IOS (tm) 7200 Software (C7200-P-M), Version 12.2(46), RELEASE SOFTWARE (fc1) Copyright (c) 1986-2007 by cisco Systems, Inc. Compiled Thu 26-Apr-07 21:56 by pwade MgmtIP: 172.19.18.2 Caps: Station(E) PortID: ca:00:50:7b:00:00 (MAC) PortDescr: FastEthernet0/0 Autoneg: not supported/not enabled MAU oper type: unknown (0)
Если были включены CDP, EDP or SONMP то на соседней киске можно будет увидеть примерно такой вывод:
ciscotest#show cdp neighbors Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater Device ID Local Intrfce Holdtme Capability Platform Port ID zoro Fas 0/0 104 Linux tun-cisco
Ну вот, на этой оптимистической ноте, думается, статью можно и закончить ;)