DELL switch porta 6248 e mapeamento mac usando SNMP

2

Eu tenho um switch Dell 6248. Eu conecto alguns dos meus servidores a ele e quero saber qual servidor nic conectado a qual porta do switch. Eu tento usar snmpwalk para obter essa informação, mas eu só posso obter o mapeamento mac / ip do meu servidor nic a partir do switch, eu ainda não consigo ver qual porta de switch ele conecta.

Eu tento uma ferramenta chamada Managed Switch Port Mapping, que pode mostrar qual porta do switch está conectada a qual nic / ip. Eu uso o WireShare para obter todos os pacotes snmp, mas ainda não consigo encontrar qual é o snmp oid para obter essa informação.

Alguém sabe como conseguir isso?

    
por Brad 01.12.2010 / 10:47

3 respostas

4

Você precisa fazer um pouco de rastreamento no BRIDGE-MIB e no IF-MIB.

(Advertência: Eu não tenho o seu modelo de switch específico para testar, mas estes são MIBs padrão, então isso deve funcionar.)

Use dot1dTpFdbAddress (.1.3.6.1.2.1.17.4.3.1.1) do BRIDGE-MIB para encontrar os endereços MAC (o exemplo mostra uma única linha de saída snmpwalk para clareza, você provavelmente obtenha várias linhas retornadas):

>snmpwalk -v 2c -c public myswitch .1.3.6.1.2.1.17.4.3.1.1
SNMPv2-SMI::mib-2.17.4.3.1.1.0.20.124.62.198.161 = Hex-STRING: 00 14 7C 3E C6 A1

Pegue os números que seguem o OID de base (olhando para o exemplo, estou falando de 0.20.124.62.198.161). Use-os para encontrar o valor de dot1dTpFdbPort (.1.3.6.1.2.1.17.4.3.1.2), também do BRIDGE-MIB:

>snmpwalk -v 2c -c public myswitch .1.3.6.1.2.1.17.4.3.1.2
SNMPv2-SMI::mib-2.17.4.3.1.2.0.20.124.62.198.161 = INTEGER: 794

Pegue os valores inteiros de dot1dTpFdbPort (794 no exemplo) e use-os para encontrar o valor de dot1dBasePortIfIndex (.1.3.6.1.2.1.17.1.4.1.2), novamente em BRIDGE- MIB:

>snmpwalk -v 2c -c public myswitch .1.3.6.1.2.1.17.1.4.1.2
SNMPv2-SMI::mib-2.17.1.4.1.2.794 = INTEGER: 200

Esse valor é seu ifIndex (200 no exemplo). Use isso para extrair um valor amigo da humanidade de ifName (.1.3.6.1.2.1.31.1.1.1.1), do IF-MIB:

>snmpwalk -v 2c -c public myswitch .1.3.6.1.2.1.31.1.1.1.1
IF-MIB::ifName.200 = STRING: 4/20
    
por 06.12.2010 / 19:53
0

Se o seu objetivo é descobrir quais hosts estão conectados a quais portas, por que não efetuar login na interface de gerenciamento de switches (web ou cli) e examinar a tabela de endereços, que mostrará quais endereços MAC estão conectados a quais portas.

    
por 01.12.2010 / 13:13
0

código PHP que lhe dará o que você deseja:

<?php
$_snmp_ip = <ip>;
$_snmp_com = <community>;

$_dot1dTpFdbAddress = snmp2_real_walk($_snmp_ip, $_snmp_com, ".1.3.6.1.2.1.17.4.3.1.1.0");

foreach($_dot1dTpFdbAddress  as $_dot1dTpFdbAddress_key => $_dot1dTpFdbAddress_value)
{
        preg_match("/(\.[\d]*){6}$/i", $_dot1dTpFdbAddress_key, $_dot1dTpFdbAddress_key_unique);
        preg_match("/([0-9A-F ]*){6}$/i", $_dot1dTpFdbAddress_value, $_dot1dTpFdbAddress_value_unique);
        $_dot1dTpFdbPort = snmp2_get($_snmp_ip, $_snmp_com, ".1.3.6.1.2.1.17.4.3.1.2".$_dot1dTpFdbAddress_key_unique['0']);

        preg_match("/[\d]*$/i", $_dot1dTpFdbPort, $_dot1dTpFdbPort);
        $_dot1dBasePortIfIndex = snmp2_get($_snmp_ip, $_snmp_com, ".1.3.6.1.2.1.17.1.4.1.2.".$_dot1dTpFdbPort['0']);

        preg_match("/[\d]*$/i", $_dot1dBasePortIfIndex, $_dot1dBasePortIfIndex);
        $_ifName = snmp2_get($_snmp_ip, $_snmp_com, ".1.3.6.1.2.1.31.1.1.1.1.".$_dot1dBasePortIfIndex['0']);

        preg_match("/\"([^\"]*)\"$/i", $_ifName, $_ifName);

        $mac = str_replace(" ", ":", strtolower($_dot1dTpFdbAddress_value_unique['0']));
        $mac = ereg_replace("(^:|:$)","", $mac);
        $_mac[$mac] = $_ifName['1'];
}
print_r($_mac);
?>
    
por 19.03.2013 / 12:00