Настройка tftp debian 10

Обновлено: 04.07.2024

У многих системных администраторов рано или поздно возникает необходимость поднять tftp-сервер для каких-либо целей (например для заливки новой прошивки на коммутатор). Далее будет показано как можно развернуть tftp-сервер на Debian/Ubuntu Linux.

Самый простой и быстрый способ. Для начала нужно установить tftpd (и заодно клиент - tftp - он пригодится для проверки работоспособности сервера):

По умолчанию в качестве корня сервера tftpd будет использовать директорию /srv/tftp и работать с правами пользователя nobody, если вас это не устраивает - поменяйте соответствующим образом строку

После изменения этой строки нужно перезапустить супер-сервер inetd:

Далее нужно создать корневую директорию сервера и задать её владельца (далее будем предполагать что все настройки выполнены по умолчанию):

Теперь нам нужно протестировать наш сервер. Для этого создадим тестовый файл в корне сервера:

И попробуем его скачать:

Если никаких ошибок выдано не было - проверяем содержимое скачанного файла. Если и тут всё хорошо - значит наш tftp-сервер нормально работает. Если же нет - проверьте права на корневую директорию сервера и её содержимое. Самой распространённой ошибкой является невозможность серверов прочитать свои собственные файлы.

Установим atftpd (в качестве клиента можно использовать как классический tftp, так и его родной atftp, разницы между ними практически нет, но последний немного удобнее использовать в различных скриптах по причине большего количества аргументов командной строки):

Сам atftpd может работать как в качестве самостоятельного сервера, так и в качестве одной из подсистем суперсервера inetd (или любого его аналога). По умолчанию он настроен на работу через inetd и для его функционирования в /etc/inetd.conf добавляется строка:

Параметров тут перечислено много и информацию по ним лучше всего искать в man-странице atftpd. Основное что нас тут интересует: сервис работает с правами пользователя nobody и считает корнем директорию /var/lib/tftpboot.

Создаём тестовый файл:

Пробуем скачать тестовый файл и просмотреть его содержимое:

Если всё пройдёт нормально то на стандартный вывод будет выдана надпись: "Test File". Если же вместо этого будут какие-то ошибки - нужно начинать искать проблему. Скорее всего она кроется в правах доступа (как и в предыдущем случае).

Здесь всё практически так же, как и в предыдущем случае, только нет необходимости запускать суперсервер inetd, поскольку atftpd в этом случае работает как самостоятельный сервер. Если интересен именно такой вариант то нужно сделать следующее: первым делом закоментировать строку запуска atftpd в /etc/inetd.conf:

и переазпустить суперсервер:

Далее нужно поменять значение переменной USE_INETD в файле /etc/default/atftpd с true на false:

Дополнительные опции для atftpd при такой настройке перечисляются в переменной OPTIONS всё того же файла. Настройки по умолчанию совпадают с настройками по умолчанию для режима "inetd", соответственно проверка работоспособности сервера проводится так же.

Заключение

Выше были показаны три разных способа организации tftp-сервера на Debian/Ubuntu Linux. Приведённые рекомендации можно с минимальными поправками использовать на большинстве современных дистрибутивов.

Следует отметить что для корректной работы в файрволле должен быть разрешён доступ к серверу по порту 69/udp

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

Вам нужно настроить TFTP сервер, а если машин много, то DHCP сервер .

BOOTP — это IP протокол, который информирует компьютер о его IP-адресе и где в сети получить загрузочный образ. DHCP (Dynamic Host Configuration Protocol) более гибок и обратно совместим с BOOTP. Некоторые системы могут быть настроены только через DHCP.

Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину. Теоретически, можно использовать любой сервер на любой платформе, которая реализует эти протоколы. В примерах этого раздела мы используем команды из SunOS 4.x, SunOS 5.x (так называемый Solaris) и GNU/Linux.

Для сервера Debian GNU/Linux мы рекомендуем tftpd-hpa . Он написан автором системного загрузчика syslinux и поэтому, скорее всего, не вызовет проблем. Также неплох atftpd .

4.5.1. Настройка DHCP сервера

Одним из свободных DHCP серверов является ISC dhcpd . В Debian GNU/Linux он доступен из пакета isc-dhcp-server . Вот пример его конфигурационного файла (обычно /etc/dhcp/dhcpd.conf ):

В этом примере определён единственный сервер servername , который работает в качестве DHCP, TFTP серверов и шлюза сети. Вам почти наверняка нужно изменить опцию domain-name, а также имя сервера и аппаратный адрес клиента. Опция filename должна содержать имя файла, который нужно получить по TFTP.

После редактирования конфигурационного файла для dhcpd , перезагрузите сервер командой /etc/init.d/isc-dhcp-server restart .

4.5.1.1. Включение загрузки PXE в конфигурацию DHCP

Вот другой пример dhcp.conf , который можно использовать, если включён метод предстартового выполнения среды (PXE) по TFTP.

Заметим, что для PXE загрузки в filename клиента pxelinux.0 записан системный загрузчик, а не образ ядра (смотрите ниже Раздел 4.5.4, «Копирование TFTP образов в каталог TFTP сервера»).

4.5.2. Настройка BOOTP сервера

Для GNU/Linux есть два BOOTP сервера. Первый — CMU bootpd . Второй, на самом деле являющийся сервером DHCP — ISC dhcpd . В Debian GNU/Linux они находятся в пакетах bootp и isc-dhcp-server соответственно.

Чтобы использовать CMU bootpd , во-первых, вы должны раскомментировать (или добавить) соответствующую строку в /etc/inetd.conf . Для этого в Debian GNU/Linux вы можете запустить update-inetd --enable bootps , затем /etc/init.d/inetd reload . Если BOOTP сервер работает не под Debian, то строка выглядит так:

Теперь вы должны создать файл /etc/bootptab . Внутри он напоминает хорошо знакомый и загадочный формат старых добрых BSD файлов printcap , termcap и disktab . Подробности смотрите в справочной странице bootptab . Для CMU bootpd вам нужно знать аппаратный адрес (MAC) клиента. Вот пример /etc/bootptab :

Вам нужно изменить, по крайней мере, параметр « ha » , который содержит аппаратный адрес клиента. Параметр « bf » содержит файл, который клиент должен получить по TFTP; подробности смотрите в Раздел 4.5.4, «Копирование TFTP образов в каталог TFTP сервера».

Напротив, настройка BOOTP в ISC dhcpd очень проста, так как здесь клиенты BOOTP считаются одним из вариантов клиентов DHCP. Некоторые архитектуры требуют сложной настройки для загрузки клиентов по BOOTP. Если у вас один из таких случаев, прочитайте раздел Раздел 4.5.1, «Настройка DHCP сервера». Если нет, то достаточно просто добавить директиву allow bootp в блок настройки подсети, содержащей клиента, в /etc/dhcp/dhcpd.conf и перезапустить dhcpd командой /etc/init.d/isc-dhcp-server restart .

4.5.3. Включение TFTP сервера

Чтобы сервер TFTP заработал, во-первых нужно проверить что включена tftpd .

Программа tftpd-hpa может быть запущена двумя способами. Она может запускаться по требованию службой inetd , или может быть настроена для работы как независимая служба. Выбор метода происходит при при установке пакета, и его можно изменить через перенастройку пакета.

Исторически, TFTP-серверы используют каталог /tftpboot для хранения образов. Однако, пакеты Debian GNU/Linux могут использовать другие каталоги, чтобы соответствовать Filesystem Hierarchy Standard. Например, tftpd-hpa по умолчанию использует /srv/tftp . Вам может потребоваться изменить примеры конфигурации для соответствия.

4.5.4. Копирование TFTP образов в каталог TFTP сервера

Далее, поместите нужный загрузочный образ TFTP из Раздел 4.2.1, «Где искать установочные образы» в каталог загрузочных образов tftpd . Вы можете сделать ссылку на этот файл для файла, который tftpd будет передавать для загрузки определённому клиенту. К сожалению, имя файла зависит от клиента TFTP и никак не стандартизовано.

Проводятся технические работы по обновлению компонентов блога. Возможно некорректное отображение некоторых элементов. Приносим свои извинения за временные неудобства. Мы стараемся сделать блог лучше =)

Переходи скоре.

четверг, апреля 04, 2013

Практика работы с TFTP

Всем доброго дня, сегодня мы с вами попробуем попрактиковаться в использование протокола TFTP . Для данной практики мы будем использовать 3 виртуальные машины, виртуально находящиеся в одной подсети. В моем случае это будут две машины, работающие под управлением Windows XP , и одна виртуальная машина с установленным на нее D ebian 6.0.7. На одну из виртуальных машин с Windows XP (виртуальная машина 1) мы установим популярный в определенных кругах Tftpd32, включающий в свой состав TFTP сервер и TFTP клиент. На второй виртуальной машине с XP мы попрактикуемся в использование штатного клиента TFTP встроенного в Windows . Ну а на машине с D ebian (виртуальная машина 3) мы познакомимся с азами TFTP в Linux . И так если вам все это интересно, то приступаем.

На первую виртуальную машину мы установим Tftpd32. Для этого скачайте его дистрибутив по ссылке, и произведите его установку. Думаю при этом у вас не должно возникнуть каких либо проблем. Далее в корне диска C создаем папку и помещаем в нее несколько файлов. В моем случае папка называется Public и в ней находятся файлы 1. bmp и 2. bmp . После этого запускаем Tftpd32 и нажав на кнопку Browse выбираем папку, файлы из которой мы будем раздавать при помощи TFTP , в моем случае это папка C :\ Public . В поле Server Interface выбираем сетевой интерфейс, на котором будет функционировать TFTP сервер, если на вашей виртуальной машине он всего один, то ничего не меняем. Про себя отмечаем что IP адрес первой виртуальной машины 192.168.1.41.


tftpd 32 сконфигурирован на раздачу файлов из папки Public по протоколу TFTP

После того как все перечисленные выше пакеты будут установлены приступим к их конфигурированию. По умолчанию TFTP сервер сконфигурирован на использование директории /srv/tftp. Возможно это и удобно, то так как мы учимся работать с TFTP мы попробуем это изменить и сделаем так чтобы TFTP сервер для своей работы использовал директорию / TFTP _ server . Для начала создадим данную директорию выполнив команды:

Далее отредактируем файл / etc / inetd . conf . Для этого выполним команду (вместо nano можно использовать любой другой текстовый редактор):

tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp

Заменяем аргумент /srv/tftp на / TFTP _ server . В итоге у вас должно получится:

tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /TFTP_server

После чего сохраняем файл inetd.conf. Чтобы только что внесенные настройки вступили в силу необходимо перезапустить службу openbsd - inetd , для этого выполняем команду:

Теперь можно считать что данная виртуальная машина настроена для работы. И далее мы перейдем к практике.

Практика 1. Копируем файлы с TFTP сервера с помощью встроенного TFTP клиента Windows

Для начала запустим консоль на виртуальной машине 2. И попробуем скачать файл 1. bmp с TFTP сервера виртуальной машины 1 (192.168.1.41). Для этого в консоли выполним команду:

После этого на время копирования произойдет пауза, по окончание которой вы увидите результат выполнения операции.

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

В данном случае вы меняете текущую директорию в консоли на C :\, а уже после этого осуществляете в нее копирование файлов с помощью TFTP.

Теперь если мы перейдем на виртуальную машину 1. И посмотрим на вкладку Log Viewer сервера tftpd 32, то мы сможем просмотреть статистику запросов поступающих от клиентов к данному TFTP серверу, в данном случае статистика содержит только два запроса на чтение файлов:


Статистика запросов поступающих на TFTP сервер виртуальной машины 1

Копирование файлов с TFTP сервера виртуальной машины 3 ( Debian ) осуществляется аналогичным образом, только потребуется выполнить команды:

Практика 2. Записываем файлы на TFTP сервер с помощью встроенного TFTP клиента Windows

Для того чтобы скопировать файлы находящиеся в папке C :\ Client (виртуальная машина 2) на TFTP сервера виртуальной машины 1 необходимо в консоли выполнить следующие команды:

Записанные файлы на виртуальной машине 1 появятся в директории C :\ Public .

Если мы попробуем выполнить копирование файлов аналогичным способом на виртуальную машину 3 с Linux, то получим ошибку Access Violation :


Ошибка Access Violation при попытки записи на tftpd

Дело в том, что tftpd установленный на виртуальную машину 3, позволяет осуществлять запись только в уже существующие файлы. Поэтому на необходимо выполнить на виртуальной машине 3 следующие команды:

Первой командой мы переходи в директорию /TFTP_server. Второй командой мы создаем в ней пустой файл с именем 1.txt. Третьей командой мы даем полные права на доступ к директории /TFTP и всем имеющимся в ней файлам.

После этого можно выполнять на виртуальной машине 2 команду:

Практика 3. Копируем файлы с TFTP сервера с помощью Tftpd32

Давайте попробуем скачать файлы хранящиеся на TFTP сервере виртуальной машины 3. Для этого на виртуальной машине 1 перейдем к окну приложения tftpd 32. Откроем вкладку TFTP Client и укажем в ней адрес TFTP сервера с которого мы хотим скачать файл, имя файла который мы хотим скачать, а так же имя файла под которым мы хотим сохранить скачанный файл на нашем компьютере.

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

Практика 4. Запись файлов на TFTP сервер с помощью Tftpd32

Теперь попробуем записать файлы на TFTP сервер виртуальной машины 3 ( Debian ) используя TFTP клиент встроенный в Tftpd 32. Как мы уже выяснили ранее, для того чтобы осуществлять запись файлов на tftpd сервер виртуальной машины 3, необходимо создать пустые файлы с таким же именем на данном сервере. Поэтому сначала выполняем следующие команды на виртуальной машине 3:

После этого возвращаемся к виртуальной машине 1. Опять же открываем вкладку TFTP Client и заполняем ее следующим образом:

После чего нажимаем на кнопку PUT . После чего будет произведена запись файлов на TFTP сервер виртуальной машины 3.

Практика 5 . Копируем файлы с TFTP сервера с помощью TFTP клиента в Linux

Теперь настало время поработать с Linux . Перейдем на виртуальную машину 3 и попробуем скачать с нее файлы хранящиеся на TFTP сервере виртуальной машины 1. Для этого в консоли введем:

Команда tftp позволяет перейти к управлению клиентом tftp. С помощью команды get мы отправляем к TFTP серверу запрос на чтение файла. В качестве параметров указываются адрес tftp сервера:имя запрашиваемого файла.

После чего файл 1. bmp будет скопирован с TFTP сервера виртуальной машины 1 и помещен в директорию / TFTP _ server виртуальной машины 3.

Практика 6. Записываем файлы на TFTP сервер с помощью TFTP клиента в Linux

В заключение попробуем записать файлы на TFTP сервер виртуальной машины 1 используя клиент виртуальной машины 3 с Debian . Для этого выполним на ней следующие команды:

Пока это все примеры использования TFTP. Надеюсь они пригодятся вам в вашей профессиональной практике.

Как: 10 шагов по настройке сервера tftpboot в UNIX / Linux (для установки Linux из сети с использованием PXE)


В этой статье мы поговорим о том, как настроить tftpboot, включая установку необходимых пакетов и конфигурации tftpboot.

Служба загрузки TFTP в основном используется для установки ОС на удаленной машине, к которой у вас нет физического доступа. Чтобы успешно выполнить установку ОС, должен быть способ перезагрузить удаленный сервер — либо с помощью wakeonlan, либо кто-то вручную перезагрузил его, либо каким-либо другим способом.

В этих сценариях вы можете соответствующим образом настроить службы tftpboot, и установка ОС может выполняться удаленно (вам необходим файл конфигурации autoyast для автоматизации шагов установки ОС).

В этой статье представлена ​​пошаговая процедура для SLES10-SP3 в 64-битной архитектуре. Однако эти шаги очень похожи на любые другие дистрибутивы Linux.

Требуемые пакеты

Следующие пакеты должны быть установлены для установки tftpboot.

Установка пакета

Установите пакеты для служб сервера dhcp:

После установки пакета syslinux файл pxelinux.0 будет создан в каталоге /usr/share/pxelinux/. Это необходимо для загрузки установочного образа ядра и образа initrd на клиентском компьютере.

Убедитесь, что пакеты успешно установлены.

Загрузите соответствующий tftpserver из репозитория вашего соответствующего дистрибутива Linux.

Шаги по настройке tftpboot

Шаг 1: Создайте каталог / tftpboot

Создайте каталог tftpboot в корневом каталоге (/), как показано ниже.

Шаг 2. Скопируйте изображение pxelinux

Образ Linux PXE будет доступен после установки пакета syslinux. Скопируйте этот путь в / tftpboot, как показано ниже.

Шаг 3. Создайте точку монтирования для ISO и смонтируйте ISO-образ

Предположим, мы собираемся установить дистрибутив SLES10 SP3 Linux на удаленный сервер. Если у вас есть диск SUSE10-SP3, вставьте его в дисковод или смонтируйте ISO-образ, который у вас есть. Здесь ISO-образ был смонтирован следующим образом:

Шаг 4: Скопируйте образы vmlinuz и initrd в / tftpboot

Скопируйте initrd в каталог tftpboot, как показано ниже.

Шаг 5: Создайте каталог pxelinux.cfg

Создайте каталог pxelinux.cfg в /tftpboot и определите определения загрузки pxe для клиента.

Следующие параметры используются для,

  • kernel — указывает, где найти установочное ядро ​​Linux на TFTP-сервере.
  • install — указывает параметры загрузки для передачи ядру установки.

Как указано выше, режим установки nfs используется для обслуживания установочных RPM и файлов конфигурации. Итак, настройте nfs на этом компьютере с каталогом / tftpboot в экспортированном списке. Вы можете добавить опцию «autoyast» в файл конфигурации autoyast, чтобы автоматизировать шаги установки ОС, в противном случае вам нужно будет выполнить шаги установки вручную.

Шаг 6: Смена владельца и разрешения для каталога /tftpboot

Никого не назначайте: никому в каталог /tftpboot.

Шаг 7: Изменить /etc/dhcpd.conf

Измените /etc/dhcpd.conf, как показано ниже.

Укажите интерфейс в /etc/syslinux/dhcpd для прослушивания запросов dhcp от клиентов.

Здесь эта машина имеет IP-адрес 192.168.1.101 на устройстве eth1. Итак, укажите eth1 для DHCPD_INTERFACE, как показано выше.

Шаг 8: Изменить /etc/xinetd.d/tftp

Измените файл /etc/xinetd.d/tftp, чтобы отразить следующее. По умолчанию значение параметра disable равно «yes», пожалуйста, убедитесь, что вы изменили его на «no», и вам нужно изменить запись server_args на -s / tftpboot.

Шаг 9: Без изменений в /etc/xinetd.conf

Нет необходимости изменять файл /etc/xinetd.conf. Используйте значения по умолчанию, указанные в файле xinetd.conf.

Шаг 10. Перезапустите службы xinetd, dhcpd и nfs.

Перезапустите эти службы, как показано ниже.

После перезапуска служб nfs вы можете просмотреть список экспортированных каталогов (/ tftpboot) с помощью следующей команды:

Наконец, настройка tftpboot готова, и теперь клиентский компьютер может быть загружен после изменения первого загрузочного устройства в качестве «сетевого» в настройках BIOS.

Если вы столкнулись с какой-либо ошибкой tftp, вы можете выполнить поиск и устранение неисправностей, загрузив некоторые файлы через службу tftpd.

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