Настройка tftpd astra linux

Обновлено: 07.07.2024

TFTP — простой протокол для передачи файлов по сети, использует протокол UDP (по порту 69), не поддерживает аутентификацию и шифрование. TFTP часто используется для загрузки файлов (прошивок, конфигураций) на устройства (маршрутизаторы, мини-АТС и другие), но его можно использовать и для простой пересылки файлов по сети между компьютерами. Для Linux доступно несколько TFTP демонов (серверов): tftpd, atftpd, tftpd-hpa. Вы можете использовать любой из них. Я расскажу, как устанавливать tftpd.

Помимо tftpd нужно будет установить службу inetd. inetd — представляет собой сетевую службу, которая обрабатывает входящие соединения (TCP, UDP) и запускает соответствующую программу для обработки запроса. Я буду использовать службу openbsd-inetd. Есть еще служба xinetd, вы можете ее использовать, но настраивается она несколько иначе.

Установка сервера tftpd и службы openbsd-inetd

Установим сервер tftpd и openbsd-inetd, для этого выполним команду:

Настройка tftpd

По умолчанию TFTP сервер настроен на использование директории /srv/tftp. Мы настроим TFTP сервер так, чтобы он использовал для работы директорию /tftpboot. В этой директории будут храниться файлы, которые мы можем скачать с сервера или же закачать в нее. Отредактируем файл /etc/inetd.conf.

В файле найдите строки вида:

Аргумент /srv/tftp команды in.tftpd указывает на каталог в котором будут храниться файлы TFTP сервера. Заменим /srv/tftp на /tftpboot.

Создадим директорию /tftpboot:

Изменим права доступа:

Перезапуск службы inetd

Чтобы новые настройки вступили в силу, перезапустим службу inetd:

На этом установка TFTP сервера завершена, проверим его работу.

Проверка работы TFTP сервера, использование TFTP клиента

Для начала установим TFTP клиент, чтобы можно было подключаться к TFTP северу. Для установки TFTP клиента выполните в терминале команду:

Теперь создадим на сервере в директории /tftpboot какой-нибудь файл, например, myfile. Для создания файла myfile и записи в него текста «This is my file» выполните в терминале команду:

Теперь мы можем запустить TFTP клиент командой tftp. Команда tftp принимает в качестве параметра IP адрес сервера. Если вы запускаете клиент на локальном компьютере, то укажите IP адрес 127.0.0.1, если же на удаленном компьютере, то укажите IP адрес сервера.

Когда клиент запустится, вы попадете в режим ввода команд для клиента TFTP. Выполните команду get myfile, которая означает получить файл с именем myfile с сервера.

В случае, если вы все сделали правильно, файл myfile загрузится с TFTP сервера. Для выхода из TFTP клиента введите команду quit.

Установить пакет tftpd-hpa. Установить его можно из графического менеджера пакетов, или из командной строки командой:

Настройки пакета хранятся в файле /etc/default/tftpd-hpa. Приведём его к следующему виду (жирным шрифтом выделены рекомендованные к добавлению параметры):

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="–secure"
TFTP_OPTIONS="--ipv4 --secure --create --umask 027 --permissive"

В настройках указаны дополнительные опции:

Можно также поменять домашний каталог пользователя tftp в файле /etc/passwd на /srv/tftp.

Чтобы сервис начал работу с новыми настройками, его нужно перезапустить:

sudo systemctl restart tftpd-hpa

Создать директорию с репозиторием и примонтировать туда установочный диск:

sudo mkdir -p /srv/ftp/astra
sudo mount /dev/sr0 /srv/ftp/astra

В каталог /srv/tftp поместить содержимое каталога netinst и библиотеки *.c32 с установочного диска:

sudo cp /srv/ftp/astra/netinst/* /srv/tftp/
sudo cp /srv/ftp/astra/isolinux/*.c32 /srv/tftp/

Создать в /srv/tftp директорию pxelinux.cfg

sudo mkdir /srv/tftp/pxelinux.cfg

В этой директории создать файл default . Содержимое файла default для полной автоматизации должно содержать параметры, передаваемые файлу preseed.cfg:

В примере выше предполагается, что IP-адрес сервера для загрузки 10.0.2.254

Файл preesed.cfg из вложения является образцом. Его применение уничтожит все данные на носителе без запроса подтверждения.

В файле preseed.cfg с помощью текстового редактора указать источник, из которого должны будут скачиваться пакеты при установке, например репозиторий на сервере Яндекс (адрес сервера и путь к репозиторию выделены жирным шрифтом):

d-i mirror/ftp/directory string /astra/current/orel/repository
d-i mirror/ftp/proxy string

Выставить права на этот файл:

chmod 664 /srv/ftp/preseed.cfg

sudo debconf-get-selections --installer > seedlog.txt

из пакета debconf-utils на ранее установленной типовой системе.

На машине, на которую будет произведена установка ОС, выставить загрузку по сети.

1. Установка необходимых пакетов

isc-dhcp-server - D Н CP- сервер;

tftpd-hpa - TFTP- сервер;

pxelinux - загрузчик для сетевой загрузки PXE;

syslinux - загрузчик для сетевой загрузки DOS FAT / NTFS;

vsftpd - FTP- сервер.

Служба tftpd после установки запускается автоматически и сразу предоставляет доступ к каталогу /srv/tftp/, в котором далее и будут размещены файлы для сетевой загрузки.

2. Настройка DHCP

1) пропишем сетевой интерфейс в файле /etc/default/isc-dhcp-server:

2) настроим /etc/dhcp/dhcpd.conf.

В данной конфигурации dhcp сервер будет определять тип клиента (UEFI или Legacy BIOS) и отдавать ему нужный загрузчик.

3) после внесения изменений в настройки перезапустим сервис:

3. Настройка FTP- сервера

1) Пропишем настройки сервера в файле /etc/vsftpd.conf

2) Изменим домашний каталог пользователя:

3) Перезагрузим сервис:

4. Загрузка по сети.

Для загрузки по сети нужны следующие файлы:

  • pxelinux.0;
  • библиотеки syslinux;
  • ядро ОС;
  • специальный initrd.

Эти файлы находятся на установочном диске в каталоге netinst .

1) Создадим папку для репозитория /srv/repo/smolensk/ и примонтируем туда дистрибутив (это может быть как образ, так и непосредственно установочный диск).

При использовании установочного диска:

Или при использовании образа:

2) Создадим папку /srv/tftp/smolensk/ , куда положим ядро и initrd. И скопируем эти файлы в папку:

3) Скопируем в каталог /srv/tftp/ файл pxelinux.0 и необходимые библиотеки syslinux:

Pxelinux - это PXE-версия универсального загрузчика SYSLINUX. Функционал Pxelinux может быть расширен за счёт COM32 модулей SYSLINUX. Этими модулям мы и воспользовались.

4) Создадим каталог /srv/tftp/pxelinux.cfg/ :

5) И создадим в этом каталоге файл меню /srv/tftp/pxelinux.cfg/default со следующим содержимым:

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

  • hostname - имя хоста, которое будет использована при автоматической установке ОС;
  • domain - имя домена;
  • url - адрес, по которому должны быть доступны конфигурационные файлы.

По умолчанию в файле на первом месте стоит загрузка с локального жёсткого диска, чтобы после установки и перезагрузки система автоматически не стала снова устанавливаться.

5. Загрузчик

Для загрузки в режиме UEFI служит специальный EFI образ загрузчика grub, который можно скачать здесь .

Об автоматической установке дистрибутива «Astra Linux Special Edition»

Кратко процедура установки выглядит так:

Автоматическая установка «Astra Linux Special Edition»

В нашем случае необходимо, чтобы сервером автоматической установки ОС была Astra Linux Special Edition, тогда для отдачи файлов будем использовать ftp-сервер. Берем vsftpd устанавливаем и настраиваем на доступ без авторизации.

Настройка vsftpd

Сервер tftp может быть отдельным, например tftpd-hpa, или, как уже упоминалось, можно использовать tftp сервер встроенный в dnsmasq - берем второй вариант. Делаем каталог tftp в /srv/ftp.

Настройка dnsmasq как dhcp и tftp сервера

Организация каталога для tftp-сервера

Копируем в /srv/ftp/tftp из netinst файлы linux (ядро), pxelinux.0, initrd. gz (временная файловая система, используемая ядром при начальной загрузке). Далее, в /srv/ftp/tftp создаем каталог pxelinux. cfg и там делаем файл с именем default (его будет получает целевой компьютер). Данный файл содержит параметры загрузки ядра. В параметре url и указывается файл с ответами на вопросы установщика.

Пример файла default

Создаем файл preseed. cfg с ответом на вопросы инсталлятора в /srv/ftp/tftp. Пример файла приведен ниже. Комментарии к некоторым ответам имеются, остальное можно без труда найти в сети. Отмечу лишь несколько особенностей специфичных для Astra Linux:
  • Для установки базовой системы + рабочего стола Fly добавляем строку: tasksel tasksel/first multiselect Base, Fly
  • не настраиваем сервисы ALD и службу kiosk (служба разграничения доступа к файлам) добавляем следующие строки:
    astra-license astra-license/license boolean true
    krb5-config krb5-config/kerberos_servers string
    libnss-ldapd libnss-ldapd/ldap-base string
    libnss-ldapd libnss-ldapd/ldap-uris string
    libnss-ldapd libnss-ldapd/nsswitch multiselect services
    ald-client ald-client/make_config boolean false
    ald-client ald-client/manual_configure note
    tasksel tasksel/astra-feat-setup multiselect

Пример файла preseed.cfg

d-i passwd/make-user boolean true

console-setup console-setup/fontface select Terminus

d-i console-cyrillic/toggle select Caps Lock

Так как мы используем ftp вам необходимо перекинуть репозиторий с пакетами (папки dists, pool) c cd в предварительно созданный каталог в корне ftp сервера и прописать этот путь в preseed файле (см. пример pressed файла). Инфраструктура для автоматизированной установки готова.

Некоторые выявленные проблемы

Большинство изменений сделаны в initrd, под спойлерами команды для разборки\сборки initrd.

Читайте также: