См. также:
1. Установить на «железную» машину систему виртуализации PROXMOX с готового образа.
2. Установить ВМ с Windows 2008 Server.
3. Сделать доступ к хостовой машине по нестандартным портам.
4. Настроить доступ ВМ в интернет и доступ извне к службам на ВМ - RDP, RADMIN, FTP по нестандартным портам.
Установка производилась с загрузочной USB флешки, «приготовленной» командой:
dd if=proxmox-ve_4.4-eb2d6f1e-2.iso of=/dev/sde bs=1M
Картинки процесса установки:
Выбираем диск SDA. На нём будет установлен хост.
После установки и обновления, система занимает 1.8 гигабайт.
Proxmox позволяет отдать под root максимум «hdsize/4». Installation (Advanced LVM Configuration Options)
Если есть необходимость иметь root большего размера, его можно увеличить после установки, «зарезервировав» необходимый размер в поле «minfree».
Здесь всё понятно…
И здесь всё понятно…
Параметры сети и имя хоста.
Последующие действия удобнее проводить с другого компьютера, соединившись с сервером по SSL на стандартный (22) порт пользователем root и с паролем, указанным при установке.
Увеличение корневого раздела возможно, если при установке было оставлено свободное место в группе логических томов в параметре «minfree».
Выясняем, какой том соответствует root:
lvdisplay
Получаем, в том числе:
--- Logical volume --- LV Path /dev/pve/root LV Name root VG Name pve LV UUID XiaskC-GJlj-3qrl-I1WL-OgHk-AtU8-Cpz10K LV Write Access read/write LV Creation host, time proxmox, 2017-04-08 21:56:34 +0300 LV Status available # open 1 LV Size 14.00 GiB Current LE 3584 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 251:0
Текущий размер тома root - 14 гигабайт.
Проверяем наличие свободного места в группе томов:
vgdisplay
Получаем:
File descriptor 7 (pipe:[16710]) leaked on vgdisplay invocation. Parent PID 1221: bash --- Volume group --- VG Name pve System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 9 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 48.57 GiB PE Size 4.00 MiB Total PE 12435 Alloc PE / Size 5270 / 20.59 GiB Free PE / Size 7165 / 27.99 GiB VG UUID DYeAvN-oaWd-esYV-9xze-2bvu-TN3T-SH1tnf
Свободно - 27.99 гигабайт.
Увеличиваем размер тома, заняв всё свободное место:
lvextend -l +100%FREE /dev/pve/root
Или только на нужное число:
lvextend -L+10G /dev/pve/root
и:
resize2fs -p /dev/pve/root
Удаляем платный репозиторий
rm /etc/apt/sources.list.d/pve-enterprise.list
Добавляем community репозитории
cat >> /etc/apt/sources.list.d/proxmox.list << EOF deb http://download.proxmox.com/debian jessie pve-no-subscription pvetest deb http://ftp.debian.org/debian jessie main contrib EOF
Обновление:
aptitude update aptitude -y full-upgrade
Установка «любимого» MC:
aptitude -y install mc
Откючение сообщения об отсутствии платной подписки при входе в WEB интерфейс.
sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/pve-manager/js/pvemanagerlib.js
Взято отсюда (Установка Proxmox VE 4.2 - 1.3. Обновляем Promox).
После какого-то обновления, строка вернулась к исходному виду. Пршлось запускать повторно.
Если при обновлении из WEB интерфейса, выскакивает ошибка:
GPG error: http://download.proxmox.com jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY C23AC7F49887F95A
С консоли ввести:
gpg --keyserver pgpkeys.mit.edu --recv-key C23AC7F49887F95A gpg -a --export C23AC7F49887F95A | apt-key add -
Необходимо включить форвадинг пакетов - в файле /etc/sysctl.conf раскомментировать строку
net.ipv4.ip_forward=1
и применить:
sysctl -p /etc/sysctl.conf
Для доступа извне к FTP ВМ нужно подгружать модуль ядра, для этого в файле /etc/modules добавить строку
nf_nat_ftp
Создаётся два интерфейса - один соответствует физическому, другой - мост к виртуальным машинам.
eth0 - это физический интерфейс «железной» машины.
vmbr0 - виртуальный интерфейс. Этот интерфейс будет шлюзом для ВМ.
В результате, файл /etc/network/interfaces должен выглядеть так:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.15 netmask 255.255.255.0 gateway 192.168.1.3 auto vmbr0 iface vmbr0 inet static address 192.168.10.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0
Можно указать, что адреса должны получаться по DHCP (WEB интерфейс PROXMOX этого не поддерживает). Для этого, в параметрах интерфейса, надо прописать:
auto eth0 iface eth0 inet dhcp
и, соответственно, адрес, маску и шлюз указывать не надо.
Для применения изменений без перезагрузки:
systemctl restart pvenetcommit systemctl restart networking
Для правил iptables, создаём файл /etc/network/iptables примерно такого содержания:
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # Входящие на хост # Нестандартный SSH -A INPUT -m state --state NEW -m tcp -p tcp --dport 14022 -j ACCEPT # Нестандартный PROXMOX WEB -A INPUT -m state --state NEW -m tcp -p tcp --dport 14033 -j ACCEPT # Нестандартный удалённый терминал SPICE -A INPUT -m state --state NEW -m tcp -p tcp --dport 14044 -j ACCEPT # Разрешить все входящие от виртуальной внутренней сети -A INPUT -m iprange --src-range 192.168.10.2-192.168.10.254 -j ACCEPT # Ответы и релеи -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # PING -A INPUT -p icmp -j ACCEPT # Локальный интерфейс -A INPUT -i lo -j ACCEPT # Разрешение форварда пакетов -A FORWARD -j ACCEPT # Всё остальное - запретить -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT *mangle :FORWARD ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT *nat :OUTPUT ACCEPT [0:0] :PREROUTING ACCEPT [0:0] # Нестандартный RDP w2008 -A PREROUTING -i eth0 -p tcp --dport 20577 -j DNAT --to 192.168.10.15:3389 # Нестандартный RADMIN w2008 -A PREROUTING -i eth0 -p tcp --dport 20578 -j DNAT --to 192.168.10.15:4899 # Нестандартный FTP и диапазон портов пассивного режима w2008 -A PREROUTING -i eth0 -p tcp --dport 20579 -j DNAT --to 192.168.10.15:21 -A PREROUTING -i eth0 -p tcp --dport 50000:50100 -j DNAT --to 192.168.10.15:21 # Выход в интернет -A POSTROUTING -m iprange --src-range 192.168.10.2-192.168.10.254 -j MASQUERADE COMMIT
Извне разрешён доступ к SSH хоста по нестандартному порту 14022 и доступ к службам RDP, RADMIN, FTP в ВМ по нестандартным портам 20577, 20578, 20579, соответственно.
Чтобы правила применялись при загрузке «железной» машины, в директории /etc/network/if-up.d создаём файл iptables со следующим содержимым:
#!/bin/sh iptables-restore < /etc/network/iptables
И устанавливаем ему флаг исполнения.
После изменения правил в /etc/network/iptables, для их применения нужно запустить /etc/network/if-up.d/iptables или выполнить команду, указанную в этом скрипте. Правила применяются сразу, ни перезапуска сети, ни перезагрузки машин не требуется.
В файле /etc/ssh/sshd_config меняем значение «Port» со стандартного (22) на какой-либо другой, например, 14022.
Для доступа к WEB PROXMOX по нестандартному порту применён HAPROXY (который оказался установлен и запущен на машине с PROXMOX).
В файле «/etc/haproxy/haproxy.cfg» добывляем правило пересылки:
listen NON-STANDARD-PROXMOX-WEB 0.0.0.0:14033 mode tcp server LOCAL 127.0.0.1:8006
и перезапустить HAPROXY - «service haproxy restart».
Это означает: Слушать порт 14033 на всех адресах хостовой машины и перенаправлять пакеты, приходящие на этот порт на порт 8006 (стандартный порт WEB PROXMOX).
В правилах IPTABLES прописать, в INPUT:
# PROXMOX WEB -A INPUT -m state --state NEW -m tcp -p tcp --dport 8006 -j ACCEPT # Нестандартный порт для PROXMOX WEB -A INPUT -m state --state NEW -m tcp -p tcp --dport 14033 -j ACCEPT
В mangle PREROUTING:
# Запрет стандартного порта PROXMOX WEB -A PREROUTING -p tcp --dport 8006 -j DROP
В nat PREROUTING:
# Перенаправление с нестандартного на стандартный порт PROXMOX WEB -A PREROUTING -p tcp --dport 14033 -j REDIRECT --to-port 8006
Исправить все значения «3128», например, на 14044 в файлах:
/usr/share/perl5/PVE/HTTPServer.pm: my $remport = $remip ? 3128 : $spiceport; /usr/share/perl5/PVE/AccessControl.pm: proxy => "http://$proxy:3128", /usr/share/perl5/PVE/Service/spiceproxy.pm: my $socket = $self->create_reusable_socket(3128, undef, $family); /usr/share/perl5/PVE/Service/spiceproxy.pm: SPICE proxy server for Proxmox VE. Listens on port 3128. /usr/share/perl5/PVE/API2Tools.pm: my $port = $uri->port || 3128;
и перегрузиться.
Найдено здесь.
Для ВМ сетевой интерфейс установлен в «Bridged mode» на «vmbr0»:
На виртуальных машинах устанавливается IP из диапазона 192.168.10.2-192.168.10.254 с адресом шлюза 192.168.10.1.
qemu-img convert -p -O qcow2 W2008.vhd W2008.qcow2
В случае использования LVM в PROXMOX (по умолчанию), образ должен быть в RAW:
qemu-img convert -p -O raw W2008.vhd W2008.raw
В ВМ создаётся новый диск, размером чуть больше образа (позже его можно будет «расширить» средствами Windows), выясняется его местоположение и образ копируется в этот диск:
dd if=W2008.raw of=/dev/pve/vm-100-disk-2 bs=1M
или, вообще, не использовать конвертацию, если VHD уже в RAW:
dd if=W2008.vhd of=/dev/pve/vm-100-disk-2 bs=1M
qemu-img convert -p -f vdi -O qcow2 W2008.vdi W2008.qcow2
Поддерживаемые форматы в опциях «-f» и «-O»:
vhdx blkdebug iscsi vvfat null-aio gluster host_cdrom null-co vmdk host_device cloop quorum qcow2 blkreplay blkverify qcow vdi raw sheepdog qed luks nbd dmg rbd file parallels vpc bochs zeroinit
Подключен новый физический диск. Точка монтирования - /mnt/storage.
К хранилищу добавлена директория для хранения образов:
Существующий образ диска «vm-100-disk-1.qcow2» помещён в директорию «/mnt/storage/images/100»
Для добавления, выполнить команду в консоли:
qm rescan -vmid 100
где «100» идентификатор ВМ.
После чего, диск появится в ВМ, как неисползуемый. Далее «Edit» и «Add».
aptitude install samba samba-client
Правим «/etc/samba/smb.conf»:
[global] workgroup = VGROUP [share] comment = Общий ресурс для ВМ obey pam restrictions = Yes read only = no locking = no path = /mnt/storage/share guest ok = no force create mode=0660 create mask=0660 directory mask = 0770
Директория общего ресурса «/mnt/storage/share» должна иметь атрибуты, позволяющие полный доступ (0777).
Учётные записи пользователей и их пароли на ВМ и на SAMBA сервере должны совпадать. Также пользователи должны существовать и на хостовой системе:
Добавление пользователя user в хост:
useradd user -M -N
Добавление пользователя user в SAMBA:
smbpasswd -a user
Проверка списка пользователей SAMBA:
pdbedit -w -L
Перезапустить SAMBA:
systemctl restart smbd
Проверка подключения пользователя user:
smbclient -U user //myhost/share
Где, «myhost» - имя машины-хоста (так-же можно использовать «localhost» или виртуальный IP адрес ностовой машины).
Подключить сетевой диск. В качестве папки указать «\\myhost\share» (или, вместо myhost, указать виртуальный IP адрес хостовой машины)
Взято, в основном отсюда.
Установить parted:
aptitude -y install parted
Запуск parted (sdb - новый диск):
parted /dev/sdb
В parted:
Создаём таблицу разделов GPT:
mklabel gpt
Создаём первичный раздел со 100% заполнением:
mkpart primary 0% 100%
Выходим из gparted (q) и проверяем наличие созданного раздела (sdb1):
lsblk --fs
Форматируем в ext4, нулевым резервированием и меткой «storage1»:
mkfs.ext4 -m 0 -L storage1 /dev/sdb1
Создаём точку монтирования:
mkdir /mnt/storage1
В /etc/fstabs добавляем строчку:
/dev/sdb1 /mnt/storage1 ext4 defaults 0 0
Монтируем:
mount /dev/sdb1
Устанавливаем пакет утилит для шифрование методом LUKS:
aptitude install cryptsetup
Шифруем раздел (попросит ввести слово «YES» в верхнем регистре и дважды ввести пароль шифрования):
cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdb
Монтируем шифрованный раздел (попросит ввести пароль):
cryptsetup luksOpen /dev/sdb sdb
Форматируем в ext4, нулевым резервированием и меткой «storage1»:
mkfs.ext4 -m 0 -L storage1 /dev/mapper/sdb
Создаём точку монтирования:
mkdir /mnt/storage1
Монтируем:
mount -t ext4 /dev/mapper/sdb /mnt/storage1
Для монтирования с вводом пароля, создаётся скрипт «cr-mount» в «/usr/local/sbin» (в него добавлять все шифрованные диски для монтирования). Его необходимо запускать после каждой перезагрузки хоста и вводить пароли для каждого шифрованного диска:
#!/bin/sh DEV=sdb MP=storage1 echo Mount /dev/$DEV to /mnt/$MP cryptsetup luksOpen /dev/$DEV $DEV mount -t ext4 /dev/mapper/$DEV /mnt/$MP df -h /mnt/$MP echo -------------------------------------------------
Если диски зашифрованы с использованием одного пароля, можно ввод пароля сделать один раз
#!/bin/bash function crypt_mount { echo Mount /dev/$1 to /mnt/$2 echo -n "$3" | cryptsetup luksOpen /dev/$1 $1 - mount -t ext4 /dev/mapper/$1 /mnt/$2 echo -n "Test to mount: " mount | grep $1 } read -t 30 -sp "Password: " PASS crypt_mount sdb storage1 $PASS crypt_mount sdс storage2 $PASS
Размонтирование и отключение:
umount /dev/mapper/sdb cryptsetup luksClose /dev/mapper/sdb
При установке по умолчанию,
Бэкапы ВМ лежат в «/var/lib/vz/dump»
ISO образы в «/var/lib/vz/template/iso»
В файле «/etc/issue» содержится текст приглашения, выводимый на консоль. При перезагрузке хоста - перезаписывается на дефолтный (откуда - пока не знаю).
Служба WEB PROXMOX - pveproxy (Отсюда...)