I6ptables规则阻止docker容器访问接口

I6ptables规则阻止docker容器访问接口

语境:

  • 多个 docker 容器监听所有接口
  • wg0具有 IPv6 地址的wireguard接口
  • 最终,NFS 为wg0客户端提供文件服务

问题:

后面的客户端wg0可以访问这些容器。我想避免这种情况,以及 docker 容器访问该接口后面的主机。

过滤掉它们的最简单方法是丢弃 docker 容器和 wireguard 接口之间的数据包。但是,以下规则不起作用:

iptables -I DOCKER-USER -i wg0 -j DROP

当我第一次写这个问题时,我不确定为什么,但事实证明wg0只使用 IPv6 地址,所以我需要使用规则ip6tables,但看起来DOCKER-USER链不存在在那里。


相关问题:这个使用了错误的输入链。那个本质上是同一个问题,但是以 apache-mesos 特定的方式制定的,我不想改变。


考虑的其他背景和解决方案

  • 可以说,这是一个防火墙问题,但我想知道为什么 iptable 规则不起作用。
  • 可以使用nftables或其他 BPF 工具指定此排除规则。我对语法很好奇
  • 命名空间可以发挥作用。我对它们还有很多问题,但为了简单起见,避免它们可能是明智的,而 wg-quick 不支持这些问题。我也不确定这是否会与 NFS 交互。
  • 我可以尝试阻止来自wireguard 主机的IP 范围。这听起来更复杂,也更难维护。
  • 容器服务可以监听特定的 IP。听起来不太灵活,也更难维护。

相关内容