CDP на Linux

Всем известно про замечательный протокол CDP (Cisco Discovery Protocol) для Cisco. Оказывается что и для Linux тоже есть возможность использовать его прелести. Есть проект LLDP, который нам в этом и поможет.
Для тех, кто в танке: на cisco можно посмотреть соседей с включенным CDP коммандой sh cdp nei. Комманда выведет оборудование которое подключено, на каком порту и т.д., более подробно sh cdp ent Device_ID, уже по конкретному девайсу.
Так вот, мы сейчас попробуем включить это и в Linux, в данном, конкретном случае, настраивать будем на CentOS 5.4, на Debian-подобных дистрах почти тож самое, за исключением процесса сборки и расположения файлов.
Для начала скачаем src.rpm, установим его:
# rpm -Uhv lldpd-0.4.0-1.fc10.src.rpm

появится файл спецификаций /usr/src/redhat/SPECS/lldpd.spec, кому нужно, может его править по своему усмотрению, если надо.
Далее нам собственно надо собрать сам пакет:
# rpmbuild -bb /usr/src/redhat/SPECS/lldpd.spec

устанавливаем вновь собранный пакет:
# rpm -Uhv /usr/src/redhat/RPMS/i386/lldpd-0.4.0-1.i386.rpm

настраиваем опции запуска демона, открываем файл:
# vim /etc/sysconfig/lldpd

и правим
OPTIONS="-v -c"

-v — включаем поддержку vlan если они у Вас есть на машине с Linux
-c — включаем протокол CDP
более подробную информацию можно посмотреть по man lldpd
запускаем демон:
# /etc/init.d/lldpd start

после запуска, в файле /var/log/messages мы увидим приблизительно такие строки:
lldpd[30206]: lldpd_decode: switching to CDPv2 on port eth1
lldpd[30206]: lldpd_decode: switching to CDPv2 on port eth0

всё в порядке, демон стартанул.
Чтоб все работало, на оборудовании с другой стороны, на порту, должен быть включен CDP, то есть не должно стоять no cdp enable на интерфейсе.
Собственно, осталось только проверить как все работает и получить информацию.
# lldpctl

получаем:
-------------------------------------------------------------------------------
    LLDP neighbors
-------------------------------------------------------------------------------
Interface: eth0
 ChassisID: sw-b-48 (local)
 SysName:   sw-b-48
 SysDescr:  
   cisco WS-C2960-48TT-L running on
   Cisco IOS Software, C2960 Software (C2960-LANBASE-M)
   Copyright © 1986-2007 by Cisco Systems, Inc.
   Compiled Thu 19-Jul-07 20:06 by nachen
 MgmtIP:    172.16.25.48
 Caps:      Bridge(E) 

 PortID:    FastEthernet0/4 (ifName)
 PortDescr: FastEthernet0/4
-------------------------------------------------------------------------------

видим, что на другой стороне у нас свитч C2960, версию IOS, порт свитча, к которуму подключена машина с Linux.
Для остроты ощущений, посмотрим вывод на cisco, у нас там появилось:
my.linux.machine
                 Fas 0/4           92             R       Linux     eth0

то есть, опять таки, видим, что у нас на порту fa0/4 подключена машина с Linux, сетевое имя машины, и её сетевушка eth0.

Добавлю: можно собрать пакет из сорсов tar.gz и самому, но в моем случае это не true-way, все должно быть упорядочено. В Debian-подобных дистрах, файл настройки демона расположен в /etc/default/
стоит отметить еще утилиту cdpr, но с её помощью можно только получать информацию по CDP, а не обмениваться ей, для RH-дистров она есть в репозитарии rpmforge.
Вот и все. Удачи в настройках.
© shadow_alone

это мой крос-пост с wiki.dodex.org и habr.ru
  • +3
  • 08 марта 2010, 17:46
  • shad

Комментарии (1)

RSS свернуть / развернуть
+
0
У меня бубунта сервер но все равно колбасит, при установке потянул за собой еще и перл :)
Спасибо за совет. Респект.

Local Port Chassis ID Remote Port ID System Name Port Description System Capabilities Management Address
2 00-1f-хх-хх-хх
(MAC-address) 24
(local) PROCURVE J9028B Port #24 Bridge(+) 192.168.0.10 (IPv4)
6 00-0c-хх-хх-хх
(MAC-address) 00-0c-хх-хх-хх
(MAC-address) dinamo.my.lan eth4 Bridge(-), WLAN Access Point(-), Router(-) 192.168.0.21 (IPv4)
24 00-1f-хх-хх-хх
(MAC-address) 2
(local) PROCURVE J9028B Port #2 Bridge(+) 192.168.0.10 (IPv4)
avatar

fredtz

  • 09 марта 2010, 11:01

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.