Kvm vps на proxmox за nat с пробросом портов и dhcp

Настройка виртуальной машины

После создания виртуальной машины нам может понадобиться ее изменить. Рассмотрим процесс настройки на примере изменения некоторых параметром, а также добавления диска и сетевого адаптера.

Полезные настройки

Для начала, переходим к виртуальной машине — Параметры:

На мой взгляд, чаще всего могут понадобиться следующие настройки:

  • Имя — имя виртуальной машины.
  • Запуск при загрузке — для серверов данный параметр должен быть активирован.
  • Порядок загрузки — позволяет определить, с какого устройства должна запуститься виртуалка в первую очередь.

Для изменения параметра, просто кликаем по нему дважды, меняем значение и нажимаем OK.

Добавление дискового накопителя

Переходим в подраздел Оборудование — кликаем по Добавить и выбираем Жесткий диск:

В открывшемся окне задаем размер диска и нажимаем OK.

Для увеличения размера имеющегося диска устанавливаем на него курсов и кликаем по Изменить размер диска:

В открывшемся окне задаем объем, на который нужно увеличить дисковое пространство.

Добавление сетевого адаптера

Переходим в подраздел Оборудование — кликаем по Добавить и выбираем Сетевое устройство:

Как при создании ВМ, выбираем тип сетевого адаптера (бридж или нат) и нажимаем Добавить.

Создание виртуальных машин

Обратите внимание, что веб интерфейс Proxmox VE позволяет создавать виртуальные машины двух типов:

  • VM это полностью виртуализированная машина, созданная из ISO образа, который необходимо загрузить в хранилище Proxmox VE;
  • CT – паравиртуализированная машина на ядре Linux, шаблоны которой необходимо сначала загрузить и установить в хранилище Proxmox VE.

Параллельно можно поставить загрузку дистрибутива debian10 netinstall ISO со своего рабочего компьютера в хранилище home. Для этого выберите в WEB-интерфейсе хранилище home, тип хранения выберите ISO Images и нажмите кнопку Загрузить, в появившемся окне выберите файл образа ISO со своего компьютера и нажмите ОК.

Так же информацию можно загрузить с usb-хранилища, с CD-Диска (на тестовой машине он подключён), передать по сети с помощью FTP, Samba, http. Для этого можно использовать из консоли соответствующие утилиты wget, curl, ftp или файловый менеджер Midnight Commander:

Шаблоны и загрузки расположены по путям хранилищ local: /var/lib/vz или home: /home/pmx. Вы можете напрямую копировать в соответствующий раздел файлы. Логическая структура размещения информации на скриншоте:

Для создания виртуальных машин необходимо создать Пул ресурсов. Для этого кликните в дереве на вкладку Датацентр, справа выберите пункт Пулы, нажмите Создать, на тестовой машине задано имя пула home, по окончании нажмите ОК:

Создание виртуального контейнера CT

Сначала создайте CT виртуальную машину из скачанного шаблона CentOS 7. Для этого нажмите кнопку Создать CT, заполните поля и нажмите ОК.

На следующей вкладке выберите хранилище home и ранее закачанный шаблон CentOS 7.

Настройки корневого диска, процессора и памяти на тестовой машине оставим как предложено гипервизором

Обратите внимание на раздел сеть:

Итак, созданный нами ранее сетевой мост vmbr0 используется в виртуальных машинах Proxmox VE для создания виртуальных сетевых интерфейсов для них. Через vmbr0 интерфейс будет подключён к роутеру сети, к которому подключена сетевая карта, на которой работает vmbr0.

В результате наших действий начинает разворачиваться контейнер, содержащий CentOS 7 и настраиваться виртуальная машина.

Вернитесь в pve-test, найдите вновь созданный контейнер c ID 100 и названием centos7 и нажмите Запуск, а затем Консоль. Откроется окно браузера, в котором видно запущенный CentOS:

Укажите имя пользователя root и пароль, который ввели при создании контейнера CT и, если все сделано верно, можно управлять виртуальной машиной. Узнайте её IP-адрес, так как роутер, подключённый к тестовому хосту, должен был его выдать:

В результате получилось запустить полноценную виртуальную машину с Linux.

Создание виртуального контейнера VM

Для создания виртуальной машины VM с любой ОС нажмите кнопку Создать VM, укажите имя создаваемой VM, выберите пул ресурсов, нажмите Далее:

На втором окне предлагается выбрать загрузочный образ виртуального CD-диска, указать тип гостевой ОС:

Если все сделано правильно, то загруженный ISO образ должен быть доступен по клику по обведённому красным полю. Этот параметр может быть настроен позже из интерфейса управления виртуальной машиной VM.

Во вкладках Система, Жёсткий диск, Процессор, Память, Сеть оставлены все значения так, как предложил гипервизор. В последней вкладке Подтверждение кликем Готово и перейдите в настройки виртуальной машины ID 101 с именем litedeb, во вкладку Оборудование:

Если все нас устраивает и ничего менять не надо, нажмите кнопку Запуск и откройте Консоль. На тестовом хосте выяснилось, что лучше эксперимент проводить на дистрибутиве Debian 10 netinstall, и поменять тип жёсткого диска со SCSI на SATA, а также увеличить размер оперативной памяти виртуальной машины. И результат работы после нажатия кнопки Запуск и подключению к Консоли:

FreeNAS

Those are the necessary steps to migrate a Ubuntu Bionic VM from FreeNAS 11.2 to Proxmox VE 6.2-1.
The VM in FreeNAS was created with the following parameters

  • Boot Loader Type: UEFI
  • Guest OS: Ubuntu Bionic
  • Disk
    • Disk Mode: AHCI
    • Zvol: test/ubuntu-1xmtpt

Check the name of your zvol by going to Virtual Machines → Options of the VM ⋮→ Devices → Options of your disk ⋮ → Edit → Zvol

Preparation in FreeNAS

  1. Create a shared directory in Sharing → Unix (NFS) Shares with path .
  2. Enable SSH in Services & edit the SSH service (Actions) to allow password login for root
  3. Copy the zvol to the shared directory
    1. Log in to FreeNAS via SSH
      ssh [email protected]
    2. Copy the zvol to the shared directory
      dd if=/dev/zvol/test/ubuntu-1xmtpt of=/mnt/test/ubuntu.raw bs=1m

Importing to Proxmox VE

  1. Create a virtual machine (here vmid is 103) in Proxmox VE. Make sure to set BIOS to OVMF (this is UEFI).
  2. Delete the disk that was created in step 1.
  3. Create a directory
  4. Mount the shared directory from FreeNAS
     sudo mount -t nfs 192.168.31.241:/mnt/test /home/user/freenas
  5. Import the image of the FreeNAS VM to the Proxmox VE VM as unused disk (vmid 103, storage local)
    qm importdisk 103 /home/user/freenas/ubuntu.raw local --format qcow2
  6. In the GUI of Proxmox VE:
    1. Go to the hardware view of your new virtual machine
    2. Set the display to spice
    3. Double click on the unused disk to attach it and choose Virtio as bus
    4. Go to the options view of your new virtual machine
    5. Choose your new virtio disk as bootdisk

Hidden non present devices

For sure it should be removed from windows «known» hardware but, you won’t find it in «device management», even if you specify «show hidden peripherals», why? because Microsoft is complicated :-)

To be able to see, and then remove the old physical NIC from «device management», you have to

  • open a console window
  • type:
    set devmgr_show_nonpresent_devices = 1

    and press enter

  • then, in the same console (do not close it) type:
    start devmgmt.msc

    and press enter

  • this will open the same «device management» panel you could have open from the «control panel», but now if you set the «show hidden peripherals» flag, the «nonpresent» devices will appear, although dimmed somehow, and you will be able to remove them, freeing the IP for your virtual NIC.

Тюнинг сервера PVE

Внесем несколько изменений, которые сделают работу с Proxmox VE удобнее.

Отключение предупреждения об отсутствии подписки

Каждый раз при заходе в панель управления мы будем видеть такое предупреждение:

Оно говорит нам о том, что мы используем бесплатную версию программного продукта. Чтобы сообщение нас не беспокоило, выполним 2 действия:

  1. Отключим платный репозиторий для получения пакетов proxmox.
  2. Отредактируем файл js для отключения данного сообщения.

И так, в SSH открываем на редактирование репозиторий proxmox:

nano /etc/apt/sources.list.d/pve-enterprise.list

Приводим его к виду:

#deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
deb http://download.proxmox.com/debian/pve stretch pve-no-subscription

* мы закомментировали репозиторий pve-enterprise и добавили pve-no-subscription.
* при большом желании, можно удалить файл репозитория с именем pve-enterprise.list и создать новый — кому как будет удобнее.

После обновим список пакетов:

apt-get update

Последнее — редактируем файл /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js:

sed -i «s/getNoSubKeyHtml:/getNoSubKeyHtml_:/» /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js

* данной командой мы находим getNoSubKeyHtml в файле /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js и меняем на getNoSubKeyHtml_.

Закрываем окно браузера с Proxmox, если оно было открыто и запускаем его снова. Входим в систему — сообщение не должно появиться.

Сертификаты

Сервер PVE устанавливается с самоподписанным сертификатом. Это означает, что при подключении к панели управления мы будем видеть предупреждение от системы безопасности. Чтобы браузер принимал сертификат, он должен соответствовать следующим требованиям:

  • Быть выдан доверенным центром сертификации или зарегистрированным в вашей локальной сети, например, локальный AD CS.
  • Быть для доменного имени, по которому мы заходим в панель управления.
  • Иметь актуальные даты начала действия и окончания.

При этом, мы не должны заходить в панель управления по IP-адресу — в противном случае, независимо от сертификата, мы все-равно, получим предупреждение.

И так, сам сертификат можно купить, запросить бесплатно у Let’s Encrypt или создать с использованием локального центра сертификации, например, по данной инструкции. Получив сертификат, открываем панель управления PVE и переходим к серверу — Система — Сертификаты — кликаем по Загрузить пользовательский сертификат:

В открывшемся окне заполняем поля для закрытого и открытого ключей:

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

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

Под тесты с генерацией трафика, понадобился отдельный сервак. Взял в Kimsufi, но возникла проблема с установкой WIndows7, т.к это Xeon и винда, установленная через  KVM, видимо, не хотела стартовать с нестандартными дровами.

А поскольку никакого аналога VNC или IP-KVM (не того который Kernel-based Virtual Machine,  а того который Keyboard Video Mouse over IP ) у Kimsufi нет, то в итоге пришлось поставить Proxmox, тем более что в Kimsufi он ставится из коробки. Можно конечно было грубо накатить Qemu KVM прямо из центосины, но уж больно мне нравится удобство web-based управлялки Proxmox, т.к не приходится для каждого чиха поднимать VNC.

Но возникла проблема с сеткой, т.к по дефолту Proxmox создает Linux bridge vmbr0 который смотрит через внешний интерфейс и все остальные интерфейсы виртуалок, подключенные к этому мосту, так же будут смотреть наружу со своими MAC адресами, чему Kimsufi несказанно удивлен, т.к предполагается только один адрес.

Поэтому необходимо поднять NAT из под которого и будут выходить все остальные виртуалки.

Для этого в разделе ноды Network, создадим новый Linux bridge vmbr1 уже с локальными сетевыми настройками приватной сети. Пускай это будет 192.168.10.0/24

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

Рестартим машину, после чего открываем в ssh консоли файл настроек сети /etc/network/interfaces находим наш раздел приватной сетки и приводим её к следующему виду:

то есть мы разрешаем форвард пакетов между интерфейсами и включаем NAT для сети 192.168.10.0 на интерфейсе vmbr0.

Проброс пакетов также можно задать классическим способом в /etc/sysctl.conf прописав туда строкуnet.ipv4.ip_forward=1

После этого ребутим машину и идем настраивать гостевую виртуальную машину.

Перед этим создаем сетевой интерфейс для нашей машины модели VirtIO и принадлежностью к мосту vmbr1 и включаем машину.

Для Windows сначала надо скачать guest tool agent, который берется на федорином сайте: теоретически, оттуда скачиваем Stable virtio-win iso после чего грузим его через веб-интерфейс, что несколько муторно поскольку исошник весит 300+ мегов, т.ч можно скачать сразу в хранилище системы Proxmox напрямую с сервера, для чего из консоли говорим:# wget -P /var/lib/vz/template/iso/ https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

и подключаем ISO диск уже через веб-интерфейс в настройках машины. В гостевой машине накатить три драйвера для сети, балонинга и системы управления.  После установки сетевых драйверов, руками прописываем настройки сети 192.168.10.0, где айпишник задаем произвольный, а адрес шлюза = адрес бриджа, т.е в моем случае 192.168.10.101

Теоретически, после этого, сетка должна подцепиться и все заработать.

Если машин много, то в принципе можно поставить какой нить DHCP сервер на ноде, но у меня буквально несколько машинок, т.ч мне проще прописать руками.

VN:F

please wait…

Rating: 3.5/10 (56 votes cast)

VN:F

Rating: +7 (from 17 votes)

Настройка NAT для виртуальных машин в Proxmox VE, 3.5 out of 10 based on 56 ratings

Выполнение процедуры резервирования

Для создания резервной копии:

  1. Переходим на нужную виртуальную машину.
  2. Выбираем пункт Резервирование.
  3. Нажимаем кнопку Резервировать сейчас. Откроется окно, в котором можно будет выбрать параметры будущей резервной копии.

  4. В качестве хранилища указываем то, которое мы подключали .
  5. После выбора параметров нажимаем кнопку Резервирование и ждем, пока резервная копия будет создана. Об этом будет говорить надпись TASK OK.

Теперь созданные архивы с резервными копиями виртуальных машин станут доступны для скачивания с сервера. Самым простым и банальным способом копирования является SFTP. Для этого воспользуйтесь популярным кроссплатформенным FTP-клиентом FileZilla, который умеет работать по SFTP-протоколу.

  1. В поле Хост вводим IP-адрес нашего сервера виртуализации, в поле Имя пользователя вводим root, в поле Пароль — тот, который был выбран при установке, а в поле Порт указываем «22» (либо любой другой порт, который был задан для SSH-подключений).
  2. Нажимаем кнопку Быстрое соединение и, если все данные были введены правильно, то в активной панели Вы увидите все файлы, расположенные на сервере.
  3. Переходим в директорию /mnt/storage. Все создаваемые резервные копии будут лежать в поддиректории «dump». Они будут иметь вид:
    • vzdump-qemu-номер_машины-дата-время.vma.gz в случае выбора метода GZIP;
    • vzdump-qemu-номер_машины-дата-время.vma.lzo в случае выбора метода LZO.

Резервные копии рекомендуется сразу скачивать с сервера и сохранять в надежном месте, например, в нашем облачном хранилище. Если распаковать файл с разрешением vma, одноименной утилитой, идущей в комплекте с Proxmox, то внутри будут файлы с расширениями raw, conf и fw. В этих файлах содержится следующее:

  • raw — образ диска;
  • conf — конфигурация VM;
  • fw — настройки файервола.

Настройка сети в гостевой ОС

Ручная настройка (static)

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

Для этого в настройках гостевой ОС прописываем такие параметры:

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1

address  — ip-адрес данной машины. Естественно, у всех машин этой подсети он должен быть разный.

netmask  — это маска подсети. Точно такая же как указывалось при создании сетевого моста.

gateway  — ip-адрес, на котором сидит сам хост, через который будет происходить роутинг во внешнюю сеть.

Динамическая конфигурация (DHCP)

Чтобы не настраивать сеть вручную можно установить DHCP-сервер. Особенно это будет полезно, если в подсети будет находиться много виртуальных машин — настраивать сеть вручную на каждой не придётся.

Устанавливаем сервер:

aptitude install isc-dhcp-server

В файле /etc/dhcp/dhcpd.conf большинство параметров можно оставить неизменными, однако директиву authoritative; нужно раскомментировать. Также может быть полезным увеличить время выдачи адресов с помощью параметров:

default-lease-time 40320;
max-lease-time 40320;

И, самое главное, нужно описать настройки нашей подсети:

# NAT subnet on vmbr1
subnet 192.168.1.0 netmask 255.255.255.0 {
 range 192.168.1.2 192.168.1.254;
 option routers 192.168.1.1;
 option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Здесь range  — это диапазон адресов, которые будет выдавать DHCP-сервер. domain-name-servers  — это DNS-сервера, которые будут использоваться на гостевых машинах. В данном примере это Google Public DNS.

Далее в файле /etc/default/isc-dhcp-server настраиваем какие интерфейсы будет слушать наш сервер:

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="vmbr1"

Для надёжности можно ещё прикрыть его файрволом от запросов извне.

После настройки перезапускаем DHCP

service isc-dhcp-server restart

Настройка закончена. Теперь гостевые машины будут получать настройки сети автоматически во время установки ОС.

Proxmox VE and nesting

Proxmox VE can:

host a nested (guest) hypervisor

By default, it does not expose hardware-assisted virtualization extensions to its VMs. Do not expect optimal performance for virtual machines on the guest hypervisor, unless you configure the VM’s CPU as «host» and have nested hardware-assisted virtualization extensions enabled on the physical PVE host.

Note: Microsoft Hyper-V as a nested Hypervisor on AMD CPUs should work with Proxmox VE 7.

be hosted as a nested (guest) hypervisor

The host hypervisor needs to expose the hardware-assisted virtualization extensions. Proxmox VE can use them to provide better performance to its guests. Otherwise, as in the PVE-inside-PVE case, any VM (KVM) needs to turn off the KVM hardware virtualization (see VM options).

Заключение

Теперь вы знаете как выполняется установка и настройка proxmox на Debian 10. Особенно интересен апгрейд Debian 10 при условии, что хост расположен в облаке и его процессор поддерживает виртуализацию. Оплачивая один VPS или VDS, мы можем развернуть внутри несколько изолированных сервисов из любого, даже самого экзотического дистрибутива.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: