升级到Debian 9后,具有多个IP的容器(LXC)的网络配置不起作用

时间:2019-02-27 12:42:05

标签: networking ip lxc debian-stretch proxmox

我们有一个Proxmox服务器上运行的代理LXC容器,该服务器具有多个IP(和mac地址),没有问题。托管公司(OVH)的指示是在每个IP上添加自己的虚拟mac,这些虚拟mac都指向主机默认网关。如前所述,在我们升级之前,它一直运行良好。

在Debian 9上,由于某些未知的原因(可能与网络配置命名更改有关),相同的设置似乎仅适用于第一个IP,但不适用于随后的IP。我读过CentOS上发生过类似的问题,因为它不允许不同的接口指向同一网关。

Net config

Proxmox通过在/ etc / network / interfaces上添加发布规则来解决此问题(至少达到Deb8):

    # --- BEGIN PVE ---
    post-up ip route add xx.XX.XX.254 dev eth2
    post-up ip route add default via XX.XX.XX.254 dev eth2
    pre-down ip route del default via xx.XX.XX.254 dev eth2
    pre-down ip route del xx.XX.XX.254 dev eth2
    # END PVE ---

这似乎现在仅在第一个界面上有效,而在其余界面上则失败。

由于我们尚未发现行为从Deb8变为Deb9的原因,因此我们只能想到以下形式的解决方案:

  1. 在没有网关的情况下声明所有辅助IP并找到方法 创建类似于以下内容的IP ROUTE规则: ip route add default via xx.XX.XX.254 dev eth2,但不清楚为什么它很难实现
  2. 仅声明容器上的第一个IP / MAC地址,并使用新语法将其他IP添加到同一接口ip address add 94.xx.xx.xx/32 dev eth2 label eth2:extraIP1,但是这种方法将需要对所有ip使用单个虚拟MAC地址。从我们的角度来看,消除了拥有各种IP的原因

我们将不胜感激任何帮助,或者提供一些指导,指导在何处修补建议的更改...,以便PVE在重新启动或定义更改时不要覆盖我们的更改,并且最好仅在ethX升高时才能覆盖(不能这样做)在接口定义本身中,因为PVE坚持要覆盖该文件。

  • /if-up.d /
  • /interfaces.d /
  • interfaces.tail(应该由PVE在接口末尾使用)

1 个答案:

答案 0 :(得分:1)

在不知道为什么在debian 8容器和debian 9上存在不同的行为之后,我们通过应用第二种解决方案并更改了过去定义容器的方式来解决了该问题。 这是:

  • 在容器(net0)的LXC定义上仅以“传统”方式定义了一个公共ip。这是IP指向主机网关。
  • 指向该容器的所有其他IP将共享与该容器相同的MAC地址
  • 在容器内,我们在/if-up.d上添加了一个脚本,

    if [ "$IFACE" = eth0 ]; then
    ip address add XXXXXXXX/32 dev eth0 label eth0:ip2
    ip address add XXXXXXXX/32 dev eth0 label eth0:ip3
    fi
    

和一个类似的要删除的(del)在/if-post-down.d /

我们确实定义了一个额外的net1本地内部IP,没有问题。