Глоссарий:
- 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
После перезапуска устройства отобразятся в разделе "Устройства".