Полная форма 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 |
$ 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 |
ПРИМЕЧАНИЕ. Команда 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 |
$ 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 и используете его. Спасибо за чтение этой статьи.
Ваш комментарий будет первым