Переносные пакеты ICMP Ping для интерфейса

У меня есть скрипт, который прослушивает пакеты ping ICMP (содержащие полезную нагрузку данных), и, хотя это работает, если вы запускаете его из командной строки, он не работает в контейнере Docker, потому что пакеты ping ICMP не маршрутизируются из экземпляра сервера к контейнеру.

Это работает в AWS Container Service, что немного усложняет ситуацию.

Я думаю, что это переведет все пакеты

sudo iptables -t nat -A POSTROUTING --out-interface veth* -j MASQUERADE sudo iptables -A FORWARD --in-interface eth1 -j ACCEPT 

Как пересылать специально пакеты ICMP ping («echo»), поступающие на интерфейс eth0 для экземпляра на локальный IP или виртуальный интерфейс контейнера докеров (например, 172.0.0.1 или veth *).

Нееет

Вы не хотите, чтобы все ICMP-пакеты обрабатывались хостом.

См.: Отфильтруйте все ICMP и посмотрите, как горит мир

(Я думаю, вы хотите назначить контейнер реальным IP-адресом.

Вероятно, проще всего использовать macvlan – учитывая, что вы еще не используете мосты на eth0. Вы создаете макрослан, прикрепленный к eth0, и назначаете его контейнеру. Существует сценарий, называемый pipework, который использует каждый, пока Docker не сортирует поддержку собственных сетей. Также есть ipvlan (новее), если ваша сеть не переносит назначение дополнительных MAC-адресов. Хорошая вещь о macvlan – это хорошо работает с DHCP4, хотя).