在Linux系统中搭建TFTP(Trivial File Transfer Protocol)服务器是一种常见的需求,尤其是在网络设备配置、嵌入式系统开发或需要简单文件传输的场景中,TFTP是一种简单的文件传输协议,基于UDP协议(默认端口为69),相较于FTP,它不具备认证机制和复杂的目录操作功能,但因其轻量级、易于实现的特点,被广泛应用于无盘工作站启动、网络设备固件升级等场景,本文将详细介绍在Linux下配置TFTP服务器的完整步骤,包括安装、配置、启动及常见问题排查,并辅以表格形式对比关键配置项,最后附上相关FAQs。

安装TFTP服务器软件包
在Linux中,TFTP服务通常由tftp-hpa(服务器端)和tftp-hpa或tftp(客户端)软件包提供,以Ubuntu/Debian系统为例,可通过以下命令安装:
sudo apt update sudo apt install tftpd-hpa tftp-hpa
对于CentOS/RHEL系统,则使用yum或dnf:
sudo yum install tftp tftp-server
安装完成后,需确保服务处于停止状态,以便后续配置。
配置TFTP服务器
TFTP服务器的核心配置文件位于/etc/default/tftpd-hpa(Ubuntu/Debian)或/etc/xinetd.d/tftp(CentOS/RHEL),以/etc/default/tftpd-hpa为例,其关键配置项如下表所示:

| 配置项 | 说明 | 示例值 |
|---|---|---|
RUN_DAEMON |
是否以守护进程模式运行 | yes |
OPTIONS |
服务器启动参数,包括目录权限、日志记录等 | "--secure --create --permissive" |
TFTP_DIRECTORY |
TFTP服务根目录 | /srv/tftp |
TFTP_USERNAME |
运行TFTP服务的用户 | tftp |
TFTP_ADDRESS |
监听地址和端口 | 0.0.0:69 |
TFTP_OPTIONS |
其他选项,如--blocksize(块大小,默认512字节) |
--blocksize 8192 |
--secure选项限制文件传输仅在TFTP_DIRECTORY目录及其子目录中进行,避免路径遍历攻击;--create允许上传文件(需配合目录权限);--permissive记录所有传输日志,修改配置后,需创建服务目录并设置权限:
sudo mkdir -p /srv/tftp sudo chown -R tftp:tftp /srv/tftp sudo chmod -R 777 /srv/tftp # 开放读写权限,生产环境建议限制为755
启动与测试服务
配置完成后,启动TFTP服务并设置为开机自启:
sudo systemctl start tftpd-hpa sudo systemctl enable tftpd-hpa
检查服务状态:
sudo systemctl status tftpd-hpa
若使用xinetd管理(CentOS/RHEL默认),需确保/etc/xinetd.d/tftp中disable = no,并重启xinetd服务:
sudo systemctl restart xinetd
测试TFTP服务时,可通过客户端上传/下载文件,在另一台Linux主机上安装tftp-hpa客户端后执行:
# 下载服务器文件 tftp 192.168.1.100 -c get test.txt # 上传本地文件 tftp 192.168.1.100 -c put localfile.txt
若传输失败,检查防火墙规则(如ufw允许UDP 69端口)和SELinux状态(CentOS/RHEL中可能需执行setsebool -P tftp_home_dir=on)。
常见问题与优化
- 权限问题:确保TFTP用户对目录有读写权限,避免因
umask导致文件权限异常(如umask 0022)。 - 传输大文件:默认块大小为512字节,可通过
--blocksize调整(如8192),提升传输效率。 - 安全加固:生产环境中建议限制客户端IP访问,通过
/etc/hosts.allow和/etc/hosts.deny实现:echo "tftp: 192.168.1.0/24" | sudo tee -a /etc/hosts.allow echo "tftp: ALL" | sudo tee -a /etc/hosts.deny
相关问答FAQs
Q1: TFTP与FTP有什么区别?
A1: TFTP是轻量级文件传输协议,基于UDP,无需认证,仅支持简单文件读写,适用于无盘启动等场景;FTP基于TCP,支持用户认证、目录操作和加密传输,功能更全面但资源占用较高,TFTP适合小文件传输,FTP适合需要安全性和复杂操作的场景。
Q2: 如何解决TFTP传输超时问题?
A2: 传输超时可能由网络延迟、服务器负载或块大小不当导致,可尝试以下方法:① 调整--blocksize参数(如8192或16384);② 检查网络稳定性,确保客户端与服务器间无丢包;③ 增加超时时间(通过--timeout选项,默认为3秒,可设为5-10秒);④ 优化服务器性能,如关闭不必要的后台服务。
