如何限制 LXD 客户机使用单个公共 IP 地址?

如何限制 LXD 客户机使用单个公共 IP 地址?

我在 Ubuntu 14.04 Server 主机上有一个 Ubuntu 14.04 LXD 容器(使用 lxd-git-master PPA)。我想阻止它访问任何其他容器或通过除特定 /32 块(即一个 IP)之外的任何 IP 范围与公共互联网通信。此 IP 静态路由到数据中心中的服务器,我需要能够指定 IP、子网和默认网关。

我读到 LXD 本身不具备网络功能,那么什么程序/实用程序具体来说以直接方式安装和配置是否最容易明确地配置这一点?

PS 我需要它能够绑定到该 IP 地址上所有可能的 TCP 和 UDP 端口,如果主持人当启动绑定在 0.0.0.0 上的进程时,不会尝试绑定到 IP。

答案1

您可能希望将该公共 IP 路由到您的容器,因此请确保主机本身的网络配置中没有该 IP,然后执行以下操作:

ip route add IP/32 via CONTAINER-IP dev lxcbr0

然后,您可以通过将其添加到 eth0 部分下的网络配置中,将公共 IP 添加到容器的网络配置中:

post-up ip addr add IP/32 dev eth0

此时您应该能够使用公共 IP ping 容器。

您需要确保主机不会对来自该 IP 的流量进行 NAT,至于限制容器对其他资源的访问,您必须使用主机上的 iptables 来执行此操作。请注意,Linux 桥接的一个优点是 iptables 确实会在桥内流量上被调用,因此您可以完全阻止容器访问任何邻居。

相关内容