2017-11-08 4 views
0

私は、ネットワーク上のマシンにトラップを送信しようとすると、snmpv3用のpysnmpコードを実装しています。トラップがWiresharkで見られているのがわかりますが、トラップレシーバーには表示されません。コードは以下の通りである:私はてAuthKey、privKey、authProtocolとprivProtocolを削除するとPySNMP SNMPV3トラップが送信されていません

from pysnmp.hlapi import * 

errorIndication, errorStatus, errorIndex, varBinds = next(
    sendNotification(
     SnmpEngine(OctetString(hexValue='8000000001020304')), 
     UsmUserData('usr', authKey='authh', privKey='privv', 
        authProtocol=usmHMACSHAAuthProtocol, 
        privProtocol=usmAesCfb128Protocol), 
     UdpTransportTarget('192.168.1.79',162), 
     ContextData(), 
     'trap', 
     NotificationType(ObjectIdentity('SNMPv2-MIB', 'authenticationFailure')) 
    ) 
) 

if errorIndication: 
    print(errorIndication) 

は、私はトラップがトラップレシーバで受け取っれて見ることができますが、私はそれらすべてを置くとき、私はトラップが表示されません。

私の質問は以下のとおりです。

  1. は、Ubuntuのは、それを受け取るためにWindowsマシン用の161と162のポートを開く必要がありますか?
  2. Engine IDがハードコードされていても、認証なしでトラップを送信できますが、フル認証の場合は正しいEngine IDを持つ必要がありますか?トラップが現れないのはなぜですか?もしそうなら、誰かが受信システムのエンジンIDを見つけるのを案内できますか?
  3. Wiresharkは明らかにトラップが届いているので、トラップを表示するにはトラップレシーバの設定の問題だけですか?

これを手伝ってください。

ありがとうございます。

答えて

0

SNMPv3キーの長さが8文字以上であることを確認してください。これはSNMP標準に付属する要件です。

SNMPv3 TRAPを使用すると、暗号化機能を使用している場合、通知エンジン(スクリプト)と通知受信者の両方にSNMPエンジンIDを明示的に設定する必要があります。

通知元(任意のSNMPエンジンID)を通知元に設定する必要があります(これはこの交換の権限のある部分です)。その後、通知受信者に同じSNMPエンジンIDをUSMユーザーおよびキーと共に設定する必要があります。受信機のSNMPエンジンIDを把握する必要はありません。

プレーンテキストのトラップが通過するので、ファイアウォールの問題ではない可能性があります。

MD5認証と暗号化なし(authNoPriv)のような簡単な設定を試してみてください。通知受信者が新しいサイファースイートをサポートしていない場合に備えて

関連する問題