Переадресация UDP-порта не работает с Docker в Windows 10 - PullRequest
3 голосов
/ 20 сентября 2019

Я использую 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

хвататься за соломинкуна данном этапе!

...