1. 什么是TFTP?
- TFTP(Trivial File Transfer Protocol) 是一种简单的文件传输协议,基于 UDP,设计轻量,无认证,常用于局域网内固件升级、配置文件传输等场景。
- 由于协议简单,TFTP 常用作嵌入式设备启动和系统维护时的文件传输。
2. TFTP协议特点
特点 | 说明 |
---|
基于UDP | 传输速度快,适合局域网 |
简单无认证 | 无用户验证,安全性低,不适合公网使用 |
仅支持文件上传/下载 | 不支持目录操作等高级功能 |
使用默认端口69 | 服务端监听69端口,客户端发起请求 |
3. 常用TFTP软件推荐
软件名称 | 平台 | 说明 |
---|
tftpd-hpa | Linux | 轻量级、灵活配置,广泛使用 |
atftpd | Linux | 支持高级配置,日志丰富 |
SolarWinds TFTP Server | Windows | 免费且功能完善,适合Windows环境 |
PumpKIN | Windows | 小巧便捷,适合快速测试 |
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根目录放置敏感文件。
发表回复