LINUX.ORG.RU
решено ФорумAdmin

Linux: SNMP+LLDP

 ,


0

1

Настроил на Linux snmpd - работает (можно смотреть с другого компа). Установил также и lldpd - прекрасно обнаруживает себя (со стороны маршрутизатора видится) и видит соседа (коммутатор).

А вот теперь самое сложное: как скрестить ежа с ужом? Нужно чтобы я по SNMP мог забрать ту инфу, которую lldpd собрал. Как это настраивать, у кого получалось?

P.S. Отдельно обе эти сущности работают замечательно.

Ответ на: комментарий от anonymous

man то откройте

man к чему? lldpd? snmpd? пока мне кажется это не просто, там какой-то протокол AgentX и не ясно что там главнее

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Какая разница, включите с двух сторон и используйте. А если хотите узнать, что к чему, так у net-snmp на этот счет цельный сайт есть с буковками и даже иногда с картинками.

hizel ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

для реализации агентов есть готовые модули на перле NetSNMP::agent

на «net-snmp agent example» гуглится достаточно простых для понимания примеров

vel ★★★★★
()

Зачем это вообще надо? У твоего сервера что, много соседей, инфу о которых тебе может дать LLDP? Может лучше таки собирать эту инфу со свичей?

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

У твоего сервера что, много соседей, инфу о которых тебе может дать LLDP? Может лучше таки собирать эту инфу со свичей?

Как минимум два, есть два интерфейса. Просто хочется 100% однообразия решений.

Пока что да - мой рабочий план это собирать именно со свичей, а у меня их несколько уровней. Я делаю интерактивную карту-топологию в довесок к остальному проекту, типа диагностика, чтобы было видно какие есть каналы, их агрегирование и т.д. Просто готовые решения есть, но они не будут гармоничны в рамках моего проекта - проще самому.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Как минимум два, есть два интерфейса.

Ну эти интерфейсы, я надеюсь, в свичи идут? Или там какая-то хитрая топология? Ты запусти на серверах lldpd и пусть он свои пакеты свичам шлёт - а с них уже тащи по SNMP, или как там они умеют отдавать, кто куда подключен. Зачем решать задачу с конца, то бишь per rectum, я не совсем понимаю.

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

Ты запусти на серверах lldpd и пусть он свои пакеты свичам шлёт

Уже шлет.

а с них уже тащи по SNMP, или как там они умеют отдавать, кто куда подключен. Зачем решать задачу с конца, то бишь per rectum, я не совсем понимаю

Именно на свичи у меня основной расчет. В одном из проектов несколько десятков роутеров в три уровня, а в некоторых проектах - тупо связь между промышленными ПК, т.е. нет вообще свичей, но зато везде Linux и потому если поднять там snmpd+lldpd то будет универсальный подход - ибо везде SNMP и LLDP.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle

Настроил всё как написано: /etc/snmp/snmpd.conf:

...
                                           #  Run as an AgentX master agent
 master          agentx
                                           #  Listen for network connections (from localhost)
                                           #    rather than the default named socket /var/agentx/master
agentXSocket    tcp:localhost:705
netstat -an | grep 705
tcp        0      0 127.0.0.1:705           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:49547         127.0.0.1:705           ESTABLISHED
tcp        0      0 127.0.0.1:705           127.0.0.1:49547         ESTABLISHED
/etc/default/lldpd:
# Uncomment to start SNMP subagent and enable CDP, SONMP and EDP protocol
DAEMON_ARGS="-x -X tcp:127.0.0.1:705 -c -s -e"

И вроде всё чисто по коннектам окей, но «iReasoning Mib Browser» показывает что «No data available» для ветки LLDP. Может чего-то не хватает со стороны snmpd? Какие-то файлы может не лежат?

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle

В общем, я делал так же как и тут: http://stackoverflow.com/questions/19467166/snmp-over-lldp-in-a-linux-distro

И MIBов накачал.

snmptranslate -m +LLDP-MIB -IR -On lldpRemoteSystemsData
/etc/snmp/snmp.conf: line 1: Warning: Unknown token: rocommunity.
/etc/snmp/snmp.conf: line 2: Warning: Unknown token: syslocation.
/etc/snmp/snmp.conf: line 3: Warning: Unknown token: syscontact.
.1.0.8802.1.1.2.1.4
Переводит правильно.

snmpwalk -m +LLDP-MIB -v 2c -c public 127.0.0.1 lldpRemoteSystemsData
/etc/snmp/snmp.conf: line 1: Warning: Unknown token: rocommunity.
/etc/snmp/snmp.conf: line 2: Warning: Unknown token: syslocation.
/etc/snmp/snmp.conf: line 3: Warning: Unknown token: syscontact.
LLDP-MIB::lldpRemoteSystemsData = No Such Object available on this agent at this OID

Вот и через консоль тоже... No Such Object available.

Даже если обратиться по OID номеру - результат один.

Нигде не гуглится решение проблемы, но ведь для чего-то это всё сделано чтобы работало у всех, тогда что же я делаю не так?..

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Какие oid трогаем? У мну все работает:

$snmpwalk -v2c -M/usr/local/share/snmp/mibs -mLLDP-MIB -c public2 127.0.0.1 1.0.8802.1.1.2
LLDP-MIB::lldpMessageTxInterval.0 = INTEGER: 30 seconds
LLDP-MIB::lldpMessageTxHoldMultiplier.0 = INTEGER: 4
LLDP-MIB::lldpReinitDelay.0 = INTEGER: 1 seconds
LLDP-MIB::lldpTxDelay.0 = INTEGER: 1 seconds
LLDP-MIB::lldpNotificationInterval.0 = INTEGER: 5 seconds
LLDP-MIB::lldpStatsRemTablesLastChangeTime.0 = Timeticks: (83300) 0:13:53.00
bla bla bla

hizel ★★★★★
()
Ответ на: комментарий от hizel

Я понять не могу вот что: эти MIBs должны быть и на стороне клиента и на стороне сервера??? Или MIB это лишь символьная расшифровка этих OID в цифровой форме чтобы знать что они значат, а значит если они не лежат на сервере - то не страшно? Не удается понять в чем же проблема, ведь TCP соединения установлены - видно. Значит некая связь есть между lldpd и snmpd.

Вот эта же команда и этот OID с коммутатором:

snmpwalk -v2c -M/usr/share/snmp/mibs -mLLDP-MIB -c public 192.168.2.1 1.0.8802.1.1.2
MIB search path: /usr/share/snmp/mibs
Cannot find module (SNMPv2-TC): At line 7 in /usr/share/snmp/mibs/lldp.mib
Cannot find module (SNMP-FRAMEWORK-MIB): At line 9 in /usr/share/snmp/mibs/lldp.mib
Cannot find module (RMON2-MIB): At line 13 in /usr/share/snmp/mibs/lldp.mib
Cannot find module (IANA-ADDRESS-FAMILY-NUMBERS-MIB): At line 15 in /usr/share/snmp/mibs/lldp.mib
Did not find 'TimeStamp' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'TruthValue' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'SnmpAdminString' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'TimeFilter' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'ZeroBasedCounter32' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'AddressFamilyNumbers' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
/etc/snmp/snmp.conf: line 1: Warning: Unknown token: rocommunity.
/etc/snmp/snmp.conf: line 2: Warning: Unknown token: syslocation.
/etc/snmp/snmp.conf: line 3: Warning: Unknown token: syscontact.
LLDP-MIB::lldpMessageTxInterval.0 = INTEGER: 30 seconds
LLDP-MIB::lldpMessageTxHoldMultiplier.0 = INTEGER: 4
LLDP-MIB::lldpReinitDelay.0 = INTEGER: 2 seconds
LLDP-MIB::lldpTxDelay.0 = INTEGER: 2 seconds
LLDP-MIB::lldpNotificationInterval.0 = INTEGER: 5 seconds
LLDP-MIB::lldpPortConfigPortNum.1 = INTEGER: 1
LLDP-MIB::lldpPortConfigPortNum.2 = INTEGER: 2
LLDP-MIB::lldpPortConfigPortNum.3 = INTEGER: 3
LLDP-MIB::lldpPortConfigPortNum.4 = INTEGER: 4
LLDP-MIB::lldpPortConfigPortNum.5 = INTEGER: 5
...
Как видно - всё работает идеально.

А вот с компом, на котором я пытаюсь скрестить lldpd и snmpd:

snmpwalk -v2c -M/usr/share/snmp/mibs -mLLDP-MIB -c public 192.168.2.100 1.0.8802.1.1.2
MIB search path: /usr/share/snmp/mibs
Cannot find module (SNMPv2-TC): At line 7 in /usr/share/snmp/mibs/lldp.mib
Cannot find module (SNMP-FRAMEWORK-MIB): At line 9 in /usr/share/snmp/mibs/lldp.mib
Cannot find module (RMON2-MIB): At line 13 in /usr/share/snmp/mibs/lldp.mib
Cannot find module (IANA-ADDRESS-FAMILY-NUMBERS-MIB): At line 15 in /usr/share/snmp/mibs/lldp.mib
Did not find 'TimeStamp' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'TruthValue' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'SnmpAdminString' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'TimeFilter' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'ZeroBasedCounter32' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
Did not find 'AddressFamilyNumbers' in module #-1 (/usr/share/snmp/mibs/lldp.mib)
/etc/snmp/snmp.conf: line 1: Warning: Unknown token: rocommunity.
/etc/snmp/snmp.conf: line 2: Warning: Unknown token: syslocation.
/etc/snmp/snmp.conf: line 3: Warning: Unknown token: syscontact.
LLDP-MIB::lldpMIB = No Such Object available on this agent at this OID
Папапачиму?!?!

Кстати... И тот же комп 2.100 но другая ветка:

snmpwalk -v2c -M/usr/share/snmp/mibs -mLLDP-MIB -c public 192.168.2.100 .1.3.6.1.2.1.1.1.0
MIB search path: /usr/share/snmp/mibs
...
iso.3.6.1.2.1.1.1.0 = STRING: "Linux ... 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64"

I-Love-Microsoft ★★★★★
() автор топика
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

MIB это лишь символьная расшифровка этих OID в цифровой форме чтобы знать что они значат, а значит если они не лежат на сервере - то не страшно?

this

Папапачиму?!?!

Проверить настройки своего snmpd сервера, чо, например из коробки для public стоит ограничения в современном net-snmp.

hizel ★★★★★
()
Ответ на: комментарий от hizel

Проверить настройки своего snmpd сервера, чо, например из коробки для public стоит ограничения в современном net-snmp.

ДААА!!! Точно. Вот почему когда "-c public2" всё работает, а просто public - нет.

#rocommunity public  default    -V systemonly
rocommunity public default
После такой модификации snmpd.conf всё работает!

snmpwalk -v2c -M/usr/share/snmp/mibs -mLLDP-MIB -c public 192.168.2.100 1.0.8802.1.1.2
MIB search path: /usr/share/snmp/mibs
...
LLDP-MIB::lldpMessageTxInterval.0 = INTEGER: 30 seconds
LLDP-MIB::lldpMessageTxHoldMultiplier.0 = INTEGER: 4
LLDP-MIB::lldpReinitDelay.0 = INTEGER: 1 seconds
LLDP-MIB::lldpTxDelay.0 = INTEGER: 1 seconds

Благодарю! Я бы не смог сам допереть, уже надежду терял!

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от vel

hizelПомимо перла (а я этот язык не знаю совершенно), оказывается можно делать свои OID при помощи обычных bash-скриптов! 22.6.5.1. Extending Net-SNMP with Shell Scripts

shit.sh:

#!/bin/bash
echo "SNMP_shit_from_script"

/etc/snmp/snmpd.conf:

...
 extend    shit1   /bin/echo "SNMP_shit1"
 extend-sh shit2   /bin/bash /usr/local/bin/shit.sh
...

snmpwalk -v2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects
...
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."shit1" = STRING: SNMP_shit1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."shit2" = STRING: SNMP_shit_from_script
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."test1" = STRING: Hello, world!
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."test2" = STRING: Hello, world!
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."shit1" = STRING: SNMP_shit1
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."shit2" = STRING: SNMP_shit_from_script
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."test1" = STRING: Hello, world!
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."test2" = STRING: Hello, world!
...

Получение OID (цифрового адреса):

snmptranslate -m +LLDP-MIB -IR -On NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"shit2\"
[b].1.3.6.1.4.1.8072.1.3.2.3.1.2.5.115.104.105.116.50[/b]

Готово:

snmpwalk -v2c -c public localhost 1.3.6.1.4.1.8072.1.3.2.3.1.2.5.115.104.105.116.50
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."shit2" = STRING: SNMP_shit_from_script

Ну и из обычного C++-кода клиента на базе библиотеки SNMP++ тоже всё работает - от сервера приходит строка.

I-Love-Microsoft ★★★★★
() автор топика
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Воу воу, man snmpd открыл? Достаточно немного помыслить и найдешь чем такой способ посасывает у agent-ов.

hizel ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Мне лишь бы работало...

А, тогда не думай

hizel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.