2017-01-24 12 views
0

SNMP V3で設定されたターゲットに対してSNMP4J(バージョン2.5.3)を使用してSNMPクエリを起動します。プライバシーAES 256プロトコル以外のauth/privプロトコルのすべての組み合わせでうまく動作します!私はヌル応答しか得られません。ここでSNMP4J - SHA/AESでSNMP V3を実行できません256

はコードです:

public static void main(String[] args) throws Exception 
{ 
    String targetAddress = "udp:10.2.1.41/161"; 
    String userName = "mip_aes256"; 
    OID authProtocol = AuthSHA.ID; 
    String authPassphrase = "mip_user_AuthPassword"; 
    OID privProtocol = PrivAES256.ID; 
    String privPassphrase = "mip_user_PrivPassword"; 

    // build a PDU with all the OIDs 
    ScopedPDU requestPDU = new ScopedPDU(); 
    requestPDU.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1.0"))); 
    requestPDU.setType(PDU.GET); 

    UserTarget target = new UserTarget(); 
    target.setTimeout(5000); 
    target.setVersion(SnmpConstants.version3); 
    target.setAddress(GenericAddress.parse(targetAddress)); 
    target.setSecurityLevel(SecurityLevel.AUTH_PRIV); 
    target.setSecurityName(new OctetString(userName)); 

    TransportMapping<UdpAddress> transport = new DefaultUdpTransportMapping(); 
    Snmp snmp = new Snmp(transport); 
    USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0); 
    SecurityModels.getInstance().addSecurityModel(usm); 

    // add user to the USM 
    snmp.getUSM().addUser(new OctetString(userName), 
      new UsmUser(new OctetString(userName), 
        authProtocol, 
        new OctetString(authPassphrase), 
        privProtocol, 
        new OctetString(privPassphrase))); 

    transport.listen(); 

    ResponseEvent re = snmp.send(requestPDU, target); 
    PDU responsePDU = re.getResponse(); 
    if (responsePDU == null) 
    { 
     System.out.println("responsePDU == null :"); 
     System.out.println("> Error  : " + re.getError()); 
     System.out.println("> Address  : " + re.getPeerAddress()); 
     System.out.println("> Source  : " + re.getSource()); 
     System.out.println("> User object : " + re.getUserObject()); 
    } 
    else if (responsePDU.getVariableBindings() != null) 
    { 
     for (VariableBinding vb : responsePDU.getVariableBindings()) 
     { 
      System.out.println(vb.getOid() + " --> " + vb.getVariable()); 
     } 
    } 
} 

私はルータの設定は、(Ciscoルータ上のネットワークプロバイダの設定)大丈夫ですかなり確信しています。私のJava 8インストール(Ubuntu 64上)には、無限の強さのためのJava暗号拡張が含まれています。 この問題についてご意見はありますか?

敬具 シルヴァン

答えて

1

SNMPv3のAES 256、あなたの助けをありがとうは非標準です。 snmpv3 aes 256のgoogleはこれを詳しく説明します。 私たちの経験では、すべての実装が相互運用するわけではありません。 これが標準化の目的です。

+0

ご返信ありがとうございます。私はAES 256が非標準だと理解していますが、SNMP4Jがそれをサポートしていれば、それはどういう意味ですか?いくつかの実装だけをサポートしますか?どれ ? – mnementh64

+0

彼らは何かを実装しました。他の誰か(あなたのデバイスベンダー)が他に何かを実装しました。それは非標準的なので、誰もが何かを理解するための厳格なプロセスを経ていません。 –

+0

このようなSNMP発信者を実装するのは本当に難しい作業です。私は各デバイスに専用のコードを考慮する必要がありますか?まず、デバイスベンダの実装パラメータを取得する必要があります。これを見つける方法?どのようにしてAES 256のサポートを発表することができましたか? – mnementh64

1

私はそれは私が誰かを助けることを願ってのCisco 2900

OID privProtocol = PrivAES256With3DESKeyExtension.ID; 
SecurityProtocols.getInstance().addPrivacyProtocol(new PrivAES256With3DESKeyExtension()); 

のために動作させるために変更を発見しました!

関連する問題