Как стать автором
Обновить

CDP и Linux

Время на прочтение4 мин
Количество просмотров12K
Тем кто работает с оборудованием Cisco наверняка известен такой удобный протокол как CDP (Cisco Discovery Protocol), с его помощью достаточно удобно исследовать сеть, редкий администратор захочет отключить его поддержку в своей сети (безусловно, что для своих внешних соседей мы однозначто скажем no cdp en).

Рано или поздно становится вопрос, а есть ли полноценная или вообще хотя бы какая-то поддержка 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

Ну вот, на этой оптимистической ноте, думается, статью можно и закончить ;)
Теги:
Хабы:
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

Публикации

Работа

Ближайшие события