Instalacja tftp na CentOS 7

Wbrew pozorom serwer tftp ma wciąż swoją rację bytu w dzisiejszym świecie IT. Jakiś czas temu pisaliśmy o instalacji tftp na urządzeniach pracujących pod kontrolą systemów Windows – jednak wiadomo nie każdy ma licencję na Windowsa, więc poratujemy się hipsterką i linuxem (tu konkretnie – CentOS 7).

Mając działający serwer CentOS, wystarczy nam kilka komend, aby cieszyć się z dobrodziejstw tftp. Zacznijmy od instalacji:

[root@spece01]# yum -y install tftp tftp-server xinetd

Oczywiście nim przejdziemy dalej warto utworzyć sobie przestrzeń w której serwer tftp będzie operował – czyli katalog z którego będzie udostępniał pliki – lub miejsce w którym będzie je zapisywał (u mnie musiało to działać w dwie strony)

[root@spece01]# mkdir /usr/local/share/tftp
[root@spece01]# chmod -R 777 /usr/local/share/tftp

Hurr durr – 777!!! 🙂

Następnie zaglądamy do dwóch plików i staramy się aby wyglądały tak:

[root@spece01]# nano /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -c -s /usr/local/share/tftp
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
[root@spece01]# nano /usr/lib/systemd/system/tftp.service
[Unit]
Description=Tftp Server
Requires=tftp.socket
Documentation=man:in.tftpd
[Service]
ExecStart=/usr/sbin/in.tftpd -s /usr/local/share/fw-switch
StandardInput=socket
[Install]
Also=tftp.socket

Jeśli korzystamy z SELinuxa na serwerze należy sprawdzić status (pisaliśmy o tym jak wyłączyć SELinux) i tryb działania. Zacznijmy od pliku konfiguracyjnego:

[root@spece01]# cat /etc/selinux/config
SELINUX=permissive
SELINUXTYPE=targeted

I rzeczywistego statusu:

[root@spece01]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28
[root@spece01]# getsebool -a | grep tftp
tftp_anon_write --> off
tftp_home_dir --> off

Trzeba więc włączyć możliwość zapisu przez tftp:

 [root@spece01]# setsebool -P tftp_anon_write 1
 [root@spece01]# setsebool -P tftp_home_dir 1

Ostatnią częścią będzie modyfikacja reguł firewall:

[root@spece01]# firewall-cmd --permanent --add-port=69/udp
[root@spece01]# firewall-cmd --permanent --zone=public --add-service=tftp --permanent
[root@spece01]# firewall-cmd --reload

Na koniec startujemy usługi i ustawiamy je aby uruchamiały się podczas bootowania systemu:

systemctl start xinetd
systemctl start tftp
systemctl enable xinetd
systemctl enable tftp

I to już. Mamy działający serwer tftp – akurat do zgrywania konfiguracji np. switchy lub serwowania im obrazów systemowych.

Piotr Berent

Piotr Berent od 2002 w pocie czoła pracujący w środowisku IT, obecnie freelancer - Inżynier Systemowy. Entuzjasta wirtualizacji, automatyzacji i rozwiązań opartych o narzędzia open-source.

Dodaj komentarz