Глоссарий:
- LLDP (Link Layer Discovery Protocol) — протокол канального уровня, который обеспечивает анонс информации об устройстве для управляющих сущностей в текущем сегменте;
- Агент — посредник, который выполняет функцию передачи данных для заданного протокола (пример: LLDP-агент);
- CDP (Cisco Discovery Protocol) — проприетарный протокол канального уровня, который обеспечивает анонс информации об устройстве производства Cisco для управляющих сущностей в текущем сегменте;
- SNMP (Simple Network Management Protocol) — протокол управления, организующий доступ к информации устройства;
- AuP (AutoProvision) — система программного конфигуратора телефонных аппаратов;
- SW (switch) — коммутатор;
- ТА — телефонный аппарат.
Начиная с версии AuP 2.5, реализована поддержка устройств, работающих в рамках вспомогательных протоколов LLDP (CDP). Для организации опознания и работы ТА в нескольких сегментах сети, отличных от сегмента AuP, необходимо использовать устройства с поддержкой LLDP и SNMP протокола. Таким образом, Discovery-информацию таких устройств можно получить по соответствующим агентам, в роли которых может выступать оборудование Eltex либо сервер, с настроенным программным обеспечением (например: lldpd и snmpd), находящийся в том же сегменте, что и целевое устройство.
Ниже представлена схема работы агентов с получением LLDP через SNMP в связке с сервером:
Необходимо учитывать, что данные обновляются в режиме запрос-ответ, а значит присутствует задержка и настройка происходит интервалами.
В данном примере сеть поделена на 3 сегмента:
- Первый — посредником между AuP и SIP Phone 1 выступает SW2 — коммутатор со встроенным агентом SNMP;
- Второй — посредником выступает настроенным в этой сети программный агент (LLDP Agent);
- Третий — сам AuP, который выполняет обслуживание ТА.
Настройка телефонного аппарата
Телефонный аппарат в данном случае настраивается стандартным методом. В частности, на телефонах производства Cisco, в настройках секции TFTP необходимо указать IP адрес AuP.
Настройка агента
- Стандартными средствами произведите установку lldpd и snmpd на сервер, который будет выступать в роли LLDP-агента (далее по тексту — «агент»):
apt install lldpd snmpd
- Произведите настройку взаимодействия lldpd и snmpd по протоколу AgentX. Для этого в конфигурации:
sudo nano /etc/snmp/snmpd.conf
необходимо включить поддержку AgentX в режиме мастера. При необходимости настройте следующие параметры авторизации:
# snmpd.conf
# An example configuration file for configuring the Net-SNMP agent ('snmpd')
# See snmpd.conf(5) man page for details
#
###########################################################################
# SECTION: System Information Setup
#
# syslocation: The [typically physical] location of the system.
# Note that setting this value here means that when trying to
# perform an snmp SET operation to the sysLocation.0 variable will make
# the agent return the "notWritable" error code. IE, including
# this token in the snmpd.conf file will disable write access to
# the variable.
# arguments: location_string
sysLocation Sitting on the Dock of the Bay
sysContact Me <me@example.org>
# sysservices: The proper value for the sysServices object.
# arguments: sysservices_number
sysServices 72
###########################################################################
# SECTION: Agent Operating Mode
#
# This section defines how the agent will operate when it
# is running.
# master: Should the agent operate as a master agent or not.
# Currently, the only supported master agent type for this token
# is "agentx".
#
# arguments: (on|yes|agentx|all|off|no)
master agentx
# agentaddress: The IP address and port number that the agent will listen on.
# By default the agent listens to any and all traffic from any
# interface on the default SNMP port (161). This allows you to
# specify which address, interface, transport type and port(s) that you
# want the agent to listen on. Multiple definitions of this token
# are concatenated together (using ':'s).
# arguments: [transport:]port[@interface/address],...
agentaddress udp:0.0.0.0:161
###########################################################################
# SECTION: Access Control Setup
#
# This section defines who is allowed to talk to your running
# snmp agent.
# Views
# arguments viewname included [oid]
# system + hrSystem groups only
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
# rocommunity: a SNMPv1/SNMPv2c read-only access community name
# arguments: community [default|hostname|network/bits] [oid | -V view]
# Read-only access to everyone to the systemonly view
rocommunity public default
#rocommunity6 public default -V systemonly
# SNMPv3 doesn't use communities, but users with (optionally) an
# authentication and encryption string. This user needs to be created
# with what they can view with rouser/rwuser lines in this file.
#
# createUser username (MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224) authpassphrase [DES|AES] [privpassphrase]
# e.g.
# createuser authPrivUser SHA-512 myauthphrase AES myprivphrase
#
# This should be put into /var/lib/snmp/snmpd.conf
#
# rouser: a SNMPv3 read-only access username
# arguments: username [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]
rouser authPrivUser authpriv -V systemonly
- Настройте параметры запуска lldpd, вводя команду с указанием отправки в snmpd информации:
nano /etc/default/lldpd
- В файл необходимо добавить настройки:
# Uncomment to start SNMP subagent and enable CDP, SONMP and EDP protocol DAEMON_ARGS="-r -k -c -x -I eth0,eth2 -X /var/agentx/master"
В примере выше "eth0, eth2" перечисляются названия интерфейсов. Необходимо указать названия интерфейсов, с которых будет производиться работа.
- После настройки выполняем перезапуск systemd сервисов snmpd и lldpd:
sudo systemctl restart snmpd.service lldpd.service
Также имеется возможность настройки snmpd в режиме proxy agent. Это необходимо для тех случаев, когда AuP должен обращаться только к одному SNMP - endpoint в сети.
В таком случае на сети ставится промежуточный хост с snmpd, к которому обращается AuP. Он выступает в качестве прокси для других SNMP-агентов в сети.
Конфигурационный файл (/etc/snmp/snmpd.conf) snmpd выглядит следующим образом:
# EXAMPLE.conf:
# An example configuration file for configuring the Net-SNMP agent ('snmpd')
# See the 'snmpd.conf(5)' man page for details
#
# Some entries are deliberately commented out, and will need to be explicitly activated
#
###############################################################################
#
# AGENT BEHAVIOUR
#
# Listen for connections from the local system only
#agentAddress udp:127.0.0.1:161
agentaddress udp:0.0.0.0:161
# Listen for connections on all interfaces (both IPv4 *and* IPv6)
#agentAddress udp:161,udp6:[::1]:161
###############################################################################
#
# SNMPv3 AUTHENTICATION
#
# Note that these particular settings don't actually belong here.
# They should be copied to the file /var/net-snmp/snmpd.conf
# and the passwords changed, before being uncommented in that file *only*.
# Then restart the agent
# createUser authOnlyUser MD5 "remember to change this password"
# createUser authPrivUser SHA "remember to change this one too" DES
# createUser internalUser MD5 "this is only ever used internally, but still change the password"
# If you also change the usernames (which might be sensible),
# then remember to update the other occurances in this example config file to match.
###############################################################################
#
# ACCESS CONTROL
#
# system + hrSystem groups only
# view systemonly included .1.3.6.1.2.1.1
# view systemonly included .1.3.6.1.2.1.25.1
# view all included .1
view lldpview included .1.0.8802.1.1.2.1.4
# Full access from the local host
# rocommunity public localhost
# Default access to basic system info
#rocommunity public default -V systemonly
rocommunity public default
rocommunity public default -V lldpview
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
access notConfigGroup "" any noauth exact lldpview none none
com2sec -Cn ctx_remotehost1 notConfigUser default cmty_remotehost1
com2sec -Cn ctx_remotehost2 notConfigUser default cmty_remotehost2
com2sec -Cn ctx_remotehost3 notConfigUser default cmty_remotehost3
access notConfigGroup ctx_remotehost any noauth prefix lldpview none none
proxy -Cn ctx_remotehost1 -v 2c -c public 10.25.88.89 1.0.8802.1.1.2.1.4
proxy -Cn ctx_remotehost2 -v 2c -c public 10.25.88.21 1.0.8802.1.1.2.1.4
proxy -Cn ctx_remotehost3 -v 2c -c public 192.168.23.12 1.0.8802.1.1.2.1.4
master agentx
# Listen for network connections (from localhost)
# rather than the default named socket /var/agentx/master
#agentXSocket tcp:localhost:705
# agentXSocket tcp:0.0.0.0:705
Настройка AuP
Для настройки SNMP на AuP необходимо дополнить конфигурационный файл:
sudo nano aup/stable/volumes/prod/configs/core/config.yaml
- Между секциями device_info и arp вставьте нижеописанные настройки:
device_info:
snmp:
prune_ttl: 60000
polling_period: 1000
endpoints:
- uri: "snmp://<SWITCH_IP_ADDRESS>"
credential:
community: "<COMMUNITY_NAME>"
lldpRemoteSystemsDataOID: "1.0.8802.1.1.2.1.4"
- Вместо <Agent_IP ADDRESS> укажите IP-адрес агента. После сохранения конфигурации перезапустите ядро AuP:
docker restart autoprovision-unstable_core_1
После перезапуска устройства отобразятся в разделе "Устройства".
