1

我们在 Proxmox 服务器上运行了一个代理 LXC 容器,该服务器具有多个 IP(和 mac 地址),没有任何问题。托管公司 (OVH) 的指示是为每个 IP 添加其自己的虚拟 MAC,所有这些 IP 都指向主机默认网关。正如所解释的,这已经运行了一段时间,直到我们现在升级。

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

网络配置

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 坚持覆盖该文件。

  • /if-up.d/
  • /interfaces.d/
  • interfaces.tail(据说 PVE 在接口末尾使用)
4

1 回答 1

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
    

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

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

于 2019-03-07T21:44:00.993 回答