Назад | Перейти на главную страницу

Node.js UDP-прослушиватель внутри контейнера Docker ненадежно сообщает IP-адрес источника пакетов

У меня есть приложение Node.JS, получающее UDP-пакеты, которые я недавно переместил в контейнер Docker для упрощения развертывания. Приложение полагается на различение нескольких потоков UDP на основе IP-адреса источника (с использованием rinfo.address в событии "сообщение").

Для некоторых из этих потоков исходный IP-адрес указывается как 172.17.0.1, который является просто IP-адресом «снаружи», как видно изнутри контейнера Docker.

Как я могу надежно получить фактический IP-адрес источника UDP-пакетов внутри контейнера Docker?

Я нашел решение, но мое понимание его ограничено.

Бег sudo conntrack -D -p udp в хосте, очевидно, что-то сбрасывает и позволяет сообщать реальные IP-адреса источника.

Очевидно, это нужно сделать после любого перезапуска контейнера.

Кредиты: https://github.com/moby/moby/issues/8795#issuecomment-64946289