Как выборочно использовать несколько интерфейсов с 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