Установка Ubuntu по сети и настройка кэширующего сервера обновлений.

  • Автор:

Ubuntu-LAN-Setup-000.jpg

В моей организации появилась необходимость перевести парк компьютеров на 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.

Ubuntu-LAN-Setup-001.jpgСтруктура конфигурационного файла 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 Должно получиться нечто следующее:

Ubuntu-LAN-Setup-002.jpgЕсли вы видите такую страницу, значит служба кэширования пакетов успешно настроена и работает.

Теперь давайте завернем наш сервер на нашу же службу кэширования, пущай качает помаленьку. Для этого необходимо на сервере в каталоге /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.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments