ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Создание сервера Netboot.XYZ с использованием Pi-hole для установки дистрибутивов Linux по сети

Создание сервера Netboot.XYZ с использованием Pi-hole для установки дистрибутивов Linux по сети

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

Если вы похожи на нас, у вас, вероятно, есть куча компьютеров. Все эти компьютеры, вероятно, работают под управлением Linux (верно?)

Если это так, то вы, вероятно, устали создавать флэш-накопители каждый раз, когда хотите установить операционную систему, подходить с ними к компьютеру, вставлять флэш-накопитель, пытаться найти ключ, который открывает меню загрузки для этой модели … и т.д. и т.п. вы знаете, как это происходит.

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

Мы собираемся показать вам метод с использованием DNS-сервера PiHole, но есть много других маршрутизаторов, которые также поддерживают это.

 

Что вам понадобится для этого:

  1. Либо виртуальную машину, либо отдельную машину, которая будет действовать как фактический сервер Netboot. В нашем случае мы просто использовали виртуальную машину Proxmox (большой сюрприз, да?) но здесь будет достаточно всего, что работает под управлением Ubuntu, с объемом памяти не менее 4 гигабайт.
  2. Сетевой DNS-сервер, который обрабатывает DHCP для вашей сети. Вам нужно будет создать резервирование DHCP для сервера netboot и сделать его статичным каждый раз, когда клиентский компьютер ищет его. Вы также можете выбрать свой маршрутизатор, поддерживающий netboot, но поскольку наш не поддерживает, мы сделаем это с помощью Pi-hole.
  3. Хорошее знание систем Linux и контейнеризации Docker
Эта статья для довольно продвинутых пользователей. Мы ожидаем, что вы заранее знаете команды Linux, сеть и Docker.

Шаг 1: Настройка сервера Netboot

Вы собираетесь запускать часть программного обеспечения под названием netboot.xyz в контейнере docker.

Итак, на вашей новой виртуальной машине Ubuntu или компьютере первое, что вам нужно будет сделать, это установить docker и docker compose. У нас есть замечательное руководство о том, как это сделать здесь.

За пределами вашего домашнего каталога вы захотите создать следующие каталоги в этой структуре:

mkdir netboot_xyz
cd netboot_xyz
mkdir assets 
mkdir config

 

Следующее, что вам понадобится, – это файл docker compose YAML. Ниже мы покажем вам, как выглядит наш, и вы сможете адаптировать его к вашим настройкам:

version: "2.1"
services:
  netbootxyz:
    image: lscr.io/linuxserver/netbootxyz:latest
    container_name: netbootxyz
    environment:
      - PUID=1000 #current user
      - PGID=1000 #current group
      - TZ=Etc/UTC
      # - MENU_VERSION=1.9.9 #optional, sets menus version, unset uses latest
      - PORT_RANGE=30000:30010 #optional
      - SUBFOLDER=/ #optional
    volumes:
      - /home/doc/netboot_xyz:/config
      - /home/doc/netboot_xyz:/assets #optional
    ports:
      - 3000:3000
      - 69:69/udp
      - 8080:80 #optional
    restart: unless-stopped

 

Это показывает, что веб-сервер создается на порту 8080 для ваших ресурсов (в основном, ISO), а также сервер управления на порту 3000.

 

Обратите внимание на абсолютные пути в разделе тома. Убедитесь, что эта часть выполнена правильно, иначе она не запустится.

Теперь запустите контейнер с помощью:

docker compose up -d

 

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

docker ps

 

Создание сервера Netboot.XYZ с использованием Pi-hole для установки дистрибутивов Linux по сети

 

Перейдите на http://your.server.here:3000 и убедитесь, что у вас появилось меню netboot.xyz. Если оно загрузится, вы готовы настроить свой Pi-hole.

 

Шаг 2: Настройка Pi-hole для PXE

SSH на сервер вашего Pi-hole и выполните следующие действия:

 cd /etc/dnsmasq.d
 nano 07-pxe.conf

 

Вставьте следующее во вновь созданный файл. Ссылка на Linuxserver.io для этого, а также конфигурации для множества других маршрутизаторов.

hcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,netboot.xyz.kpxe,,192.168.1.YOURSERVER
dhcp-match=set:efi32,60,PXEClient:Arch:00002
dhcp-boot=tag:efi32,netboot.xyz.efi,,192.168.1.YOURSERVER
dhcp-match=set:efi32-1,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32-1,netboot.xyz.efi,,192.168.1.YOURSERVER
dhcp-match=set:efi64,60,PXEClient:Arch:00007
dhcp-boot=tag:efi64,netboot.xyz.efi,,192.168.1.YOURSERVER
dhcp-match=set:efi64-1,60,PXEClient:Arch:00008
dhcp-boot=tag:efi64-1,netboot.xyz.efi,,192.168.1.YOURSERVER
dhcp-match=set:efi64-2,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64-2,netboot.xyz.efi,,192.168.1.YOURSERVER

 

Сохраните и перезапустите Pi-hole.

 

Шаг 3: Тестирование установки

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

Вам также нужно убедиться, что вы выделили виртуальной машине достаточно оперативной памяти, или, если вы делаете это на Bare metal, убедитесь, что на компьютере есть не менее 4 гигабайт оперативной памяти. Мы обнаружили, что некоторые ISO-файлы отказываются загружаться, если в оперативной памяти не остается больше этого (Proxmox VE – один из них).

Это приведет к загрузке iPXE по умолчанию, где netboot.xyz должен перехватить его и вывести вас в меню загрузки:

Создание сервера Netboot.XYZ с использованием Pi-hole для установки дистрибутивов Linux по сети

 

В этом меню вам нужно перейти в раздел “Сетевые установки Linux” и выбрать дистрибутив, который вы хотите установить. Netboot.xyz возьмет это оттуда, загрузив необходимые файлы, и в конечном итоге приведет вас к установщику выбранной вами операционной системы. Если вы используете Bare metal, возможно, вам придется нажать клавишу меню загрузки и выбрать iPXE для вашего загрузочного устройства.

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

Exit mobile version