TFTP服务器搭建与配置完整指南:从安装到测试 (2026)

什么是TFTP?

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种基于UDP协议的轻量级文件传输服务,默认使用69号端口。与FTP相比,TFTP没有复杂的认证机制和目录浏览功能,非常适合在局域网内进行快速、简单的文件传输。

TFTP的典型应用场景包括:

  • 网络设备固件升级:路由器、交换机等网络设备通过TFTP加载固件镜像
  • PXE批量部署:无盘工作站通过网络启动时从TFTP服务器下载启动文件
  • 嵌入式开发:开发板通过TFTP加载内核镜像和文件系统
  • 配置文件备份与恢复:网络设备定期备份运行配置到TFTP服务器

一、安装TFTP服务软件

Ubuntu/Debian系统

在Ubuntu或Debian系统中,推荐使用atftpdtftpd-hpa

# 方式一:安装atftpd
sudo apt-get update
sudo apt-get install atftpd

# 方式二:安装tftpd-hpa(更常用)
sudo apt-get install tftpd-hpa

CentOS/RHEL系统

在CentOS或RHEL系统中,可通过yum安装:

sudo yum install tftp-server

安装TFTP客户端(用于测试)

# Ubuntu/Debian
sudo apt-get install tftp-hpa

# CentOS/RHEL
sudo yum install tftp

二、配置TFTP服务

tftpd-hpa 配置方式

安装tftpd-hpa后,主配置文件位于/etc/default/tftpd-hpa,编辑该文件:

sudo nano /etc/default/tftpd-hpa

典型配置如下:

参数 说明 推荐值
TFTP_USERNAME 运行服务的用户 tftp
TFTP_DIRECTORY TFTP根目录 /var/lib/tftpboot
TFTP_ADDRESS 监听地址与端口 0.0.0.0:69
TFTP_OPTIONS 额外选项 –secure –create

完整配置示例:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"

注意--create选项允许客户端上传新文件,--secure选项将客户端限制在TFTP根目录内。

atftpd 配置方式

atftpd的配置文件通常位于/etc/default/atftpd

OPTIONS="--daemon --port 69 --tftptimeout 5 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /var/tftp"

创建TFTP根目录并设置权限

# 创建目录
sudo mkdir -p /var/lib/tftpboot

# 修改所有者
sudo chown -R tftp:tftp /var/lib/tftpboot

# 设置权限(允许读写)
sudo chmod -R 777 /var/lib/tftpboot

三、启动与管理TFTP服务

使用systemd管理(推荐)

# 启动服务
sudo systemctl start tftpd-hpa

# 设置开机自启
sudo systemctl enable tftpd-hpa

# 查看服务状态
sudo systemctl status tftpd-hpa

# 重启服务(修改配置后)
sudo systemctl restart tftpd-hpa

使用xinetd管理(旧版本)

部分旧版系统使用xinetd管理TFTP服务,需编辑/etc/xinetd.d/tftp

service tftp
{
    socket_type     = dgram
    protocol        = udp
    wait            = yes
    user            = tftp
    server          = /usr/sbin/in.tftpd
    server_args     = -s /var/lib/tftpboot
    disable         = no
    per_source      = 11
    cps             = 100 2
    flags           = IPv4
}

修改后重启xinetd:

sudo systemctl restart xinetd

四、配置防火墙规则

TFTP使用UDP 69端口,需要确保防火墙放行该端口。

iptables方式

sudo iptables -I INPUT -p udp --dport 69 -j ACCEPT

# 保存规则
sudo iptables-save | sudo tee /etc/iptables/rules.v4

firewalld方式(CentOS 7+)

sudo firewall-cmd --permanent --add-service=tftp
sudo firewall-cmd --reload

ufw方式(Ubuntu)

sudo ufw allow 69/udp

五、测试TFTP服务

本地测试

先在TFTP根目录创建一个测试文件:

echo "Hello TFTP Test" | sudo tee /var/lib/tftpboot/test.txt

从客户端连接测试

# 连接TFTP服务器
tftp 192.168.1.100

# 下载文件
tftp> get test.txt
Received 17 bytes in 0.0 seconds

# 上传文件
tftp> put myfile.txt
Sent 1024 bytes in 0.1 seconds

# 退出
tftp> quit

常见问题排查

问题 可能原因 解决方法
连接超时 防火墙未放行 检查UDP 69端口是否开放
权限拒绝 目录权限不足 检查目录所有者和权限设置
文件不存在 路径配置错误 确认TFTP_DIRECTORY指向正确目录
上传失败 未启用–create选项 在TFTP_OPTIONS中添加–create
服务未响应 服务未启动 执行systemctl status检查

六、安全加固建议

TFTP协议本身不提供加密和认证,在生产环境中需注意以下安全措施:

  1. 限制访问范围:通过防火墙规则仅允许可信IP访问
  2. 禁用上传功能:如仅需下载,移除--create选项
  3. 使用chroot:确保--secure选项启用,防止目录遍历
  4. 定期审计:检查TFTP目录中的文件,清理不再需要的文件
  5. 内网专用:TFTP仅在内网使用,不要暴露到公网

总结

搭建TFTP服务器的核心步骤为:安装服务软件 → 修改配置文件 → 创建共享目录并设置权限 → 启动服务 → 配置防火墙 → 测试验证。整个过程不需要复杂的配置,几分钟即可完成。对于需要批量部署或固件升级的场景,TFTP仍然是最简单高效的选择之一。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注