Установка Debian 9 (Stretch) через PXE сервер сетевой загрузки

Компьютерное

В этом руководстве я расскажу как установить последнюю версию сервера Debian 9 через PXE-сервер с удаленных зеркал.

Для настройки среды PXE мы будем использовать DHCP-сервер ISC-DHCP, а файлы Netboot Debian будут обслуживаться в локальной сети сервером TFTPD-HPA. Установка системы через PXE может увеличить скорость установки как в случае развертывания нескольких установок Debian в течение короткого периода времени так и в тех случаях, когда машины не оснащены устройством CD/DVD ROM.

Требования

  • Debian 9 установленный на выделенной или на виртуальной машине.
  • Сетевой интерфейс с настроенным статичным IP адресом в том сегменте сети, который будет использоваться для динамического выделения IP-адреса и других связанных с ним настроек DHCP и PXE.
  • Локальный или удаленный аккаунт на сервере Debian с привилегиями root или прямой доступ к root аккаунту через консоль или SSH.
  • Интернет подключение необходимое для установки Debian по сети.

Начальная конфигурация

На первом этапе вам необходимо убедиться, что система Debian, которую мы будем использовать для установки новых серверов, имеет сетевой интерфейс, который будет использоваться для привязки к нему DHCP-сервера, настроенному со статическим IP-адресом.

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

sudo nano /etc/network/interfaces

Примерное содержимое файла:

auto ens33
iface ens33 inet static
  address 192.168.1.102
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255
  gateway 192.168.1.1
  dns-nameservers 192.168.1.2 8.8.4.4
  dns-search debian.local

Изображение 1После правки файла сетевых настроек сохраните его, закройте и опустите сетевой интерфейс, затем снова его поднимите для применения настроек так как показано ниже. В результате, ваша сетевая карта названная (к примеру) ens33, получит настройки которые вы указали в файле.

ifdown ens33

ifup ens33

Для проверки того что новый IP адрес был применен для сетевого интерфейса можно выполнить следующую команду:

ip a

Изображение 2Иногда настройки IP не применяются при простом перезапуске сети или отключении и включении сетевого интерфейса. В этом случае придётся перезапустить систему.

init 6

или

systemctl reboot

Так же перед продолжением советую выполнить полное обновление системы, если вы по каким-либо причинам его ещё не сделали:

apt update

apt upgrade

Следующим шагом будет установка некоторых необходимых утилит, которые будут использоваться для дальнейшего управления вашей системой из командной строки.

apt install wget bash-completion unzip

Установка и настройка сервера ISC-DHCP

Следующий шаг — установка сервера DHCPи настройка PXE, для этого войдите в систему под root или под аккаунтом с привилегиями root и установите пакет isc-dhcp-server из репозитория Debian 9.

apt install isc-dhcp-server

Теперь сохраните резервную копию основного файла настроек сервера ISC-DHCP  и измените содержимое конфигурационного файла на следующие настройки:

mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup

nano /etc/dhcp/dhcpd.conf

Содержимое dhcpcd.conf:

ddns-update-style none;
       option option-128 code 128 = string;
       option option-129 code 129 = text;
authoritative;
log-facility local7;
option arch code 93 = unsigned integer 16;
 
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.50 192.168.1.100;
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  option subnet-mask 255.255.255.0;
  option ntp-servers 192.168.1.102;
  option time-servers 192.168.1.102;

  option domain-name "debian.local";
  option domain-name-servers 192.168.1.1, 192.168.1.2;
        allow booting;
       allow bootp;
if option arch = 00:07 or option arch = 00:09 {
      filename "bootnetx64.efi";
} else {
      filename "pxelinux.0";
}
        next-server 192.168.1.102;
 
#default lease 4H, max  lease 8H
default-lease-time 14400;
max-lease-time 28800;
 
  }
 
  host nas {
  hardware ethernet 00:17:a4:f6:b2:2e;
  fixed-address 192.168.1.105;
}

В приведенном выше файле конфигурации замените следующие строки соответственно.

subnet {..
range 192.168.1.50 192.168.1.100;

Для определения диапазона сети в котором DHCP будет выделять IP адресадля вашего сегмента сети

option routers = IP вашего шлюза

option broadcast-address = широковещательный адрес

option subnet-mask = маска подсети

option ntp-servers

option time-servers = IP адрес вашего сетевого сервера времени NTP

option domain-name = доменное имя вашей сети

option domain-name-servers = IP адреса ваших DNS серверов

if option arch = 00:07 or option arch = 00:09 = если конечное устройство это машина с UEFI, загрузка пойдет с помощью файла bootnetx64.efi все другие не UEFI машины будут грузиться используя файла pxelinux.0. Обычно это машины со старым BIOS.

next-server 192.168.1.102 это IP адрес TFTP сервера где файлы pxelinux.0 или bootnetx64.efi в вашей сети. В нашем случае TFTP сервер расположен на той же самой машине.

default-lease-time = время по умолчанию для выделенного IP адреса, перед тем как истечет срок его аренды.

max-lease-time = максимальное время до срока истечения аренды IP адреса.

host nas {
  hardware ethernet 00:17:a4:f6:b2:2e;
  fixed-address 192.168.1.105;
}

Тут показано как статичный IP адрес объявляется DHCP сервером. Устройство с MAC адресом указанным в hardware ethernet всегда будет получать один и тот же IP адрес. Имя хоста указанное как nas — не имеет ззначения. вы можете указать любую произвольную строку.

Теперь откройте файл isc-dhcp-server в директории  /etc/default/ для правки, переместитесь в конец файла и добавьте вашу сетевую карту настроенную на статичный  IP адрес в строку INTERFACESv4 так как показано в примере ниже. Убедитесь что вы добавили соответствующее имя вашего сетевого интерфейса. Используйте команды ip или ifconfig для вывода списка существующих сетевых интерфейсов и поиска правильного имени.

nano /etc/default/isc-dhcp-server

Вывод  файла isc-dhcp-server

INTERFACESv4=”ens33”

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

systemctl restart isc-dhcp-server.service

systemctl status isc-dhcp-server.service

Иллюстрация 4

так же, выполните команду ss или netstat для вывода списка открытых сокетов и проверки что DHCP сервер работает.

netstat –tulpn

ss –tulpn

Картинка 5

Если утилита netstat не установлена в системе вы можете установить её этой командой:

apt install net-tools

Установка TFTP сервера

Чтобы обслуживать файлы netboot, нужные клиентам для загрузки Debian удаленно через PXE и TFTP, вам также необходимо установить TFTP-сервер в вашей системе. Одним из наиболее распространенных и защищенных TFTP-серверов, доступных для локальных сетей, является сервер tftpd-hpa. Пакеты TFTP-HPA можно установить из официальных репозиториев, предлагаемых Debian 9. Выполните следующую команду, чтобы установить сервер tftpd-hpa в Debian 9.

apt install tftpd-hpa

После того как пакет будет установлен, откройте файл конфигурации TFTPD-HPA и убедитесь что он имеет следующее содержимое.

nano /etc/default/tftpd-hpa

Вывод файла tftpd-hpa:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Иллюстрация 6

Если строка TFTP_OPTIONS имеет содержимое как показано ниже, убедитесь, что вы удалили флаг —create, для защиты TFTP-сервера.

TFTP_OPTIONS="--secure --create"

Флаг create позволяет удалённым клиентам загружать файлы на tftp сервер. Этот параметр опасен, поскольку произвольные пользователи могут загружать или удалять файлы из корневого пути сервера TFTP.

Наконец, включите службу в вашей системе и запустите TFTP-сервер. проверьте статус демона tftp, выполнив следующую серию команд:

systemctl enable tftpd-hpa

systemctl start tftpd-hpa

systemctl status tftpd-hpa

Изображение 7Вы так же можете использовать команду netstat или ss для получения списка всех открытых сетевых сокетов которые слушает ваша система. 67 и 69 порты UDP должны быть открытыми в вашей сети для корректной работы DHCP и TFTP сервера. Вы можете открыть эти порты в вашем фаерволле следующей командой:

ufw allow 67/udp

ufw allow 69/udp

Если вы используете правила iptables для управления политикой брандмауэра на своем сервере Debian, добавьте следующие правила, чтобы разрешить входящий трафик на портах 67 и 69 UDP, чтобы клиенты могли обращаться к серверам DHCP и TFTP.

apt-get install iptables-persistent

iptables -A INPUT -p udp --dport 67 -j ACCEPT

iptables -A INPUT -p udp --dport 69 -j ACCEPT

systemctl iptables-persistent save

systemctl iptables-persistent reload

На следующем шаге мы установим утилиты загрузчика Syslinux, выполнив следующую команду.

apt install syslinux-utils syslinux

Развертывание файлов сетевой загрузки Debian 9

Далее, идем на страницу Debian с файлами сетевой установки  по адресу https://www.debian.org/distrib/netinst и качаем последнюю версию архива Debian netboot используя утилиту wget.

wget http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz

Иллюстрация 8

После загрузки архива Debian netinstall распакуйте его содержимое напрямую в корень TFTP  следующей командой.

tar xfz netboot.tar.gz -C /srv/tftp/

Так же скопируйте файл memdisk поставляемый пакетом Syslinux в корень TFTP и осмотрите содержимое директории TFTP. Директория /srv/tftp должна иметь содержимое как показано на скриншоте.

cp /usr/lib/syslinux/memdisk /srv/tftp/

ls /srv/tftp/

Изображение 9

Теперь, создайте символьную ссылку для загрузочного файла UEFI предоставляемого пакетом Debian netinstall в корень TFTP. И выполните длинный вывод списка файлов директории TFTP чтобы проверить что символьная ссылка правильно указывает на файл сетевой загрузки UEFI.

ln -s /srv/tftp/debian-installer/amd64/bootnetx64.efi /srv/tftp/

ls -l /srv/tftp/

Иллюстрация 10Сервер PXE читает и запускает конфигурационные файлы расположенные в  директории pxelinux.cfg из корня TFTPв таком порядке: GUID файлы, MAC файлы и файл по умолчанию. Директория pxelinux.cfg уже была нами создана и размещена с конфигурационным по умолчанию файлом PXE потому как ранее мы извлекли требуемые файлы  из архива Debian netinstall в директорию/srv/tftp. Нет необходимости дополнительно изменять конфигурационный файл PXE по умолчанию из каталога pxelinux.cfg. Однако, который контролирует актуальное загрузочное меню для Debian называется txt.cfg и расположен в директории /srv/tftp/debian-installer/amd64/boot-screens/ . Дефолтный конфигурационный файл pxe  из директории pxelinux.cfg это по сути символьная ссылка на файл txt.cfg. Чтобы изменить или добавить другие параметры, которые нужно передать ядру в процессе сетевой загрузки или добавить другие записи или загрузить другие дистрибутивы Linux через PXE-сервер, вы должны открыть файл конфигурации txt.cfg PXE по умолчанию с помощью следующей команды и сделать соответствующие изменения.

nano /srv/tftp/debian-installer/amd64/boot-screens/txt.cfg

txt.cfg:

Стандартная установка:

label install
menu label ^Install
kernel debian-installer/amd64/linux
append vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet

Если вы хотите использовать режим восстановления Debian через PXE, добавьте запись в этот файл с приведенными ниже настройками.

Режим восстановления:

label rescue
menu label ^Rescue mode
kernel debian-installer/amd64/linux
append vga=788 initrd=debian-installer/amd64/initrd.gz rescue/enable=true --- quiet

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

Установка в режиме Expert:

label expert
menu label ^Expert install
kernel debian-installer/amd64/linux
append priority=low vga=788 initrd=debian-installer/amd64/initrd.gz --- 
include debian-installer/amd64/boot-screens/rqtxt.cfg

Установка в автоматическом режиме:

label auto
menu label ^Automated install
kernel debian-installer/amd64/linux
append auto=true priority=critical vga=788 initrd=debian-installer/amd64/initrd.gz --- quiet

Так же, как вы можете увидеть по содержимому, файлы образов ядра и initrd.gz, загружаемые в оперативную память клиента через сетевой протокол TFTP, после начального меню PXE, расположены в директории /srv/tftp/debian-installer/amd64/. Для дальнейшего обновления ядра и образа init вам достаточно будет заменить эти два файла на новые файлы поставляем Debian.

Вот и всё! Теперь вы можете загружать клиентские машины по сети, используя все те же самые записи в меню, какие отображаются при загрузке Debian с DVD и запускать установку Debian 9 через PXE сервер.

Для просмотра сообщений записываемых в журнал DHCP, которыми обмениваются клиенты и сервер в режиме реального времени, используйте команду tail для файла системного лога syslog.

Записи журнала TFTP-сервера можно посмотреть в файле daemon.log. Нижеприведенные скриншоты иллюстрируют выдержку записей журнала, выданных серверами DHCP и TFTP.

tail -f /var/log/syslog

tail -f /var/log/daemon.log

Иллюстрация 11

Картинка 12

Можете так же выполнить следующую команду, чтобы посмотреть журнал генерируемый сервером TFTP.

journalctl -fu tftpd-hpa

Чтобы посмотреть расширенную информацию об аренде, предоставленной сервером DHCP своим клиентам, отобразите содержимое файла dhcpd.leases с помощью команды cat, как показано в приведенном ниже примере.

cat /var/lib/dhcp/dhcpd.leases

Картинка 13

В итоге: у вас теперь есть в вашей сети PXE сервер. Вы можете запускать установку Debian по сети настроив ваши клиентские машины на загрузку по PXE. Вы можете запускать сетевую загрузку клиентских машин по нажатию специальных клавиш во время прохождения инициализации POST. Какие это клавиши, вам потребуется узнавать из документации производителя вашей материнской платы.

Сам процесс установки Debian по сети очень простой и (за несколькими незначительными отличиями) в принципе такой же как установка с DVD или загрузочной USB flash.

Оцените статью
( 1 оценка, среднее 5 из 5 )
Блог админа