В моей организации появилась необходимость перевести парк компьютеров на Ubuntu. В свете чего начались поиски решения установки операционной системы по локальной сети. Также одновременно возник вопрос обновлений операционной системы, ведь я понимал, что одновременная установка операционки на кучу машин приведет к большому потреблению трафика для обновлений системы до актуального состояния. Ниже постараюсь изложить, как я вышел из положения.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Сервер мой настроен по статье Уварова А.С. Linux. Настройка роутера (NAT + DHCP + Squid), в качестве DHCP сервера использован Dnsmasq, также локальный веб-сервер lighttpd настроен по статье SARG - анализируем логи прокси-севера Squid, а значит и у всех проблем возникнуть не должно. Итак, приступим.
Постановка задачи:Настроить установку операционной системы по локальной сети для возможности одновременной установки на большое количество машин (не бегать же к ним ко всем с дисками). Настроить на сервере службу, которая будет кэшировать обновления операционных систем.
Необходимо это для разгрузки интернет канала. Да и по логике, зачем каждому компьютеру тянуть одни и те же обновления из интернет, если можно один раз скачать их, положить на диск и пускай все остальные эти обновления внутри локальной сети забирают.
Системные требования:
- На сервере: жесткий диск достаточного объема.
Я взял полгиговый жесткий диск, пока хватает. Для создания полного зеркала одного инсталлятора Ubuntu требуется около 80Gb. Мне такое решение не подошло, т.к. работаю я в государственной общеобразовательной школе и вопрос финансирования IT, сами понимаете, на каком уровне. Потому я решил настроить кэширующий сервер обновлений. Т.е. на диск будут сохраняться только те пакеты, которые нужны разным компьютерам. А не используемые пакеты на диске лишнего места занимать не будут. Причем, спешу заметить, что архитектура роли не играет. Кэширующая служба вытягивает все необходимые обновления из интернет, несмотря на архитектуру процессора и прочее. Просто тянет и складывает у себя.
- На рабочей станции: компьютер должен уметь загружаться по сети.
Включить загрузку по сети можно зайдя в BIOS. Поскольку разные материнские платы имеют разные прошивки BIOS, привести алгоритм действий не представляется возможным. Одно можно сказать точно: включение загрузки по сети обычно находится рядом с включением сетевого адаптера. Также для загрузки машины по сети можно попробовать нажать и удерживать клавишу F8 во время включения компьютера. Как правило, после удерживания F8 появляется меню выбора источника за-грузки операционной системы. Выбираем сетевой адаптер (обычно в меню присутствует пункт, в котором фигурирует слово LAN) и загружаемся по сети.
Реализация:Ну вот, пробрались сквозь дебри вступления и приступим к самому вкусному.
Настройка загрузки компьютеров по сети.
Как я уже упоминал, мой сервер настроен в соответствии с рекомендациями Уварова А.С. и сайта Записки IT специалиста, а значит, DHCP сервер у же установлен и настроен на раздачу IP адресов внутри локальной сети. Все, что необходимо сделать, это дописать несколько строк в конфигурационный файл DHCP сервера. Находится файл в каталоге /etc, и называется этот файл dnsmasq.conf. Открываем его с помощью mc.
Структура конфигурационного файла dnsmasq показалась мне несколько запутанной, поэтому я добавляю необходимые мне настройки в начало файла, чтобы не бегать по нему в поиске необходимой строки. Я добавил в конфигурационный файл dnsmasq следующие строки:
# PXE
#Включаю службу загрузки по LAN
enable-tftp
#Указываю корневой каталог службы загрузки по LAN
tftp-root=/var/tftpboot
#Указываю загрузочный файл для загрузки по LAN
tftp-boot=pxelinux.0
Если Вам не по душе добавление строк в начало файла, все эти строки можно найти в конфигурационном файле и соответствующим образом настроить/раскомментировать.
Всё. На этом настройка DHCP сервера закончена. Не забудем перезагрузить его:
sudo service dnsmasq restart
DHCP сервер настроен, однако загрузочные файлы мы ему еще не положили и их надо где-то взять. К сожалению, в стандартной поставке Ubuntu на диске этих файлов нет. Идем на ресурс http://mirror.yandex.ru/ubuntu-cdimage/netboot/maverick/ (для Ubuntu 10.10), выбираем архитектуру (я выбрал i386) и скачиваем файл netboot.tar.gzк себе в домашний каталог:
cd /home
wget http://archive.ubuntu.com/ubuntu/dists/maverick/main/installer-i386/current/images/netboot/netboot.tar.gz
Далее создадим каталог, в котором будут лежать наши загрузочные файлы:
sudo mkdir /var/tftpboot
Распакуем скачанный архив с загрузчиком в каталог, который указали DHCP серверу в качестве загрузочного:
sudo tar -xvf /home/netboot.tar.gz -C /var/tftpboot
Обратите внимание - буква С большая!
Все, с загрузчиком разобрались. Любая машина теперь может загрузиться через LAN и даже начнется установка, однако... хотелось, чтобы клиенты не ходили в интернет за пакетами и обновлениями, а тянули их с локального сервера, а уж сервер, в случае необходимости докачивал необходимое из интернет.
Установка и настройка службы кэширования пакетов apt-cacher-ng.
Для начала установим службу:
sudo apt-get install apt-cacher-ng
После создадим каталог, в котором apt-cacher-ng будет хранить свое добро. Еще раз напомню, места на диске должно быть много:
sudo mkdir /data/repository/apt-cacher-ng
У меня в точку /data примонтирован второй жесткий диск. У Вас, возможно, путь к каталогу будет отличаться от моего.
Служба apt-cacher-ng работает от имени apt-cacher-ng, странно, правда? Зададим владельца и группу владельца каталога для устранения проблем с записью и хранением файлов:
sudo chown apt-cacher-ng /data/repository/apt-cacher-ng
sudo chgrp apt-cacher-ng /data/repository/apt-cacher-ng
Можно сходить полюбоваться на наше творение:
cd /data/repository
ls -la
Смотрим на владельца и группу владельца каталога apt-cacher-ng. Должно быть apr-cacher-ng.
Осталось только сконфигурировать службу apt-cacher-ng, делать это будем с помощью редактора mc, однако и nano вполне подойдет.
Поехали:
Открываем в редакторе файл /etc/apt-cacher-ng/acng.conf, правим/поверяем следующие строки:
CacheDir: /data/repository/apt-cacher-ng
Это каталог в котором apt-cacher-ngбудет хранить свои файлы и которому мы меняли владельца.
LogDir: /data/logs/apt-cacher-ng
У меня все логи лежат в нестандартном месте (мне показалось так удобнее - все рядом и упорядочено), потому я указываю путь к файлу лога.
Port:3142
Порт, на котором будет работать служба.
ReportPage: acng-report.html
Здесь указывается имя файла в котором будет генерироваться отчет о работе службы.
Вносим необходимые правки, сохраняем файл, перезапускаем службу:
sudo service apt-cacher-ng restart
После рестарта службы ее доступность можно проверить по адресу: http://адрес_локального_сервера:3142 Должно получиться нечто следующее:
Если вы видите такую страницу, значит служба кэширования пакетов успешно настроена и работает.
Теперь давайте завернем наш сервер на нашу же службу кэширования, пущай качает помаленьку. Для этого необходимо на сервере в каталоге /etc/apt/apt.conf.d создать файл с инструкцией обращения к службе кэширования:
sudo touch /etc/apt/apt.conf.d/01proxy
Открываем только что созданный файл и прописываем там инструкцию обращения к службе кэширования:
Acquire::http { Proxy "http://127.0.0.1:3142"; };
Сохраняем и закрываем файл.
Проверяем что получилось:
sudo apt-get update
sudo apt-get upgrade
После выполнения этих двух команд в каталоге, который Вы указали в качестве рабочего для службы apt-cacher-ng должны произойти изменения (добавятся каталоги с репозиториями и списками файлов).
И напоследок: как заставить установку по сети забирать пакеты из службы кэширования.
В процессе установки операционной системы на одном из этапов установщик спрашивает про зеркало с которого скачать пакеты (у нас ведь на сервере только загрузчик, самих пакетов нет), а после этого установщик спрашивает адрес прокси-сервера если таковой имеется. В адрес прокси-сервера вписываем адрес локального сервера, на котором запущена служба кэширования пакетов.
В моем случае это: http://192.168.0.1:3142
К сожалению скрины установщика найти не могу, обратите внимание на то, что зеркало необходимо выбирать ru.archive.ubuntu.com, а уж прокси - локальный.
Если у Вас уже есть машины с установленными Ubuntu, то для настройки их на обращение к локальному серверу кэширования пакетов необходимо сделать следующее:
В файл /etc/apt/apt.conf на локальной машине добавляем следующую строку:
Aсquire::http::proxy http://адрес:порт
В моем случае это Aсquire::http::proxy http://192.168.0.1:3142
Вот вроде как и все. Успехов!
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии