Настройка TFTP-сервера в CentOS 8
Полная форма TFTP — Тривиальный протокол передачи файлов. Он работает так же, как FTP (протокол передачи файлов). Но TFTP не имеет встроенной функции безопасности. TFTP предназначен для работы в качестве общедоступного (в частной сети) сервера конфигурации или встроенного программного обеспечения. TFTP также является важной частью настройки сетевого загрузочного сервера. Протоколы сетевой загрузки PXE и BOOTP используют TFTP для загрузки необходимых загрузочных файлов. В этой статье я собираюсь показать вам, как настроить CentOS 8 в качестве TFTP-сервера. Итак, начнем.
Содержимое
Установка TFTP-сервера:
Пакет TFTP-сервера доступен в официальном репозитории CentOS 8. Таким образом, вы можете легко установить его на CentOS 8.
Сначала обновите кэш хранилища пакетов CentOS 8 с помощью следующей команды:
1
|
$ sudo dnf makecache
|
Теперь установите пакет TFTP-сервера с помощью следующей команды:
1
|
$ sudo dnf install tftp-server
|
Настройка службы TFTP-сервера:
Конфигурация службы systemd по умолчанию для TFTP не работает корректно в CentOS 8. Поэтому вы должны создать собственную версию службы systemd для сервера TFTP.
Сначала скопируйте файл /usr/lib/systemd/system/tftp.service по умолчанию в /etc/systemd/system/tftp-server.service с помощью следующей команды:
1
|
$ sudo cp -v /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service
|
Затем скопируйте файл /usr/lib/systemd/system/tftp.socket по умолчанию в /etc/systemd/system/tftp-server.socket с помощью следующей команды:
1
|
$ sudo cp -v /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket
|
Теперь отредактируйте файл /etc/systemd/system/tftp-server.service с помощью следующей команды:
$ sudo nano /etc/systemd/system/tftp-server.service
По умолчанию содержимое файла tftp-server.service выглядит следующим образом. Вы должны изменить строки, как отмечено на скриншоте ниже.

Изменить
Requires=tftp.socket на Requires=tftp-server.socket , ExecStart = /usr/sbin/in.tftpd -s /var/lib/tftpboot на ExecStart = /usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot и измените Also=tftp.socket на Also=tftp-server.socket
Здесь ExecStart = /usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot используется для запуска демона TFTP-сервера. Здесь опция -c используется для разрешения создания новых файлов на TFTP-сервере. Параметр -p используется для решения многих проблем с правами доступа к файлам и каталогам. Опция -s используется для установки корневого каталога TFTP-сервера. В этой статье корневым каталогом TFTP является /var/lib/tftpboot .
После того, как вы измените эти строки, файл tftp-server.service должен выглядеть так, как показано на скриншоте ниже.
Вы также должны добавить новую строку WantedBy = multi-user.target после строки [Install] .

Окончательный файл tftp-server.service должен выглядеть так, как показано на скриншоте ниже.

Теперь отредактируйте файл /etc/systemd/system/tftp-server.socket с помощью следующей команды:
$ sudo nano /etc/systemd/system/tftp-server.socket
Файл tftp-server.socket по умолчанию должен выглядеть так, как показано на скриншоте ниже.
Вы должны добавить новую строку BindIPv6Only=both после строки ListenDatagram = 69 .

Окончательный файл tftp-server.socket должен выглядеть так, как показано на скриншоте ниже.

Теперь проверьте состояние только что созданной службы tftp-server с помощью следующей команды:
1
|
$ sudo systemctl status tftp-server.service
|
Как видите, служба tftp-server неактивна (не запущена) и отключена (не запускается автоматически при загрузке системы).

Теперь запустите службу tftp-server с помощью следующей команды:
1
|
$ sudo systemctl start tftp-server.service
|
Кроме того, добавьте службу tftp-server к загрузке системы вашего компьютера CentOS 8 с помощью следующей команды:
1
|
$ sudo systemctl enable tftp-server.service
|
Служба tftp-сервера должна быть активной (работающей) и включенной (автоматически запускается при загрузке системы).
1
2
3
4
5
6
7
8
9
10
11
|
$ sudo systemctl status tftp-server.service
● tftp-server.service - Tftp Server
Loaded: loaded (/etc/systemd/system/tftp-server.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2020-12-16 11:00:14 +05; 1min 18s ago
Docs: man:in.tftpd
Main PID: 2270 (in.tftpd)
Tasks: 1 (limit: 24907)
Memory: 188.0K
CGroup: /system.slice/tftp-server.service
└─2270 /usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot
дек 16 11:00:14 monitor systemd[1]: Started Tftp Server.
|
Если у вас включен SELinux, разрешите анонимный доступ на запись к TFTP-серверу с помощью следующей команды:
1
|
$ sudo setsebool -P tftp_anon_write 1
|
ПРИМЕЧАНИЕ. Команда setsebool может быть недоступна на вашем компьютере с CentOS 8. Если это так, установите пакет policycoreutils-python с помощью следующей команды:
1
|
$ sudo yum install -y policycoreutils-python
|
Теперь разрешите чтение, запись и выполнение в корневой каталог TFTP /var/lib/tftpboot от любого пользователя с помощью следующей команды:
1
|
$ sudo chmod 777 /var/lib/tftpboot
|
Настройка брандмауэра:
TFTP-сервер работает на UDP-порту 69.
Если на вашем компьютере CentOS 8 настроен брандмауэр (что весьма вероятно), вам нужно разрешить доступ к UDP-порту 69 с помощью следующей команды:
1
|
$ sudo firewall-cmd --add-service=tftp --permanent
|
Чтобы изменения вступили в силу, выполните следующую команду:
1
|
$ sudo firewall-cmd --reload
|
Использование TFTP-сервера:
Чтобы получить доступ к TFTP-серверу, вы должны знать IP-адрес вашего компьютера с CentOS 8.
Вы можете найти IP-адрес вашего компьютера CentOS 8 с помощью следующей команды:
1
2
3
4
5
6
7
8
9
10
11
|
$ nmcli
ens18: подключено to ens18
"Red Hat Virtio"
ethernet (virtio_net), 1E:40:89:03:40:77, HW, MTU 1500
ip4 default
inet4 192.168.100.10/24
route4 0.0.0.0/0
route4 192.168.100.0/24
inet6 fe80::54e1:63b2:c63:c552/64
route6 fe80::/64
route6 ff00::/8
|
В моем случае IP-адрес 192.168.100.10. Это будет отличаться для вашего адреса. Не забудьте заменить его на ваш.
Чтобы получить доступ к серверу TFTP, на компьютере должна быть установлена клиентская программа TFTP, откуда вы хотите получить к нему доступ.
В CentOS 8 / RHEL 8 вы можете установить клиентскую программу TFTP с помощью следующей команды:
1
|
$ sudo dnf install -y tftp
|
В Ubuntu / Debian и других дистрибутивах Linux на основе Ubuntu / Debian вы можете установить клиентскую программу TFTP с помощью следующей команды:
1
|
$ sudo apt install -y tftp
|
Чтобы загрузить файлы на ваш TFTP-сервер или загрузить файлы с вашего TFTP-сервера, вам нужно перейти в каталог, где есть файл / файлы, которые вы хотите выгрузить на TFTP-сервер, или где вы хотите сохранить загруженный файл / файлы с сервера TFTP.
Допустим, вы хотите загрузить некоторые файлы / файлы из каталога /etc, а также загрузить и сохранить некоторые файлы / файлы в каталог /etc. Итак, перейдите в каталог /etc с помощью следующей команды:
1
|
$ cd /etc
|
Чтобы подключиться к TFTP-серверу, выполните следующую команду:
1
|
$ tftp 192.168.100.10
|
Вы можете проверить состояние вашего соединения с помощью следующей команды:
1
|
tftp> status
|
Вы можете включить подробный режим с помощью следующей команды:
1
|
tftp> verbose
|

Чтобы загрузить файл fstab (скажем так), выполните следующую команду:
1
|
tftp> put fstab
|
Если вы хотите скачать и сохранить файл / файлы в каталог /etc , вам нужно будет запустить клиентскую программу tftp с привилегиями sudo.
1
|
$ sudo tftp 192.168.100.10
|
Чтобы загрузить файл hosts и сохранить его в каталоге / etc , выполните следующую команду:
1
|
tftp> get hosts
|
Вот как вы настраиваете TFTP-сервер в CentOS 8 и используете его. Спасибо за чтение этой статьи.