Меню Рубрики

Установка tftp в fedora

How to set up a TFTP server on Fedora

Using data from spreadsheets in Fedora with Python

Storage management with Cockpit

Control the firewall at the command line

TFTP, or Trivial File Transfer Protocol, allows users to transfer files between systems using the UDP protocol. By default, it uses UDP port 69. The TFTP protocol is extensively used to support remote booting of diskless devices. So, setting up a TFTP server on your own local network can be an interesting way to do Fedora installations, or other diskless operations.

TFTP can only read and write files to or from a remote system. It doesn’t have the capability to list files or make any changes on the remote server. There are also no provisions for user authentication. Because of security implications and the lack of advanced features, TFTP is generally only used on a local area network (LAN).

TFTP server installation

The first thing you will need to do is install the TFTP client and server packages:

This creates a tftp service and socket file for systemd under /usr/lib/systemd/system.

Next, copy and rename these files to /etc/systemd/system:

Making local changes

You need to edit these files from the new location after you’ve copied and renamed them, to add some additional parameters. Here is what the tftp-server.service file initially looks like:

Make the following changes to the [Unit] section:

Make the following changes to the ExecStart line:

Here are what the options mean:

  • The -c option allows new files to be created.
  • The -p option is used to have no additional permissions checks performed above the normal system-provided access controls.
  • The-s option is recommended for security as well as compatibility with some boot ROMs which cannot be easily made to include a directory name in its request.

The default upload/download location for transferring the files is /var/lib/tftpboot.

Next, make the following changes to the [Install] section:

Don’t forget to save your changes!

Here is the completed /etc/systemd/system/tftp-server.service file:

Starting the TFTP server

Reload the systemd daemon:

Now start and enable the server:

To change the permissions of the TFTP server to allow upload and download functionality, use this command. Note TFTP is an inherently insecure protocol, so this may not be advised on a network you share with other people.

Configure your firewall to allow TFTP traffic:

Client Configuration

Run the tftp command to connect to the TFTP server. Here is an example that enables the verbose option:

Remember, TFTP does not have the ability to list file names. So you’ll need to know the file name before running the get command to download any files.

Like this:

Curt Warfield


Edgar Hoch

What crazy description for tftp configuration do you release into the world? Why should anyone be allowed to upload any files to the server without any restrictions? What application is there that requires this and you can’t use a more secure method (with authentication and authorization)?

You don’t need this to boot devices over the network. The only thing you need to do, apart from installing the packages, is to enable the socket with “systemctl enable -now tftpd.socket” and place the files needed for booting over the network in /var/lib/tftpboot/ or a subdirectory in it, preferably as owner and group root and only writeable for root and readable for all.

You should NOT make /var/lib/tftpboot/ writeable for all. You should NOT use the -c option. You don’t need to make a copy of tftpd.server and tftpd.socket in /etc/systemd/system/; if you want to make local changes, create a directory /etc/systemd/system/tftpd.server.d/ and create a file in it with the extension “.conf”, where you just enter the change – see “man systemd.unit”. This could be used, for example, to make changes to the options when calling the service:

ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot

Do NOT enter “WantedBy=multi-user.target”! You also don’t activate the tftpd.service, but tftpd.socket (see above). This has the advantage that the service only runs and occupies resources when it is needed (and after some time of inactivity (default 15 minutes) it stops itself).

Why should someone use the tftp client to download a file like server.logs (as in your example)? Somebody has to put the file there first.

TFTP is only needed for booting devices over the network, usually with PXE – to load a boot kernel, grub, or similar. Everything else the device should do via other services.

People should only use the tftp client to test the connection. Upload or download files to a server should only be done via secure services, e.g. ssh / scp / sftp / rsync via ssh or via network file systems.

Curt Warfield

Thank-you for taking the time to bring up some valid concerns.

The intent of the article was not meant to try to ask anyone to embrace tftp or to even suggest it should be anyone’s first choice. I would not expect any enterprise environments to ever use this in production.

Читайте также:  Установка противопожарных датчиков в потолочных нишах

This article was written as more of a way to just show how to configure a legacy application such as this.

It was even noted in the article that it is not a secure method of uploading files:

“There are also no provisions for user authentication. Because of security implications and the lack of advanced features, TFTP is generally only used on a local area network (LAN). ”

“Note TFTP is an inherently insecure protocol, so this may not be advised on a network you share with other people.”

But I have come across occasions where I’ve been asked how to set this up even with my recommendation to use a more secure method.



Инструменты пользователя

Инструменты сайта

Боковая колонна


Установка и настройка Linux утилит

Установка и настройка TFTP-сервера в Fedora Core

Процедура проверена в Fedora Core 9

Для установки у настройки TFTP сервера необходимы права суперпользователя (root), которые лучше получать с помощью команды «sudo». Для этого необходимо установить пакет «sudoers».

3) Добавляем tftp в список служб, автоматически стартуемых при загрузке Linux:

4) Выключаем SELINUX Данная операция может быть потенциально опасной!

В файле »/etc/selinux/config» меняем значение переменной SELINUX на «disabled»:

Также надо обязательно разрешить порт TFTP в iptables (или выключить iptables командой: /etc/rc.d/init.d/iptables stop)

5) Проверка работы TFTP сервера

Этот способ проверки может и не работать. Лучше всего убедится в работоспособности TFTP с помощью команд u-boot.

Если в текущей директории появился файл «test», то TFTP сервер работает корректно

Installing and setting TFTPD in Ubuntu

March 27th, 2006. Filed under: Linux.

Настройка и установка NFS в Fedora Core

2) Настройка конфигурации В этом файле содержится описание директорий, которые будут доступны для монтирования по NFS:

Пример записи в файле »/etc/exports», позволяющий монтировать директорию с файловой системой для Embedded Linux:

rw — возможность чтения и записи содержимого директории
no_root_squash — доступ к файлам с правами суперпользователя (root)
no_all_squash — сохранение uids и gids пользователя файлам
sync — NFS отвечает на запросы лишь после модификации файлов

Должны появится следующие надписи:

В случае, если NFS запускается в первый раз, то вместо «service nfs restart» необходимо написать «service nfs start».
Процедуру «restart» необходимо выполянть каждый раз, когда вы меняете записи в »/etc/exports».

4) Проверка NFS
Чтобы убедиться, что директории экспортированы, надо выполнить команду:

Если какие-либо директории из файла »/etc/exports» отсутствуют, то проверьте конфигурацию в файле.

После выполнения этой команды NFS сервер будет стартовать автоматически для уровней выполнения 3, 4 и 5.

Настройка и установка NFS в Ubuntu

Настраиваем, какие именно директории мы хотим открыть для совместного пользования и кому. Все это делается в файле /etc/exports:

В приведенном ниже примере я выделил директорию /data (директория с данными на сервере) в совместное пользование всем компьютерам с правами чтения и записи:

домашняя директория пользователя serhiy стала доступной в режиме только чтение для компьютера с IP Все остальные компьютеры сети к этому разделу доступа не имеют.

ro — права только на чтение. Можно и не указывать, так как она установлена по умолчанию.

rw — дает клиентам право на запись.

no_root_squash — по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать.

noaccess — запрещает доступ к указанной директории. Может быть полезной, если перед этим вы задали доступ всем пользователям сети к определенной директории, и теперь хотите ограничить доступ в поддиректории лишь некоторым пользователям.

Теперь нужно перезапустить nfs-kernel-server:

Если после этого вы захотите поменять что-нибудь в файле /etc/exports, то для того, чтобы изменения вступили в силу, достаточно запустить следующую команду:


Install a TFTP server on Fedora 16+

I tend to need to use TFTP to boot various embedded ARM systems. This is my short for-my-own-consumption guide on how to get that up and running on recent Fedora versions (2012).

Install and configure the server (Fedora 22 and later)

Install and configure the server (old style, Fedora 21 and earlier)

yum install -y tftp-server tftp

Older way of doing the same thing (pre Fedora 16):

Set up the boot dir to be read/writeble

Since the server by default will serve binaries from /var/lib/tftpboot I usually just make this globally readable for all user so I can recompile and write new kernels (uImage files) there:

Open the firewall

Fedora does not automatically disable the firewall for services that you install and configure (not always very helpful. ) Current approach:

Edit «services» for «permanent» and «runtime» to enable/open up service «tftp» on the local network (Fedora Workstation). Beware of the different zones!

Set up the firewall config to let TFTP through on the FedoraWorkstation or whatever the default zone is, and do it on the interface you plan to use.

This should be enough for TFTP to get through, and you should be able to test it, see below.

There may be some bug with TFTP preset (kernel issue). Then just open UDP on port 69 manually.

Читайте также:  Установка гарант консул на гранту

Older low-level approaches

In some older versions just edit /etc/sysconfig/iptables and open port 69 (TFTP) for UDP.

I am sure the graphical client for firewall configuration can be used for this too. The resulting rule will look something like this:

Then kick the Firewall with:

Copy some file to /var/lib/tftpboot

Try to fetch it from localhost:

Try to fetch it from some other host by using the IP number. If it works, you’re up and running.

Using a crossed ethernet-cable

When I do development on the road or on a computer connect to a wireless network where I do not have any local 192.168.1.x network, I avoid the hassle of using a local network for the machine by simply using a crossed ethernet-cable from the ethernet port on my computer, and setting up a local link.

  • Get a crossed ethernet cable. These usually have a RED connector in one end. Do not mix this up with your ordinary stash of patch cables!
  • Set up a link-local network on your ethernet plug using Network Manager in GNOME (custom config in the cogwheel, lower left in the UI), how else to do it I do not know. The interfaces have funky names like wlp2s0b1 these days. Select a static IPv4 address, set IP to and netmask to Reboot your machine and make sure that the ethernet comes up with that address and static config and your WLAN still works. Else screw around until Network Manager does its job.
  • Screw around with firewall-config to open TFTP for the local link. It seems the configuration for the local link is in a special zone named internal so edit this both for runtime and permanent setting.
  • Test as per above.

Also doing DHCP/BOOTP

Sometimes you want to assign clients a local IP number and serve them the kernel over TFTP right after that. A simplified version is to use BOOTP that just assigns an IP number and then serves the file using TFTP.

To do this, first install the ISC DHCP server package:

Edit /etc/dhcp/dhcpd.conf, if you want it to simply give a static IP number and a file to a certain ethernet hardware address do the following:

This tells the following to the DHCP server: we are managing the link-local IP address range in Someone with the ethernet hardware address xx:xx:xx:xx:xx:xx will appear, give them an IP number from the pool in thru and the tell them to get the file /zImage from the server at This will be done using TFTP so you need the TFTP server up and running as well.

Then fire up the DHCP server:

You may have to bring the statically assigned DHCP interface up and restart DHCP every time you reboot the client.


Для системного администратора

Создаем сервер сетевой установки Fedora/RHEL

Дистрибутив Fedora использует для установки весьма мощную и многофункциональную программу Anaconda, поддерживающую различные режимы работы и сценарии инсталляции. Вместе с рядом других технологий, в частности Spacewalk-сервером, вы можете значительно облегчить процесс развертывания и обслуживания вашей Linux-инфраструктуры.

Однако сегодня мы оставим Spacewalk-сервер в стороне и рассмотрим, как можно автоматизировать самую начальную стадию жизненного цикла серверов/рабочих станций – их развертывание. При этом в процессе установки мы постараемся обойтись без вмешательства оператора при помощи так называемого сервера сетевой установки. Для организации такого сервера мы используем следующие технологии:

  • PXE (Pre-Boot Execution Environment). Минимальное вмешательство человека подразумевает загрузку первой стадии инсталлятора по сети. Большинство выпущенных за последние два-три года сетевых карт и BIOS материнских плат поддерживают эту функцию. Как правило, загрузка по сети начинается, если на жестком диске отсутствует загрузчик, при старте нажата клавиша или в BIOS выбран соответствующий пункт меню. Первый вариант – отсутствие загрузчика на жестком диске – нас вполне устраивает.
  • DHCP-сервер. Предоставляет клиентам сетевые настройки и указывает место, где будут располагаться файлы, необходимые для загрузки с использованием Pre-Boot Execution Environment.
  • TFTP-сервер. Там мы и расположим все необходимые для начала инсталляции файлы. Нужно заметить, что мы можем одновременно поддерживать несколько вариантов дистрибутива, например, Fedora 9 и Red Hat Enterprise Linux 5.
  • Kickstart-файлы. Для каждого из дистрибутивов можно предусмотреть несколько вариантов установки, которые и будут задаваться при помощи kickstart-файлов. Kickstart-файл должен быть доступен по сети при помощи одного из протоколов: http/https, NFS, FTP. Необходимый kickstart-файл можно указывать и вручную, но, поскольку мы хотим максимально автоматизировать развертывание операционной системы, то нужно предусмотреть возможность автоматического выбора. Реализовать это можно следующими способами:
  • При помощи DHCP-сервера в зависимости от MAC-адреса клиента.
  • При помощи настроек PXE (конфигурационных файлов первой стадии загрузчика – pxelinux.0) в зависимости от MAC- или IP-адреса, полученного с DHCP-сервера. В последнем случае может понадобиться резервирование IP-адресов на DHCP-сервере.
  • При помощи Spacewalk-сервера. Мы не будем рассматривать данный вариант, но заметьте, что в зависимости от того, в какой из диапазонов IP-адресов попадает клиент, Spacewalk-сервер может выдавать свой kickstart-файл. При этом его содержимое будет создаваться «на лету» из базы данных, а на DHCP-сервере или при помощи настроек pxelinux.0 можно будет всегда задавать одно и то же месторасположение этого «динамического» kickstart-файла.
  • Сетевой репозиторий. Файлы дистрибутива, доступные по http, NFS, FTP или по всем трем протоколам. Быстрее всего установка будет производиться при выборе метода установки по NFS. Медленнее всего – по http.
Читайте также:  Установка подготовки природного нефтяного попутного газа

Теперь попробуем собрать все компоненты вместе. Не буду подробно объяснять ключи командной строки или подробности работы протоколов – ответы на эти вопросы можно найти в обширной документации, включая официальную от Red Hat. Приведу рецепт решения конкретной задачи. Также обратите внимание на утилиту system-config-netboot, которая может упростить некоторые шаги. Однако в учебных целях не будем пользоваться GUI. Подробно использование system-config-netboot описано в руководстве системного администратора из комплекта официальной документации Red Hat Enterprise Linux.

Для начала установим и настроим автоматический запуск tftp-сервера:
# yum -y install tftp-server
# chkconfig tftp on
# service xinetd start

По умолчанию корневой директорией tftp-сервера в RHEL5 выступает /tftpboot, а в Fedora 9 – /var/lib/tftpboot. Если вы решите использовать директорию, отличную от установленной по умолчанию, не забудьте прописать соответствующие правила в своем модуле SELinux.

Скопируйте в избранный каталог необходимые файлы. Для начала нам необходима первая стадия загрузчика – файл pxelinux.0. Документация на загрузчик и сам файл привносятся в систему пакетом syslinux:

# yum -y install syslinux

Далее копируем загрузчик в корневую директорию tftp-сервера:

# cp $(rpm -ql syslinux | grep pxelinux.0) /var/lib/tftpboot/

Создадим сервер инсталляции для двух дистрибутивов. В качестве примера возьмем Fedora 9 и Red Hat Enterprise Linux 5.1, но пойдет и любой другой дистрибутив, использующий Anaconda. Скопируем в /tftpboot ядро и initrd-образы обоих дистрибутивов, которые расположены в директории /images/pxeboot/ установочного диска. Предположим, оба ISO-образа дистрибутивов смонтированы в /mnt/loop/:

# mkdir /var/lib/tftpboot/
# cp /mnt/loop/RHEL_5.1/images/pxeboot/* /var/lib/tftpboot/rhel51/
# cp /mnt/loop/Fedora9/images/pxeboot/* /var/lib/tftpboot/fedora9/

Поскольку у нас два варианта дистрибутивов, предоставим оператору возможность выбора. Пусть в качестве информации наш загрузчик выводит на экран возможные варианты. Создадим текстовый файл /var/lib/tftpboot/boot.msg примерно следующего содержания:

f — install Fedora 9
r — install RHEL 5.1
q — boot normally

Кстати, в файле /usr/share/doc/syslinux-*/syslinux.doc (помимо опций, использующихся в конфигурационном файле загрузчика) описано, как сделать информационное сообщение более «веселым», добавив цвета, страницы, переключаемые при помощи функциональных клавиш, и различные управляющие символы. Теперь пришло время создать конфигурационный файл загрузчика, пользуясь все тем же руководством /usr/share/doc/syslinux-*/syslinux.doc:

# mkdir /var/lib/tftpboot/pxelinux.cfg
# vi /var/lib/tftpboot/pxelinux.cfg/default

Наш конфигурационный файл, используемый PXE по умолчанию, будет содержать следующие строки:

default q
display boot.msg
prompt 1
timeout 100

label f
kernel fedora9/vmlinuz
append initrd=fedora9/initrd.img ks=

label r
kernel rhel51/vmlinuz
append initrd=rhel51/initrd.img ks=

Вариант загрузки с меткой q описывает загрузку с локального диска. Данный вариант используется по умолчанию. Для загрузки ядра Fedora или RHEL необходимо выбрать f или r. Заметьте, мы воспользовались самым простым способом предоставления информации о kikstart-файле через параметры ядра, передаваемые опцией append. В случае использования Spacewalk-сервера можно было бы обойтись одним «динамическим» путем к kikstart-файлу. Без него, если необходимо, можно добавить еще несколько меток, указывающих на другие файлы, например:

label f2
kernel fedora9/vmlinuz
append initrd=fedora9/initrd.img ks=

Следующий компонент нашего сервера – служба DHCP. Устанавливаем его:

# yum -y install dhcp
# cp /usr/share/doc/dhcp-*/dhcpd.conf.sample /etc/dhcpd.conf

С учетом того, что имя kikstart-файла передается без помощи DHCP, а также упростив конфигурацию и не используя классы вендоров, отредактируем нашу область, добавив два параметра:

filename «pxelinux.0»;

Остальные настройки используются в соответствии с вашими пожеланиями. Конфигурирование DHCP-сервера, как и написание kickstart-файла, выходит за рамки этой статьи. Предполагается, что читатель может самостоятельно скопировать содержимое дистрибутива на сервер и сделать его доступным по NFS, FTP или http. В случае необходимости смотрите соответствующую документацию по настройке этих служб.

Создание kickstart-файла также не должно представлять сложностей. Его формат подробно описан в документации Red Hat. Проще всего создать его при помощи GUI-утилиты system-config-kickstart или взяв за основу /root/anaconda-ks.cfg.

Итак, все готово для начала сетевой установки. Включаем тестовую рабочую станцию или запускаем виртуальную машину и наблюдаем следующую картину:

Вводом имени соответствующего пункта меню запускаем инсталляцию соответствующего варианта дистрибутива.

Как вы видите на рис. 3, до использования конфигурационного файла default загрузчик ищет конфигурационные файлы, соответствующие вашему MAC-адресу, IP-адресу и подсетям. Этим можно воспользоваться для создания конкретных комбинаций «дистрибутив/kickstart-файл» для определенных серверов или рабочих станций. Управлять привязкой IP-адресов к конкретным машинам можно в конфигурационном файле DHCP-сервера, используя резервирование IP-адресов и классы вендоров.

Приведенное решение является лишь «заготовкой», на основе которой вы можете самостоятельно собрать нужную вам конфигурациию сервера инсталляции. Следующим шагом я бы порекомендовал попробовать посмотреть в сторону Spacewalk-сервера, являющегося Open Source-решением для управления Linux-инфраструктурой и помимо прочих задач также служащего для развертывания серверов и рабочих станций.

Когда у вас слишком много сайтов, и обычный хостинг, да даже и VPS не осиливает объемы, лучшим вариантом является взять сервер в аренду. У данного пути есть очень много плюсов по сравнению с тем же VPS, советую всем подумать. Я для себя похоже решил что беру..

Нужен сайт?! Тут тебе его сделают очень быстро и качественно – розробка сайтів

Этот пост December 10, 2008 at 7:24 pm опубликовал molse в категории Linux, Администрирование. Желающие могут оформить RSS подписку на комменты. Both comments and trackbacks are currently closed.


Добавить комментарий