Использование SNMP для получения IP-и MAC-адресов напрямую подключенных компьютеров к устройству SNMP

#networking #snmp

#сеть #snmp

Вопрос:

Как получить IP-адрес подключенного компьютера и Mac-адрес SNMP-устройства.

Кэш ARP не предоставляет правильных сведений.

Комментарии:

1. вы пытаетесь получить это из результата языка программирования или из командной строки или cmd?

Ответ №1:

Пример для команд оболочки Linux (на момент написания нет тега для других языков или Windows)

При условии, что на компьютере, который вы хотите запросить, действительно запущен демон SNMP (обычно snmpd из Net-SNMP под Linux) и что вы знаете, как с ним можно разговаривать (версии 1, 2c или 3 с различными именами сообщества или именами пользователей / паролями / кодировкой для версии v3), вы можете отправлять следующие запросы SNMP:

Для теста я запустил snmpd на виртуальной машине CentOS 7, основным адресом которой был 192.168.174.128.

Я выбираю порт 1610 вместо традиционного 161, чтобы не использовать sudo или setcap (snmpd). Содержимое файла snmpd.conf выходит за рамки этого вопроса.

Это первое для IP-адресов

 snmptable -v 2c -c private 192.168.174.128:1610 ipAddrTable 

SNMP table: IP-MIB::ipAddrTable

    ipAdEntAddr ipAdEntIfIndex ipAdEntNetMask ipAdEntBcastAddr ipAdEntReasmMaxSize
      127.0.0.1              1      255.0.0.0                0                   ?
  192.168.122.1              3  255.255.255.0                1                   ?
192.168.174.128              2  255.255.255.0                1                   ?
  

Вторая команда (с напечатанными только 3 столбцами) для MAC

 snmptable -v 2c -c private 192.168.174.128:1610 ifTable | awk -c '{print $1 "t" $2 "tt" $6}'
SNMP    table:      

ifIndex ifDescr     ifPhysAddress
1       lo          up
2       ens33       0:c:29:53:aa:c6
3       virbr0      52:54:0:e6:6b:2f
4       virbr0-nic      52:54:0:e6:6b:2f
  

Когда мы проверяем в CentOS 7, мы получаем

 ifconfig
ens33: ...  mtu 1500
    inet 192.168.174.128  netmask 255.255.255.0  broadcast 192.168.174.255
    inet6 ...
    ether 00:0c:29:53:aa:c6 netmask 255.0.0.0
    ...

lo: ...  mtu 65536
    inet 127.0.0.1
    ...

virbr0: ...  mtu 1500
    inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
    ether 52:54:00:e6:6b:2f ...
    ...
  

Дополнительная команда командной строки:

 snmptranslate -Oaf IF-MIB::ifTable
.iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable
  

и

 snmptranslate -Oaf IP-MIB::ipAddrTable
.iso.org.dod.internet.mgmt.mib-2.ip.ipAddrTable
  

Я не знаю, почему / если существует одна таблица, содержащая обе информации.