记得去年给一个客户部署一批网络交换机,凌晨两点突然接到电话说固件升级失败,设备半瘫了。我当时心里一沉,赶紧远程连过去,发现就是因为TFTP服务器没配明白,传输老是中断。最后折腾了半小时才用TFTP把备份固件传进去救了急。从那以后我就觉得,这玩意儿虽然古老,但关键时刻真能顶事。

TFTP(Trivial File Transfer Protocol)说白了就是网络世界的"快递小哥"——特别轻量,不签收不保价(无连接、不可靠),但跑腿速度快,专门在内网里传小文件。你肯定不会用它送贵重物品(比如生产环境的大文件),但给路由器传个固件、给打印机发个配置,或者像我用它救急交换机,都是典型场景。
Windows篇:图形化界面点点鼠标就行
Windows系统其实自带TFTP功能,只是默认藏得深。我个人的习惯是:如果临时用一次就开系统自带功能,要是经常用反而推荐第三方工具,因为自带的有时权限管理挺烦人。
开启步骤:
- 打开"程序和功能"(win+R输入
appwiz.cpl),点左侧"启用或关闭Windows功能" - 找到"TFTP客户端"和"TFTP服务器"两个选项——注意!客户端默认可能勾选了,但服务器得手动勾选
- 重启系统后,服务列表里会出现"TFTP Client"服务,记得设为自动启动
这里有个坑我踩过: Windows防火墙默认会拦TFTP。你得手动开条规则:
netsh advfirewall firewall add rule name="TFTP Service" dir=in action=allow protocol=UDP localport=69
不然就像我那次,客户端连得上服务器但传不了文件,排查半天才发现是防火墙没放行。
如果想用第三方工具,比如tftpd64,其实更简单。下载解压直接运行,选择根目录(就是放传输文件的地方),点启动就行。不过要注意的是,这工具默认所有文件可读写,千万别放在有敏感数据的目录——我有次测试时不小心把整个Downloads目录设成了根目录,差点被同事笑话。
Linux篇:终端里几条命令的事
Linux下我习惯用tftp-hpa,这是最常用的实现。别看要敲命令,其实比Windows还利索,特别是如果你熟悉bash的话。
Ubuntu/Debian系安装:
sudo apt update
sudo apt install tftpd-hpa
安装完不用急着启动,先改配置。配置文件通常在/etc/default/tftpd-hpa,用vim或nano打开:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpd"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
这里有几个关键点:
TFTP_DIRECTORY必须是绝对路径,而且权限要对(chmod 755)--secure把文件限制在该目录内,防止乱跳目录--create允许上传文件,不然只能下载
改完保存,重启服务:
sudo systemctl restart tftpd-hpa
sudo systemctl enable tftpd-hpa
我遇到过的权限问题: 有次给客户部署时,文件怎么都传不上去,最后发现是SELinux没关。所以如果遇到莫名其妙的问题,可以先用getenforce检查下SELinux状态,或者用setenforce 0临时关闭测试。
测试:不测试就像开车不看油表
搭建完不测试,迟早要出事。我的习惯是至少做两层测试:基本传输验证和抓包分析。
基本测试(以Linux客户端为例):
# 连接本地TFTP服务器
tftp localhost
tftp> get test.txt # 下载文件
tftp> put upload.bin # 上传文件
tftp> quit
Windows客户端类似,打开命令提示符输入tftp -i 127.0.0.1 get test.txt(-i参数用于二进制模式)。
如果测试失败,首先查防火墙:
# Linux查看69端口是否监听
sudo netstat -anu | grep :69
# 通用抓包看UDP流量
sudo tcpdump -i any -n udp port 69
有次我帮学弟排查问题,抓包发现请求根本没到服务器,最后发现是云服务器的安全组没配置UDP 69端口入口规则——这种问题不抓包根本看不出来。
为什么TFTP现在还有人用?
说实话,TFTP协议确实老旧:没加密、没认证、基于UDP容易丢包。但它在特定场景下无可替代:
- 嵌入式设备引导:很多网络设备固件小于32MB,TFTP简单到可以直接烧进ROM
- PXE网络启动:机房批量装系统还得靠它传初始引导文件
- 紧急恢复场景:就像我那次交换机变砖,只有TFTP能救急
不过如果传敏感数据,一定要换SFTP或SCP。我之前有个项目最初用TFTP传配置文件,后来被安全审计抓到了,连夜改成SFTP——毕竟明文传输在内网也不安全。
最后说两句
如果你刚开始接触TFTP,我的建议是:先在虚拟机里练手,别直接上生产环境。特别是注意文件权限和防火墙,这两个坑我见过太多人栽了。
虽然现在有更多高级协议,但TFTP就像螺丝刀里的扁口款——不是最先进,但某些时候就是最趁手的那个。毕竟那天凌晨两点,就是这把"扁口螺丝刀"帮我救回了一机房设备。


评论