TFTP简单文件传输协议

aiofo2022-08-14  189

简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议。顾名思义,它提供不复杂、开销不大的文件传输服务(可将其当作FTP协议的简化版本)。

TFTP的命令功能不如FTP服务强大,甚至不能遍历目录,在安全性方面也弱于FTP服务。而且,由于TFTP在传输文件时采用的是UDP协议,占用的端口号为69,因此文件的传输过程也不像FTP协议那样可靠。但是,因为TFTP不需要客户端的权限认证,也就减少了无谓的系统和网络带宽消耗,因此在传输琐碎(trivial)不大的文件时,效率更高。

接下来在系统上安装TFTP的软件包,进行体验。

[root@linuxprobe ~]# yum install tftp-server tftp Loaded plugins: langpacks, product-id, subscription-manager ………………省略部分输出信息……………… Installing: tftp x86_64 5.2-11.el7 rhel 35 k tftp-server x86_64 5.2-11.el7 rhel 44 k Installing for dependencies: xinetd x86_64 2:2.3.15-12.el7 rhel 128 k Transaction Summary

  1. Install 2 Packages (+1 Dependent package)
  2. Total download size: 207 k
  3. Installed size: 373 k
  4. Is this ok [y/d/N]: y
  5. Downloading packages:
  6. ………………省略部分输出信息………………
  7. Installed:
  8. tftp.x86_64 0:5.2-11.el7 tftp-server.x86_64 0:5.2-11.el7
  9. Dependency Installed:
  10. xinetd.x86_64 2:2.3.15-12.el7
  11. 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服务的玩法还不止于此,后面会将TFTP服务与其他软件相搭配,组合出一套完整的自动化部署系统方案。

转载请注明原文地址:https://www.aiofo.com/read-1415.html