简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议。顾名思义,它提供不复杂、开销不大的文件传输服务(可将其当作FTP协议的简化版本)。
TFTP的命令功能不如FTP服务强大,甚至不能遍历目录,在安全性方面也弱于FTP服务。而且,由于TFTP在传输文件时采用的是UDP协议,占用的端口号为69,因此文件的传输过程也不像FTP协议那样可靠。但是,因为TFTP不需要客户端的权限认证,也就减少了无谓的系统和网络带宽消耗,因此在传输琐碎(trivial)不大的文件时,效率更高。
接下来在系统上安装TFTP的软件包,进行体验。
Install 2 Packages (+1 Dependent package)
Total download size: 207 k
Installed size: 373 k
Is this ok [y/d/N]: y
Downloading packages:
………………省略部分输出信息………………
Installed:
tftp.x86_64 0:5.2-11.el7 tftp-server.x86_64 0:5.2-11.el7
Dependency Installed:
xinetd.x86_64 2:2.3.15-12.el7
Complete!
在RHEL 7系统中,TFTP服务是使用xinetd服务程序来管理的。xinetd服务可以用来管理多种轻量级的网络服务,而且具有强大的日志功能。简单来说,在安装TFTP软件包后,还需要在xinetd服务程序中将其开启,把默认的禁用(disable)参数修改为no:
[root@linuxprobe ~]# vim /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } 然后,重启xinetd服务并将它添加到系统的开机启动项中,以确保TFTP服务在系统重启后依然处于运行状态。考虑到有些系统的防火墙默认没有允许UDP协议的69端口,因此需要手动将该端口号加入到防火墙的允许策略中:
[root@linuxprobe ~]# systemctl restart xinetd [root@linuxprobe ~]# systemctl enable xinetd [root@linuxprobe ~]# firewall-cmd --permanent --add-port=69/udp success [root@linuxprobe ~]# firewall-cmd --reload success TFTP的根目录为/var/lib/tftpboot。我们可以使用刚安装好的tftp命令尝试访问其中的文件,亲身体验TFTP服务的文件传输过程。在使用tftp命令访问文件时,可能会用到表11-5中的参数。
表11-5 tftp命令中可用的参数以及作用
命令 作用 ? 帮助信息 put 上传文件 get 下载文件 verbose 显示详细的处理信息 status 显示当前的状态信息 binary 使用二进制进行传输 ascii 使用ASCII码进行传输 timeout 设置重传的超时时间 quit 退出 [root@linuxprobe ~]# echo "i love linux" > /var/lib/tftpboot/readme.txt [root@linuxprobe ~]# tftp 192.168.10.10 tftp> get readme.txt tftp> quit [root@linuxprobe ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures readme.txt Videos Desktop Downloads Music Public Templates [root@linuxprobe ~]# cat readme.txt i love linux 当然,TFTP服务的玩法还不止于此,第19章会将TFTP服务与其他软件相搭配,组合出一套完整的自动化部署系统方案。大家继续加油!
(c) 2024 chaojicainiao.com MIT license