Администрирование компьютеров в локальной сети до загрузки операционной системы

в 8:46, , рубрики: разработка, сетевое администрирование, Сетевые технологии, системное администрирование, удаленная установа ос, удаленное администрирование

Привет, хабрахабр! Эта моя первая статья и посвящена она удаленному администрированию. Надеюсь, что она будет интересна не только системным администраторам, но и просто продвинутым юзерам, так как использование некоторых компонентов может вам пригодиться.

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

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

Что для этого нужно?
Клиентская машина должна обладать сетевой картой, которая поддерживает стандарт PXE (есть практически в каждой сетевой карте). Не буду описывать принцип работы данного стандарта, в интернете есть много информации для ознакомления. Скажу лишь, что он позволяет загружать файлы по сети. Ну и в BIOS нужно включить загрузку по сети. Настройка клиентской части на этом закончена.

image

Сервер должен включать DHCP и TFTP. Чтобы не заморачиваться с настройками, я использовал программу TFTPD32, которая уже включает все нужные компоненты. Программа находится в свободно доступе с открытым исходным кодом.

Для настройки DHCP пришлось побегать и снять MAC адреса с каждого компьютера. Это нужно для идентификации компьютеров в сети. В TFTP сервере нужно было указать только папку выгрузки файлов и поместить в нее все необходимое. Загрузчик, который будет выполнять все операции — grub4dos. Был выбран именно этот загрузчик, так как опыта по созданию загрузочных USB-накопителей с ним достаточно, да и информации куча в интернете.

Теперь о принципе действия.

image

1. При включении, компьютер обращается к DHCP серверу за IP адресом.

2. DHCP сервер, согласно своей настройке, выдает нужный IP клиенту, так же IP адрес TFTP сервера и имя загрузочного файла. В моем случае файл загрузчика grub4dos — grldr.

3. Клиентский компьютер, приняв запрос, устанавливает себе IP и обращается к TFTP серверу с запросом загрузочного файла.

4. TFTP сервер отдает запрашиваемый файл. Выглядит это так:

Ответ сервера

image

5. Загрузив файл, PXE запускает загрузчик и заканчивает свою работу. Дальнейшая работа выполняется загрузчиком. После запуска загрузчик запрашивает файл menu.lst. В этом файле содержаться инструкции для установки ОС или запуска утилит.

6. Сервер передает файл menu.lst

7. Программа-загрузчик на клиенте «читает» инструкции и выполняет их, загружая с TFTP сервера требуемые файлы.

Суть в том, что программа TFTPD32 всегда выдает один и тот же файл инструкций menu.lst. То есть, без изменений нельзя было назначать разным компьютерам разные задачи. Раз программа с открытыми исходниками, я нашел в коде то место, где программа отправляет файл menu.lst и изменил его.

В итоге, как только клиентская машина запрашивает у сервера файл menu.lst, программа, посредством http протокола отправляет GET запрос на веб-сервер (http://localhost/getmenulst.php?ip=IP) для запроса файла инструкций для конкретного IP. Файлы инструкции хранятся в базе.

Для наглядности, приведу новую схему.

image
Далее стояла задача подготовить образы для установки ОС систем и загрузки утилит, а так же написать файлы инструкций menu.lst.
Например, menu.lst для установки windows 7 выглядит так:

Install Windows 7

color blue/green yellow/red white/magenta white/magenta
timeout 0
default 0
title Install Windows 7
pxe keep
chainloader --raw (pd)/pxeboot.n12

Для загрузки Acronis True Image:

Loading Acronis

color blue/green yellow/red white/magenta white/magenta
timeout 0
default 0
title boot acronis
#root (hd0,0)
kernel /kernel.dat vga=788 ramdisk_size=32768 acpi=off quiet noapicmbrcrcs on
initrd /ramdisk.dat
boot

Не буду приводить все опции, чтобы не нагружать статью.

Очень много времени ушло на сборку образов с требуемым софтом и подготовки их для установки по сети, так как это не просто копирование файл в каталог. Из ОС систем я собрал только Windows 7 и Windows XP. Пришлось влезать в Acronis True Image, чтоб сделать автоматическое восстановление системы из образа. Так же закачал ISO образы нескольких нужных утилит.

Для управления всем этим «чудом» написал небольшую панель администрирования на PHP+MySQL. Она позволяет добавлять/удалять компьютеры, добавлять/удалять опции, а так же устанавливать опции загрузки. Так же мы можем увидеть время последнего включения компьютера и опцию, которая ему установлена. По умолчанию устанавливается «Загрузка с жесткого диска».

image

image

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

Подведу итоги. Данная система работает в реальном времени. Порой я нахожу баги и исправляю их, добавляю новые опции.

Порядок работы такой: мне звонят и говорят, что не загружается система на компьютере «Имя». Я захожу в панель администрирования, ставлю опцию «Загрузка Acronis» и прошу человека на том конце провода перезагрузить компьютер. Дальше система восстановит сама все из образа и сообщит пользователю, что он может работать. Если устанавливается новый компьютер, его MAC вносится в базу данных, в панели ставится опции установки ОС и Windows устанавливается сама без какого-либо участия.

Это очень удобно, потому что часто мне приходится уезжать, а так я могу исправлять проблемы, находясь где угодно. Стоит отметить, что нет финансов на приобретение качественного оборудования. Живем, как можем.

Конечно, до полной автоматизации еще много работы, но поверьте, жить мне стало легче.

Автор: 0x5cef

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js