Настройка сети Proxmox – один IP для нескольких ВМ

Вопрос или проблема

Я настраиваю свой первый Proxmox на выделенном сервере. Провайдер выделенных серверов предложил мне сервер, на котором я установил Proxmox и одну IP-адрес, прикрепленную к мостовому интерфейсу.

Вот архитектура, которую я хочу построить:

введите описание изображения здесь

Некоторые соображения:

  • Я хочу, чтобы два физических интерфейса eno1/eno2 работали в режиме объединения для резервирования.
  • Я поставлю реверсивный прокси NGINX перед всеми веб-интерфейсами.
  • Для каждой ВМ мне доступ по ssh (порт 22 локальный, перенаправленный с разных портов в публичный (пример: 141.aaa.bbb.23:221 идет на s1 порт 22, 141.aaa.bbb.23:222 идет на s2 порт 22 и так далее). То же самое для доступа к Zabbix (141.aaa.bbb.23:10051 идет на zabbix порт 10051).

Вот моя начальная конфигурация сервера:

введите описание изображения здесь

У меня есть некоторые сомнения о том, как настроить желаемую конфигурацию:

a) Я создал мост следующим образом для внутренних ВМ, чтобы связать ВМ, но как мне сказать этому мосту выходить на vmbr0 для публичного интернета?
введите описание изображения здесь

b) Как объединить два интерфейса вместе. Я просто не могу создать объединение между eno1 и eno2, так как eno1 подключен к моему публичному интерфейсу, и если я уберу этот публичный IP, то потеряю доступ к своему серверу.

c) Как реализовать то, что мне нужно в данной архитектуре?

A и C.

Ваша текущая настройка – это мостовая сеть, ВМ, подключенные к vmbr0, принадлежат одной сети (или широковещательной области). В такой конфигурации DHCP должен предоставляться вашим провайдером, а не хостом.

Желаемое состояние – это сеть NAT, где ВМ не могут напрямую отправлять Ethernet-кадры во внешнюю сеть, и их частные IP заменяются IP хоста для исходящих пакетов (маскарад).

Вы не должны присваивать 141.aaa.bbb.23 устройствам vmbr0 или vmbr1. Вы можете оставить 141.aaa.bbb.23 назначенным на устройство объединения и иметь только vmbr0 (создание vmbr1 не обязательно).

Маршрутизация через объединение будет автоматически обрабатываться таблицей маршрутизации хоста.

Смотрите здесь:

B.

Я просто не могу создать объединение между eno1 и eno2, так как eno1 подключен к моему публичному интерфейсу, и если я уберу этот публичный IP, то потеряю доступ к своему серверу.

Вам может понадобиться управление вне полосы (например, KVM через IP), чтобы применить начальную конфигурацию, если это связано с потерей доступа в интернет.

Я просто не могу создать объединение между eno1 и eno2, так как eno1 подключен к моему публичному интерфейсу, и если я уберу этот публичный IP, то потеряю доступ к своему серверу.

Добро пожаловать в джунгли.

С учетом ограничений, без доступа к удаленной консоли и при отсутствии желания со стороны провайдера хостинга сотрудничать, у вас нет другого выбора. Либо вы меняете один из этих факторов, либо….

Что вы могли бы сделать, так это создать новый конфигурационный файл (Proxmox использует /etc/network/interfaces), скажем, /etc/network/proposed, сделать резервную копию вашей рабочей конфигурации как, скажем, /etc/network/working, а затем создать задания cron для развертывания каждой из этих конфигураций и применения изменений. Установите задание cron для “proposed” на запуск, скажем, в 15:00, а для “working” в 16:00.

Конфигурация объединения будет выглядеть примерно следующим образом…

auto lo
iface lo inet loopback

iface eno1 inet manual

iface eno2 inet manual

iface bond0 inet manual
      bond-slaves eno1 eno2
      bond-miimon 100
      bond-mode balance-rr
      
iface vmbr0 inet static
        address 141.aaa.bbb.23/24
        gateway 1141.aaa.bbb.1
        bridge-ports bond0
        bridge-stp off
        bridge-fd 0
        post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -s '141.aaa.bbb.23/24' -o eno1 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '141.aaa.bbb.23/24' -o eno1 -j MASQUERADE

iface vmbr1 inet static
        address 192.168.0.1/24

пример: 141.aaa.bbb.23:221 идет на s1 порт 22, 141.aaa.bbb.23:222 идет на s2 порт 22

?

Просто используйте ваш хост Proxmox как промежуточный узел….

ssh -J 141.aaa.bbb.23 192.168.0.102

(вы можете предварительно настроить это в ~/.ssh/ssh_config)

Ответ или решение

Настройка сети в Proxmox с использованием одного IP для нескольких ВМ

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

Исходные условия

У вас имеется сервер с двумя физическими интерфейсами (eno1 и eno2), и вы хотите настроить их в режиме агрегации (bonding) для обеспечения отказоустойчивости. У вас также установлен Proxmox с одной связанной сетевой интерфейсом (vmbr0), который будет использоваться для подключения ВМ к публичной сети.

Архитектурные требования:

  1. Настроить интерфейсы eno1 и eno2 в режиме бондинга.
  2. Развернуть обратный прокси NGINX для обработки веб-интерфейсов.
  3. Организовать доступ к SSH и специфическим портам (например, Zabbix) на ВМ через проксирование портов.

Настройка сети

1. Настройка бондинга интерфейсов

Создание бондинга на Proxmox — это шаг, который позволяет эффективно использовать ресурсы двух интерфейсов. В вашем случае необходимо убедиться, что интерфейсы eno1 и eno2 связаны между собой до того, как будет установлен IP-адрес на интерфейс бондинга.

Для этого отредактируйте файл конфигурации сети /etc/network/interfaces:

auto lo
iface lo inet loopback

iface eno1 inet manual

iface eno2 inet manual

iface bond0 inet manual
      bond-slaves eno1 eno2
      bond-miimon 100
      bond-mode active-backup  # или balance-rr, в зависимости от ваших нужд

iface vmbr0 inet static
        address 141.aaa.bbb.23/24
        gateway 141.aaa.bbb.1
        bridge-ports bond0
        bridge-stp off
        bridge-fd 0
        post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -o bond0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -o bond0 -j MASQUERADE

iface vmbr1 inet static
        address 192.168.0.1/24  # Частная подсеть для вас ВМ

2. Настройка NAT для виртуальных машин

Чтобы обеспечить работоспособность ВМ при использовании одного публичного IP-адреса, вам следует использовать NAT (маскировка). Это делается с помощью правила iptables, как указано в конфигурации выше.

3. Прокси-подход и проброс портов

Для настройки доступа к SSH и другим сервисам на ВМ, можно использовать перенаправление портов. Например, для перенаправления на ВМ с IP 192.168.0.102 и портом SSH 22, настройте iptables на хосте:

iptables -t nat -A PREROUTING -p tcp --dport 221 -j DNAT --to-destination 192.168.0.102:22
iptables -t nat -A PREROUTING -p tcp --dport 222 -j DNAT --to-destination 192.168.0.103:22
iptables -t nat -A PREROUTING -p tcp --dport 10051 -j DNAT --to-destination 192.168.0.104:10051

После выполнения данных действий, доступ к разным ВМ через разные порты будет осуществляться через ваш публичный IP-адрес.

Подведение итогов

Siguiendo эти шаги, в Proxmox можно организовать работу нескольких виртуальных машин с одним публичным IP-адресом, что позволяет экономить ресурсы и упрощает администрирование сети. Для дальнейшей настройки может использоваться время от времени прокси-сервер NGINX для упрощения доступа к веб-интерфейсам.

Не забудьте тестировать каждую часть конфигурации, чтобы убедиться в ее работоспособности, и сохранять резервные копии используемых конфигурационных файлов перед внесением изменений.

Оцените материал
Добавить комментарий

Капча загружается...