凌峰创科服务平台

Linux TFTP服务器如何配置与使用?

Linux TFTP服务器是一种基于简单文件传输协议(TFTP)的服务,常用于网络设备(如路由器、交换机、防火墙等)的固件升级或配置文件传输,因其轻量级、易于配置的特点,在嵌入式系统和网络管理中广泛应用,与FTP协议相比,TFTP协议更简单,仅支持文件传输功能,无需复杂的用户认证和目录权限管理,但这也意味着安全性较低,建议在可信网络环境中使用,本文将详细介绍Linux环境下TFTP服务器的搭建、配置及使用方法。

Linux TFTP服务器如何配置与使用?-图1
(图片来源网络,侵删)

安装TFTP服务器软件

在Linux系统中,TFTP服务器通常由xinetd服务(超级守护进程)管理,需安装tftptftpd软件包,以Ubuntu/Debian系统为例,使用以下命令安装:

sudo apt update
sudo apt install tftp tftpd-hpa xinetd

对于CentOS/RHEL系统,可使用yumdnf安装:

sudo yum install tftp tftp-server xinetd

安装完成后,tftpd-hpa(或tftp-server)会提供TFTP服务核心程序,而xinetd则负责监听TFTP默认端口(69)并管理服务连接。

配置TFTP服务器

TFTP服务器的配置主要通过修改/etc/xinetd.d/tftp文件(CentOS/RHEL中路径可能为/etc/xinetd.d/tftp)实现,以下是关键配置项说明:

Linux TFTP服务器如何配置与使用?-图2
(图片来源网络,侵删)
配置项 说明 示例值
protocol 使用的协议,固定为udp udp
server TFTP服务器程序路径 /usr/sbin/in.tftpd
server_args 服务器启动参数,指定根目录及权限选项 -s /var/lib/tftpboot -c -u tftp
disable 是否禁用服务,no表示启用 no
user 服务器运行的用户身份 tftp
per_source 同一IP的并发连接数限制 11
cps 每秒传输速率限制(字节/秒),0表示无限制 0

关键参数说明

  • -s:指定TFTP根目录(如/var/lib/tftpboot),所有文件传输均基于此目录,需确保该目录存在且权限正确(可通过sudo mkdir -p /var/lib/tftpboot && sudo chmod 777 /var/lib/tftpboot创建并授权)。
  • -c:允许创建新文件(默认仅允许读取,若需上传文件需开启)。
  • -u:指定运行用户,建议使用低权限用户(如tftp)以增强安全性。

配置完成后,保存文件并重启xinetd服务使配置生效:

sudo systemctl restart xinetd  # CentOS/RHEL
sudo service xinetd restart   # Ubuntu/Debian

防火墙与SELinux配置

若系统启用了防火墙(如ufwfirewalld),需开放TFTP的UDP 69端口:

  • Ubuntu (ufw)
    sudo ufw allow 69/udp
  • CentOS (firewalld)
    sudo firewall-cmd --add-port=69/udp --permanent
    sudo firewall-cmd --reload

对于SELinux(如CentOS/RHEL默认启用),需设置TFTP目录的上下文:

Linux TFTP服务器如何配置与使用?-图3
(图片来源网络,侵删)
sudo semanage fcontext -a -t tftpdir_t "/var/lib/tftpboot(/.*)?"
sudo restorecon -Rv /var/lib/tftpboot

TFTP客户端使用测试

在Linux客户端,可直接使用tftp命令连接服务器进行文件传输。

  1. 下载文件

    tftp -i 服务器IP get 远程文件名 本地文件名

    示例:tftp -i 192.168.1.100 get router.cfg router.cfg

  2. 上传文件

    tftp -i 服务器IP put 本地文件名 远程文件名

    示例:tftp -i 192.168.1.100 put new_config.cfg new_config.cfg

若上传失败,需检查服务器配置中server_args是否包含-c参数,以及/var/lib/tftpboot目录的写入权限。

FAQs

Q1: TFTP服务器无法连接,提示“Connection refused”怎么办?
A: 可能原因包括:

  1. xinetd服务未启动,可通过sudo systemctl status xinetd检查,若未启动则执行sudo systemctl start xinetd
  2. 防火墙拦截了UDP 69端口,需检查防火墙规则并开放端口;
  3. tftp配置文件中disable参数被设置为yes,需修改为no并重启服务。

Q2: 如何限制TFTP服务器的访问IP地址?
A: 可通过xinetdonly_from参数实现,在/etc/xinetd.d/tftp中添加以下配置:

only_from = 192.168.1.0/24 10.0.0.100

该配置仅允许IP段168.1.0/24和IP0.0.100访问TFTP服务,修改后重启xinetd服务即可生效。

分享:
扫描分享到社交APP
上一篇
下一篇