将 ICMP Ping 数据包转发到接口

将 ICMP Ping 数据包转发到接口

我有一个监听 ICMP ping 数据包(包含数据有效负载)的脚本,虽然从命令行运行它可以工作,但它在 Docker 容器中不起作用,因为 ICMP ping 数据包不是从服务器实例路由的到容器。

它在 AWS 容器服务上运行,这使事情稍微复杂化。

我认为这将转发所有数据包

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

如何将到达实例的“eth0”接口的 ICMP ping(“echo”)数据包专门转发到 docker 容器的本地 IP 或虚拟接口(例如 172.0.0.1 或 veth*)。

答案1

诺欧

您不想阻止主机处理所有 ICMP 数据包。

看:过滤所有 ICMP 并观看世界燃烧

(我认为你想为容器分配一个真实的IP地址。

可能最简单的是使用 macvlan - 考虑到您还没有在 eth0 上使用桥接。您创建一个附加到 eth0 的 macvlan 并将其分配给容器。有一个名为 pipelinework 的脚本每个人都在使用,直到 Docker 解决了本机网络支持问题。还有 ipvlan(较新),以防您的网络不允许分配额外的 MAC 地址。 macvlan 的好处是它可以与 DHCP4 一起正常工作)。

相关内容