D-Link'и умеют отдавать свою fdb-таблицу по snmp параметрами
dot1dTpFdbAddress
dot1dTpFdbPort
1.3.6.1.2.1.17.4.3.<чего-то там> в численном эквиваленте
Пишем простенький скрипт для того чтобы брать FDB по snmp со свитча, готовый скрипт можно посмотреть тут:
http://www.hmepas.yauza.ru/snmp_get_fdb.pl
скачать архив со всеми нужными mib'ами можно по ссылке:
http://www.hmepas.yauza.ru/snmp_get_fdb.tar.gz
Далее смотрим:
Код:
# ifconfig eth0 | grep eth0
eth0 Link encap:Ethernet HWaddr 00:14:38:50:C0:4C
Есть два свитча оба висят на eth0 относительно машины с которой ведется лог.
Свитчи
172.19.0.10 -- Des3226S
172.19.0.25 -- Des3526S
Проверяем как работает наша утилита:
Код:
# ./snmp_get_fdb.pl 172.19.0.10 | grep 00:14:38:50:C0:4C
00:14:38:50:C0:4C 8
# ./snmp_get_fdb.pl 172.19.0.23 | grep 00:14:38:50:C0:4C
Error: no port for 00:14:38:50:C0:4C
При этом данная ситуация воспроизводима для всех наших свитчей, у нас порядка десяти des3226S и все они выдают fdb правильно, тогда как оба купленных 3526 выдают Error.
Т.е. 3526 не для всех dot1dTpFdbAddress (МАК-адресов) выдает
dot1dTpFdbPort (номер порта). Если просто запустить утилиту (без grep) то в выводе будет очень много Error.
snmpwalk'ом продемонстрировать не могу, не наглядно.