TFTP服务器IP填写看似简单,很多人依旧填错。核心要点,填写运行TFTP服务端软件主机的IP。服务端和客户端在同一台电脑,填写127.0.0.1用于本地测试。服务端部署在局域网其他电脑,填写该主机局域网IP,类似192.168.1.100。客户端与服务器跨网段,填写服务器可被外网访问的IP,同时路由、防火墙放行UDP 69端口。
有一处细节容易忽略,一台主机可以存在多个IP,有线网卡、无线网卡、虚拟网卡、VPN虚拟网卡都会分配独立地址。tftpd32、tftpd64启动后,Server interfaces下拉列表,展示本机全部网卡IP。需要在这里选定对应网卡,客户端填写选中的这个IP。选错网卡,比如选中VirtualBox虚拟网卡地址,客户端请求无法抵达TFTP服务,现象就是持续超时。

Windows平台常用服务端工具是tftpd32或者64位版本tftpd64。压缩包解压直接运行,无需安装。界面简洁,Current Directory是TFTP根目录,点击Browse选定文件夹,把待传输文件放入这个目录。Server interfaces就是前面提到的网卡IP选择项。勾选Tftp Server,端口默认69不用修改。Settings页面可以关闭DHCP、DNS,只保留TFTP,避免干扰局域网其他服务。
防火墙配置必不可少。Windows防火墙默认拦截UDP 69入站请求。首次启动tftpd32,如果弹窗询问网络访问权限,勾选专用网络、公用网络,点击允许。当时没有确认或者选错选项,可以手动添加入站规则。管理员权限打开PowerShell,执行netsh advfirewall firewall add rule name="TFTP" dir=in action=allow protocol=udp localport=69,回车完成规则创建。
服务端启动完成,先本机测试。新开命令提示符,输入tftp 127.0.0.1,执行get 文件名拉取根目录文件。本机能够正常拉取,说明服务端配置没问题。局域网其他电脑测试,把127.0.0.1替换为服务端主机局域网IP,命令不变。本机连通、局域网访问超时,大概率是防火墙拦截,或是Server interfaces选错网卡。
Linux部署TFTP服务器操作不一样。Debian、Ubuntu安装tftpd-hpa,CentOS、RHEL使用tftp-server。安装完成修改配置文件/etc/default/tftpd-hpa,TFTP_DIRECTORY设置共享目录,TFTP_ADDRESS保持0.0.0.0:69,监听全部网卡。共享目录设置权限,chmod 755基本够用。重启服务systemctl restart tftpd-hpa,配置开机自启。防火墙执行ufw allow 69/udp或者firewall-cmd放行TFTP服务。客户端命令和Windows一致,tftp加服务器IP,使用get或者put。
设备端填写IP场景很常见,路由器刷固件,升级页面要求填写TFTP服务器地址与固件文件名。服务器地址填写电脑局域网IP,完整录入文件名,留意大小写。设备一般需要和电脑处于同一网段,跨网段必须保证路由可达。交换机管理口升级场景,电脑网卡直连管理口,电脑网卡设置同网段静态IP,TFTP服务绑定这个IP,设备端填写该IP。
几个常见坑提前说明。127.0.0.1只能本机访问,其他设备填写这个地址无法连接。填写公网IP,路由器没有UDP 69端口映射,外部请求无法进入内网。IPv6地址部分客户端不兼容,TFTP对IPv6支持不如IPv4。服务端接口选0.0.0.0代表监听全部网卡IP,客户端填写具体IP也可以连接,但tftpd32下拉选项一般不会显示0.0.0.0,要手动挑选网卡IP。主机多网卡分不清,ipconfig查看上网网卡IP,选择这个IP基本没问题。
文件传输阶段,tftpd32底部日志窗口持续输出记录,成功失败信息都会打印。File not found代表文件存放目录不对,Access violation是权限不足,Timeout属于网络或者防火墙问题。查看日志定位故障,比盲目试错效率更高。