Решил, не откладывая в долгий ящик, проверить работу SDN на Proxmox 8.1. У меня как раз стоял настроенный недавно чистый сервер, причём версии именно 8.1. Я даже не обратил внимание на нововведения этого релиза и настроил всё по старинке с ручным созданием бриджа, правилами iptables с NAT, для того, чтобы гипервизор выступал в роли шлюза для виртуальных машин. Сейчас сделаю всё то же самое, только через настройки SDN.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Если вы обновили до Proxmox 8.1 с прошлых релизов, то необходимо выполнить подготовительные действия.
1️⃣ Устанавливаем дополнительные пакеты и запускаем службу:
# apt update # apt install libpve-network-perl dnsmasq # systemctl disable --now dnsmasq
Dnsmasq заработает на всех интерфейсах, слушая 53 порт. Обязательно отключите к нему доступ из вне с помощью firewall.
2️⃣ Добавляем в /etc/network/interfaces в самый конец:
# source /etc/network/interfaces.d/*
Теперь можно идти в GUI Proxmox, в раздел Datacenter ⇨ SDN ⇨ Zones. Добавляем новую зону типа Simple. Идём в Vnets, добавляем новую сеть, например vm. Имя этой сети будет задавать имя сетевого бриджа, который будет создан в системе. Выбираем созданную сеть и добавляем к ней подсеть. Например, 10.200.0.0/24, шлюз 10.200.0.1, в SNAT ставим галочку. Во вкладке DHCP Ranges указываете диапазон IP адресов, которые будут назначаться виртуалкам с этой сетью.
Когда внесёте все настройки, возвращайтесь в раздел SDN и нажимайте на кнопку Apply, чтобы изменения применились. А теперь рассказываю, что конкретно происходит после создания этих настроек.
После того, как вы создали сеть в Vnets, в файле конфигураций /etc/network/interfaces.d/sdn появятся настройки обычного сетевого бриджа Linux. Если при создании сети вы выбрали использование SNAT, к параметрам бриджа добавятся правила для iptables, типа таких:
post-up iptables -t nat -A POSTROUTING -s '10.200.0.0/24' -o inet0 -j SNAT --to-source 214.42.6.135 post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
При этом сам бридж уже будет в системе с указанным названием. В качестве IP адреса у него будет настроен адрес шлюза, который вы указали в настройках Subnet.
Для созданной зоны, в которую входит сеть, будет создана отдельная директория с настройками dnsmasq в /etc/dnsmasq.d/, а диапазон выбранных ip адресов будет указан в отдельном файле конфигурации с именем сети:
dhcp-option=tag:vmlocal-10.200.0.0-24,option:router,10.200.0.1 dhcp-range=set:vmlocal-10.200.0.0-24,10.200.0.0,static,255.255.255.0,infinite interface=vm
Там же будут и привязки MAC адресов к IP. Вот в общем-то и всё. Реализовано всё довольно просто и удобно. Никакой уличной магии и собственных костылей. Взяли известные инструменты и добавили управление ими через веб интерфейс. Единственно, чего не хватает, непосредственно локального DNS сервера. Не знаю, почему от dnsmasq взяли только DHCP. Возможности настройки локального DNS сервера в GUI нет. Хотя ничто не мешает добавить их руками в dnsmasq.
При создании VM вы можете добавить созданную сеть в качестве сетевого интерфейса. После загрузки система получит IP адрес в соответствии с настройками подсети. И если вы включили SNAT, то у неё сразу будет доступ в интернет.
Для меня пока остался нерешённым один важный момент. Как аккуратно связать свои настройки iptables с настройками, которые делает SDN. Это нужно, потому что встроенный firewall по прежнему не умеет пробрасывать порты в VM. Технически то это не трудно, надо просто понять, как это сделать максимально удобно. Я привык их хранить в отдельном скрипте и подгружать при старте сервера. Пока просто вручную добавил туда правила от SDN.
Подводя итог, можно сказать, что теперь настроить гипервизор в качестве шлюза для виртуальных машин можно полностью в GUI. Получив в качестве бонуса интегрированный в веб интерфейс IPAM. И это я разобрал только самый простой вариант — Simple Zone для создания виртуальной сети в рамках одного гипервизора. Остальные настройки ещё более масштабные.
Все получилось с первого раза! Спасибо!
Теперь задача, добавил сетевую карту, чтобы бекапы добавлять по сети, как соединить его с новым SDN, а то знания моего не хватает)))
Добрый день. Планирую заменить текущий гипервизор Ubuntu 20.04 + KVM/QEMU на Proxmox 8
У меня настроен LVM и хотелось бы его сохранить
Я правильно понимаю, что стандартный установщик Proxmox ставится на диск без LVM и нет расширенных настроек форматирования дисков?
Есть какие-то подводные камни, если установить Debian так как я хочу, а на него Proxmox? (например обновления Proxmox, да и самого Debian)
Никаких подводных камней нет. Ставьте Debian, разбивайте как вам угодно диски и потом накатывайте Proxmox. Я сам поступаю именно так.
Большое спасибо за ответ!
Установлен Proxmox 7.4-17 ,
процессор Xeon Gold 6426Y
Из-за одной из виртуалок с виндой (а может из-за нескольких) падает система с ошибкой
x86/split lock detection: #AC: crashing the kernel on kernel split_locks and warning on user-space split_locks
в логи регулярно падает подобное:
x86/split lock detection: #AC: CPU 2/KVM/6306 took a split_lock trap at address: 0xfffff80412642a7c
x86/split lock detection: #AC: CPU 3/KVM/6307 took a split_lock trap at address: 0xfffff80412642a7c
Настройки виндовых виртуалок, как в статье.... не нашел решения проблемы, кроме как
" In your case you need to add split_lock_detect=off to turn off split lock detection."
https://forum.proxmox.com/threads/x86-split-lock-detection.111544/
но эта штука просто отключит оповещения, насколько я понял. Пока не знаю, что делать, уже обновил ядро до последнего. М.б. пробовать обновиться до 8.1?
Я где-то видел такие ошибки. Люди жаловались. Но сам не вникал в суть, так как лично не сталкивался. Как лечить - не знаю.
Снимаю вопрос - планка памяти глючит, перешерстил логи BIOSa и обнаружил...
Снимаю вопрос - планка памяти глючит, перешерстил логи BIOSa и обнаружил...
но вот эти штуки
x86/split lock detection: #AC: CPU 2/KVM/6306 took a split_lock trap at address: 0xfffff80412642a7c
x86/split lock detection: #AC: CPU 3/KVM/6307 took a split_lock trap at address: 0xfffff80412642a7c
точно с виндовых виртуалок лезут и crashing the kernel on kernel split_locks повел меня не по тому пути
в инструкции от вендора:
# disable default instance
systemctl disable --now dnsmasq
а у вас почемуто наоборот enable
Не очень понимаю, как dnsmasq должен работать, если его выключить. Функциональность реализована на его базе. Сейчас точно не помню, но я вроде бы включал его, когда тестировал. Надо будет перепроверить при новой настройке.
Тут вот обсуждали эту же тему, но конкретного ответа так и нет.
https://forum.proxmox.com/threads/no-dhcp-options-with-sdn.139367/
У пользователя ничего не работало, когда он отключал dnsmasq. Проверьте у себя, что в итоге получится.
Если я не ошибаюсь то логика такая: По умолчанию служба dnsmasq выключена, но когда вы настраиваете "Zones" то Proxmox сам создает службу с нужными параметрами запуска чтобы dnsmasq как раз не слушал 53 порт на всех интерфейсах.
по крайней мере у меня так заработало.
я выключил службу согласно офф.инструкции, затем создал зону "test" и в итоге у меня в списках служб есть:
dnsmasq@test.service loaded active running dnsmasq (test) - A lightweight DHCP and caching DNS server
если обратить внимание то в названии запущенного сервиса присутствует имя созданной зоны (test)
и слушает она только на определенном адресе (который я задал в настройках этой зоны):
ss -ntulp |grep "53 "
udp UNCONN 0 0 192.168.68.1:53 0.0.0.0:* users:(("dnsmasq",pid=6098,fd=6))
Спасибо за информацию. Думаю, так правильнее. Банальный запуск dnsmasq тоже решает задачу, так как там подключаются все вложенные конфиги, но это неправильно, так как грузится в том числе и дефолтная конфигурация, которая не нужна.
Поправил статью.