我在一台服务器上有两组 lxc 容器,出于安全原因,我想隔离它们的网络流量。我将使用端口转发,这样每个容器都必须有单独的 IP。我知道我必须对两个组进行子网划分,并打算为每个组分配一个 /29 Cidr。我还假设我需要将每个子网放在自己的 VLAN 上。
但是我不确定 Veth#、bridge、vlan 和主机 NIC 需要如何安排,以及有哪些选项(如果有的话)?
理想情况下,我希望将 VLAN 仅限制在服务器上,这样主机网卡就可以接收来自路由器/防火墙的未加标签的转发数据包。然后,当它们从主机网卡通过任何网桥和 VLAN 传递到容器上的 Veth# 时,它们会被标记和取消标记。
简而言之,我只想将每个子网彼此隔离,同时允许数据包从路由器转发到每个子网上的任何容器。
如果有更简单的方法,我会很高兴听到。
PS 我使用的是 Ubuntu 服务器 12.04 及其 lxc 网络库。我没有单独安装 libvirt。
非常感谢任何信息或建议。
答案1
尝试
lxc.net.0.veth.mode = router
与桥梁不同,桥梁使 lxc 容器能够互相看到对方,但这听起来像你想要的相反的东西。
如果将 lxc 容器的 veth.mode 设置为路由器,则每个 lxc 容器都必须位于其自己的子网中,并且如果没有外部托管 Linux 中的特定路由,则无法访问其他 lxc。如果您确实有路由,则外部 Linux 可以拥有防火墙来控制对容器的所有访问以及容器之间的访问,而如果它们共享同一个网桥,则无法做到这一点。