Я использую Docker-контейнер для snmptrapd.Он отлично работает на хосте Linux (Ubuntu 18.04), но не на Windows (10 Pro).
Dockerfile:
FROM alpine:3.8
RUN apk --no-cache add net-snmp
COPY mibs/ /usr/share/snmp/mibs
COPY snmptrapd.conf /etc/snmp/snmptrapd.conf
COPY snmp.conf /etc/snmp/snmp.conf
EXPOSE 162/udp
ENTRYPOINT ["snmptrapd","-L","o","-f"]
Мы также перенаправляем порт UDP 162 в команде запуска Docker:
docker run -d --rm -p 162:162/udp snmp_server
Имитируемая ловушка SNMP, исходящая изнутри хоста Windows, правильно достигает контейнера. Но любая ловушка, исходящая из-за пределов хоста Windows, не достигает контейнера.
Это не проблема брандмауэра Windows, потому что я могу запустить Wireshark на хосте Windows и увидеть прибывающие ловушки,порт назначения UDP 162, как и ожидалось.
После запуска контейнера netstat в Windows показывает, что на UDP-порту 162 имеется прослушиватель, связанный со всеми интерфейсами:
netstat -ano | findstr 162
UDP 0.0.0.0:162 *:* 13952
UDP [::]:162 *:* 13952
ВнутриКонтейнер, netstat показывает, что на UDP-порту 162 есть прослушиватель, связанный со всеми интерфейсами.
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 0.0.0.0:snmptrap 0.0.0.0:*
Версия Docker 19.03.1, сборка 74b1e89
Я пытался:
- - сеть = хост вместо режима моста по умолчанию;
- - привилегированный
- - cap-add NET_BROADCAST
хвататься за соломинкуна данном этапе!