Сетевая загрузка
Цель:
Получение навыков по работе с сетевой загрузкой операционной системы
Задачи:
- Подключится к виртуальной машине на облачной платформе СПбГУТ
- Подготовить образ операционной системы Ubuntu
- Cкомпилировать загрузчик IPXE
- Настроить dnsmasq
- Снять дамп траффика во время установки ОС по сети
- Установить операционную систему, с помощью сетевой загрузки
Задание 1. Подготовка образа
В первую очередь необходимо скачать минимальный образ Ubuntu 20.04 Server на виртуальный сервер
cp /var/lib/cloud/s3cfg .s3cfg
s3cmd get s3://lab5/ubuntu-20.04-server.iso ~/
После этого необходимо смонтировать образ в папку /mnt/
sudo mount ubuntu-20.04-server.iso /mnt/
Создайте папку, где в дальнейшем мы разместим образ ubuntu
sudo mkdir /var/www/deploy/ubuntu
Скопируйте все файлы из папки /mnt/
в папку /var/www/deploy/ubuntu
sudo cp -Rf /mnt/* /var/www/deploy/ubuntu
Также необходимо перенести и сам образ Ubuntu в папку /var/www/deploy/ubuntu
sudo cp ubuntu-20.04-server.iso /var/www/deploy/ubuntu
Измените владельца директории и его все его содержимого на Apache
sudo chown -R apache:apache /var/www/deploy
Задание 2. Подготовка загрузчика IPXE
IPXE - это свободная реализация программного обеспечения для начальной загрузки по сети. В первую очередь устанавливаем все необходимые пакеты для скачивания и сборки пакета
sudo yum install git-core gcc binutils make perl syslinux xz-devel
Перейдите в домашнюю директорию
cd ~
Скопируете репозиторий ipxe c официального git репозитория
git clone https://gitlab.resds.ru/tarabanov.if/ipxe.git
Перейдите в директорию с исходным кодом
cd ipxe/src/
Включаем поддержку сетевого хранилища
sed -i 's/#undef\tDOWNLOAD_PROTO_NFS/#define\tDOWNLOAD_PROTO_NFS/' config/general.h
Также нам необходим добавить поддержку команды Ping
sed -i 's/\/\/#define\ PING_CMD/#define\ PING_CMD/' config/general.h
sed -i 's/\/\/#define\ IPSTAT_CMD/#define\ IPSTAT_CMD/' config/general.h
sed -i 's/\/\/#define\ REBOOT_CMD/#define\ REBOOT_CMD/' config/general.h
sed -i 's/\/\/#define\ POWEROFF/#define\ POWEROFF/' config/general.h
Создайте встроенный скрипт embed.ipxe
vi embed.ipxe
Заполните скрипт такой конфигураций
#!ipxe
dhcp
chain http://${next-server}/boot.ipxe || shell
Не допускается пустая строка сверху
Скомпилируйте образ загрузчика IPXE
make bin-x86_64-efi/ipxe.efi EMBED=embed.ipxe
Скопируйте, скомпилированный загрузчик в папку /var/lib/tftpboot/
sudo cp bin-x86_64-efi/ipxe.efi /var/lib/tftpboot/
Дальше необходимо подготовить скачать загрузочное меню
s3cmd get s3://lab5/boot.ipxe ~/boot.ipxe
sudo cp ~/boot.ipxe /var/www/deploy/boot.ipxe
sudo chown -R apache:apache /var/www/deploy/
Задание 3. Настройка DNSMASQ
Установите пакет dnsmasq
sudo yum install dnsmasq
Запустите демон dnsmasq
sudo systemctl start dnsmasq
Добавьте в автозагрузку
sudo systemctl enable dnsmasq
Измените конфигурацию dnsmasq /etc/dnsmasq.conf
dhcp-range=192.168.0.15,192.168.0.15,12h
dhcp-option=option:router,192.168.0.1
dhcp-boot=ipxe.efi,192.168.0.10
enable-tftp
tftp-root=/var/lib/tftpboot/
log-queries
conf-dir=/etc/dnsmasq.d
Перезапустите dnsmasq
sudo systemctl restart dnsmasq
Для проверки состояния можно воспользоваться командой
sudo systemctl status dnsmasq
Отключите фаервол
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld
Задание 4. Снятие трафика
Во время установки операционной системы будет необходимо снять трафик который идет при взаимодействии labnode1
и labnode2
, самый простой способ записи в файл это
sudo tcpdump -i eth0 -w dump.pcap
Задание 5. Развертывания Ubuntu
Для дальнейшей работы нам необходим в инстанс labnode2
- Перед вами после перехода в консоль появится UEFI shell в нем необходимо вписать команду
exit
- После этого в меню вам необходимо выбрать Boot Manager, после этого выбрать вариант загрузки в виде
UEFI PXEv4
, дальше будет происходить получения ранее созданного ipxe - В меню загрузчика необходимо выбрать образ ubuntu, после нажатия
Enter
, будет загружен live образ Ubuntu с помощью которого в дальнейшем мы будет производить установку системы. На самом деле перед вами установочное меню операционной системы ubuntu 20 в серверном исполнении, и возможностью установки различных сервисов. В данной работе установка подразумевает под собой установку параметров в режиме по умолчанию. Для навигации по установочному меню используются кнопки клавиатуры:вверх-вниз
– для перемещения фокуса выделения по пунктам меню,enter
– для нажатия на необходимый пункт,пробел
– для выбора пунктов в меню со списком выбора,Tab
– для переключения между группами пунктов выбора. - В первом пункте по умолчанию выбран язык English – лучше его изменить на русский, для
избегания проблем с локализацией. Для этого переместить фокус выделения на русский язык и
нажать –
enter
. - В следующем пункте выберете вариант продолжения установки без обновления загрузчика
- В следующем меню оставить английскую раскладку клавиатуры и нажать готово
- В следующем меню – сетевые соединения – оставить все параметры по умолчанию и нажать
готово
- Меню ввода адреса прокси сервера оставить пустым и нажать – готово
- В меню выбора зеркала для скачивания архивов ничего не менять и нажать готово
- В меню настройки дисковых устройств выбрать пункт собственной разметки диска, и если он и выбран – нажать готово
Вы должны разметить диски по образцу изображения снизу
В итоге у вас должно получиться разметка как на скриншоте ниже
Когда вы убедитесь, что все сделали правильно нажмите «Готово»
В следующем меню заполнить все поля имени пользователя и пароля,в качестве имени пользователя и пароля можно использовать:
labuser
labpass1!
В новом меню включите установку сервера OpenSSH
и нажмите готово
В следующем меню, сразу нажмите готов
Дождитесь установки операционной системы и с помощью нажатия Cancel update and reboot
, произойдет перезагрузка системы, введите свой логин и пароль установленный в прошлых пунктах и попробуйте проверить работу сети с помощью команды
ping 192.168.0.10
Задание 6. Анализ трафика
- закончите снятие трафика
- перенесите дамп на аудиторный пк
- Ответьте на вопросы:
- Какие протоколы использовались во время установки ОС?
- Как выглядит сценарий взаимодействия при сетевой загрузки?
- За что отвечает dnsmasq?
- Что такое IPXE?
- Показать сценарий взаимодействия загрузки