1. 什么是TFTP?

  • TFTP(Trivial File Transfer Protocol) 是一种简单的文件传输协议,基于 UDP,设计轻量,无认证,常用于局域网内固件升级、配置文件传输等场景。
  • 由于协议简单,TFTP 常用作嵌入式设备启动和系统维护时的文件传输。

2. TFTP协议特点

特点说明
基于UDP传输速度快,适合局域网
简单无认证无用户验证,安全性低,不适合公网使用
仅支持文件上传/下载不支持目录操作等高级功能
使用默认端口69服务端监听69端口,客户端发起请求

3. 常用TFTP软件推荐

软件名称平台说明
tftpd-hpaLinux轻量级、灵活配置,广泛使用
atftpdLinux支持高级配置,日志丰富
SolarWinds TFTP ServerWindows免费且功能完善,适合Windows环境
PumpKINWindows小巧便捷,适合快速测试
tftp.exe多平台简单命令行客户端,多平台支持

4. Linux下 tftpd-hpa 服务端安装与配置示例

4.1 安装

sudo apt-get update
sudo apt-get install tftpd-hpa

4.2 配置文件 /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"
  • TFTP_DIRECTORY 指定根目录,放置可传输文件。
  • --secure 限制路径在根目录下。
  • --create 允许客户端上传新文件。

4.3 创建根目录及权限设置

sudo mkdir -p /var/lib/tftpboot
sudo chown -R tftp:tftp /var/lib/tftpboot
sudo chmod -R 755 /var/lib/tftpboot

4.4 启动服务

sudo systemctl restart tftpd-hpa
sudo systemctl enable tftpd-hpa

5. TFTP客户端使用示例

5.1 Linux 命令行客户端

tftp <server_ip>
tftp> get filename    # 下载文件
tftp> put filename    # 上传文件
tftp> quit

5.2 Windows 客户端

  • Windows 命令行中启用 TFTP 客户端功能后,使用命令:
tftp -i <server_ip> GET filename
tftp -i <server_ip> PUT filename

6. 灵活配置技巧

配置点说明
访问控制通过防火墙和目录权限限制访问
日志配置增强日志记录,方便排错
目录隔离为不同设备设置不同根目录
支持上传使用 --create 允许上传
多端口配置通过 iptables 或多实例配置避免端口冲突

7. 应用场景

  • 网络设备固件升级:路由器、交换机、IP电话等。
  • 嵌入式系统启动:如PXE启动加载镜像。
  • 简单文件传输:无需认证的局域网文件共享。
  • 自动化运维脚本:批量上传配置文件。

8. 安全提醒

  • TFTP协议无加密和认证,建议仅在受信任的内网使用。
  • 结合防火墙策略限制访问来源。
  • 避免在TFTP根目录放置敏感文件。