CentOS 서버(7.2)가 있습니다. SNMP 트랩 수신기로 구성하려고 합니다.
내 snmptrapd 구성에서는 매우 기본적인 쉘 스크립트를 호출하여 트랩이 수신되었는지 확인합니다.
[root@centos-Main snmp]# cat /etc/snmp/snmptrapd.conf
authCommunity log,execute,net public
traphandle default /etc/snmp/mydummyhandler.sh
mydummyhandler.sh는 다음과 같습니다.
[root@centos-Main snmp]# cat mydummyhandler.sh
echo "Trap Received" >> /var/log/snmptraplog.txt
그러나 Juniper 라우터에서 트랩이 전송되면 내 snmptrapd는 이를 처리하지 않고 /var/log/snmptraplog.txt에 아무 것도 쓰지 않습니다.
localhost 자체에서 일부 테스트 트랩을 보냈는데 예상대로 정확하게 작동했습니다. 또한 이를 확인하기 위해 다음과 같이 다른 CentOS 서버에서 테스트 트랩을 보내 보았습니다.
snmptrap -v 2c -c public centos-Main .1.3.6.1.6.3.1.1.5.3 .1.3.6.1.6.3.1.1.5.3 \
> ifIndex i 2 ifAdminStatus i 1 ifOperStatus i 1
또한 예상대로 처리되었습니다.
[root@centos-Main snmp]# cat /var/log/snmptraplog.txt
Trap Received
트랩 수신 서버의 포트 162에서 tcpdump를 실행했는데 Juniper 스위치에서 보낸 트랩이 서버에 도착하는 것을 발견했습니다. 그러나 어떤 이유로든 추가 처리 없이 Juniper 장치에서 들어오는 트랩을 자동으로 무시합니다.
Juniper 디바이스에서 트랩을 보낼 때 표시되는 내용은 다음과 같습니다.
[root@centos-Main snmp]# tcpdump -i enp0s3 port 162
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:54:14.521820 IP 192.168.0.91.58376 > centos-Main.snmptrap: C=VINOD V2Trap(217) system.sysUpTime.0=1768202 S:1.1.4.1.0=E:2636.4.13.0.1 E:2636.3.37.1.1.0="'Event-Trap'" E:2636.3.37.1.2.1.2.1="'event'" E:2636.3.37.1.2.1.3.1="''" E:2636.3.37.1.2.1.2.2="'message'" E:2636.3.37.1.2.1.3.1="''" S:1.1.4.3.0=E:2636.1.1.1.2.1
또한 비교를 위해 트랩을 성공적으로 수신한 다른 서버의 tcpdump 출력을 붙여넣었습니다.
[root@centos-Main snmp]# tcpdump -i enp0s3 port 162
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:53:23.272673 IP 192.168.0.105.49182 > centos-Main.snmptrap: V2Trap(87) S:1.1.4.1.0=S:1.1.5.3 interfaces.ifTable.ifEntry.ifIndex=2 interfaces.ifTable.ifEntry.ifAdminStatus=1 interfaces.ifTable.ifEntry.ifOperStatus=1
답변1
snmptrapd
커뮤니티 이름이 있는 트랩만 허용하도록 설정했습니다 public
.
[root@centos-Main snmp]# cat /etc/snmp/snmptrapd.conf
authCommunity log,execute,net public
그러나 Juniper 장치의 트랩은 커뮤니티 이름을 사용합니다 VINOD
.
[root@centos-Main snmp]# tcpdump -i enp0s3 port 162
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:54:14.521820 IP 192.168.0.91.58376 > centos-Main.snmptrap: C=VINOD V2Trap(217) ...
^^^^^^^
Juniper 장치의 트랩 커뮤니티 이름을 로 구성하거나 public
파일에 다른 authCommunity
줄을 추가해야 합니다 snmptrapd.conf
.
authCommunity log,execute,net VINOD