Как выборочно использовать несколько интерфейсов с Net-SNMP?

У меня есть этот параметр сети мониторинга для Net-SNMP 5.7.2.1, прослушивающий несколько интерфейсов Ethernet на моем домашнем шлюзе, но он будет принимать только следующую комбинацию из файла конфигурации snmpd.conf:

  • один IP-адрес
  • один IP-адрес, специфичный для протокола
  • один IP-адрес на уникальный протокол

такие как:

agentAddress  127.0.0.1:161

или же

agentAddress  udp:127.0.0.1:161

или же

agentAddress  udp:127.0.0.1:161,udp6:[::1],tcp:127.0.0.1:161


Но он не будет принимать несколько IP-адресов, используя один и тот же протокол, как указано ниже по желанию:

agentAddress  udp:127.0.0.1:161,udp:172.28.130.1:161

Как заставить SNMP-демон (snmpd) прослушивать ДВА (или более) интерфейса Ethernet

3 ответа

Решение

Я бы посоветовал вам изменить скрипт systemd, а не делать это вручную в командной строке.

Например, текущий snmpd.service, расположенный в /usr/lib/systemd/system/, содержит следующее:

[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon.
After=syslog.target network.target

[Service]
Type=notify
Environment=OPTIONS="-LS0-6d"
EnvironmentFile=-/etc/sysconfig/snmpd
ExecStart=/usr/sbin/snmpd $OPTIONS -f
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Просто измените эту строку "ExecStart", чтобы она содержала то, что вы хотите.

Например

ExecStart=/usr/sbin/snmpd $OPTIONS -f udp:127.0.0.1 udp:192.168.1.135:161 udp6:[::1]:161

NB: Я не проверял этот формат, возможно, он должен быть по-другому с "-f" в конце или что-то еще - протестировать и настроить. Само собой разумеется, что он должен работать, и тогда у вас есть все преимущества использования systemd (который в любом случае используется).

Этот фрагмент платформы был взят из CentOS 7.3, поэтому расположение snmpd.service может отличаться в зависимости от дистрибутива. Найдите свой, сделайте копию этого в файл.bak и измените оригинал - тест - наслаждайтесь.

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

Таким образом, вы можете добавить в файл конфигурации несколько строк с несколькими адресами агентов:

      agentAddress  udp:127.0.0.1:29032
agentAddress  udp:127.0.0.1:22032

Мне удалось протестировать это на своем собственном агенте, созданном с помощью NetSNMP...

      $ snmpget -v3 -u myUser -l noAuthNoPriv 127.0.0.1:22032 1.3.6.1.4.1.1234.1.1.1
SNMPv2-SMI::enterprises.1234.1.1.1 = INTEGER: 2

$ snmpget -v3 -u myUser -l noAuthNoPriv 127.0.0.1:29032 1.3.6.1.4.1.1234.1.1.1
SNMPv2-SMI::enterprises.1234.1.1.1 = INTEGER: 2

Видимо, единственный способ указать несколько интерфейсов для версии Net-SNMP 5.7.2.1 - это указать несколько IP-адресов в командной строке для snmpd.

Мне еще предстоит найти работоспособное решение для указания нескольких интерфейсов, используя файловый подход snmpd configuration (snmpd.conf).

# /usr/sbin/snmpd 127.0.0.1 192.168.1.1

Именно там (в командной строке) вы можете указать гранулярность протокола (и продолжать использовать один и тот же протокол для нескольких интерфейсов), например так:

# /usr/sbin/snmpd .... udp:127.0.0.1 udp:192.168.1.135:161 udp6:[::1]:161
Другие вопросы по тегам