gpt4 book ai didi

docker - iptables 不适用于容器中的 macvlan 流量

转载 作者:行者123 更新时间:2023-12-04 03:21:59 27 4
gpt4 key购买 nike

我有一台主机,只有一个接口(interface) eth0,IP 10.0.10.10/24。我启动docker,添加一个容器,没有网络。然后,我在 eth0 上创建了一个 macvlan 设备,为其指定 IP 10.0.10.20/24,并将其放入容器中。

主机和容器现在都具有完整的网络访问权限。

然后我在主机上创建一个 iptables 规则以丢弃所有进出容器 IP 10.0.10.20 的流量。规则不起作用,流量通过。

当然,如果我在容器内执行此操作(ip netns exec $PID iptables ... 或通过赋予容器 NET_ADMIN 功能),它会起作用.

底层主机的iptables规则不应该过滤流量吗?

最佳答案

答案是:你做不到。使用网桥时,流量会进出主机,因此会到达主机的 ip 堆栈。当您使用 macvlan 时,唯一的 ip 堆栈是容器中的那个,因此永远不会调用主机上的 iptables 规则。

唯一的方法是更改​​容器内部的 iptables 规则。

如果你不想给容器访问权限,例如如果你想控制容器,那么从主机本身使用 ip netns exec ...,这将控制容器中的 iptables 规则,而不给容器本身控制权。

我写了一个脚本来做到这一点。可在 https://github.com/deitch/ctables 获得并获得麻省理工学院许可。

关于docker - iptables 不适用于容器中的 macvlan 流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35695840/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com