Сетевая конфигурация контейнера (LXC) с несколькими IP-адресами, не работающими после обновления до Debian 9 - PullRequest
0 голосов
/ 27 февраля 2019

У нас есть прокси-контейнер LXC, работающий на сервере Proxmox с несколькими IP-адресами (и mac-адресами) без проблем.Хостинг-компания (OVH) указывает на добавление каждого IP-адреса со своим виртуальным Mac, указывающим на шлюз по умолчанию хост-машины.Как уже говорилось, некоторое время это работало нормально, пока мы не выполнили обновление.

В Debian 9 по какой-то неизвестной причине (вероятно, связанной с изменениями именования конфигурации сети) та же самая настройка работает только для первого IPно не последующие.Я читал, что похожие проблемы случаются с CentOS, поскольку он не позволяет различным интерфейсам указывать на один и тот же шлюз.

Net config

Proxmox решил эту проблему (до Deb8по крайней мере) добавив правила публикации в / etc / network / interfaces следующим образом:

    # --- 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, но этот подход потребует использования единого виртуального MAC-адреса для ВСЕХ ips, что с нашей точки зрения устраняет причину возникновениянам IPs

Любая помощь будет принята с благодарностью или, в качестве альтернативы, некоторые рекомендации о том, где исправлять предлагаемое изменение ... для того, чтобы PVE не перезаписывал наши изменения при перезагрузке или изменениях определения и в идеале, только если ethXпошла вверх (не может сделать это в самом определении интерфейсов, поскольку PVE настаивает на перезаписи этого файла.

  • / if-up.d /
  • / interfaces.d /
  • interfaces.tail (предположительно используется PVE в конце интерфейсов)

1 Ответ

0 голосов
/ 08 марта 2019

Не выяснив, почему различное поведение контейнера Debian 8 и Debian 9 мы решили, применив второе решение и изменив способ определения контейнеров в прошлом.Это:

  • только один публичный ip определен в определении контейнера LXC (net0) "традиционным" способом.Это означает, что 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/

У нас есть дополнительный локальный внутренний IP-адрес net1, определенный без проблем.

...