凌峰创科服务平台

ubuntu tftp服务器

在Ubuntu系统中搭建TFTP(Trivial File Transfer Protocol)服务器,通常用于网络设备(如路由器、交换机、防火墙等)的固件升级或配置文件传输,TFTP是一种简单的文件传输协议,基于UDP协议,默认使用69端口,具有轻量级、易于实现的特点,但安全性较低,建议在受信任的网络环境中使用,以下将详细介绍在Ubuntu上配置TFTP服务器的完整步骤,包括安装、配置、测试及常见问题解决。

安装TFTP服务器

首先需要安装TFTP服务器软件包,Ubuntu官方软件仓库中提供了tftpd-hpa(TFTP服务器守护进程)和tftp-hpa(TFTP客户端工具),打开终端,执行以下命令更新软件包列表并安装相关软件:

sudo apt update
sudo apt install tftpd-hpa tftp-hpa

安装过程中,系统会自动启动TFTP服务,安装完成后,可通过以下命令检查服务状态:

sudo systemctl status tftpd-hpa

如果显示“active (running)”,则表示服务已成功启动。

配置TFTP服务器

TFTP服务器的配置文件位于/etc/default/tftpd-hpa,使用文本编辑器(如nanovi)打开该文件:

sudo nano /etc/default/tftpd-hpa

如下(默认配置可能为空或仅包含部分参数):

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="[::]:69"
TFTP_OPTIONS="--secure --create"

参数说明:

  • TFTP_USERNAME:运行TFTP服务的用户名,默认为tftp,该用户对TFTP目录需具有读写权限。
  • TFTP_DIRECTORY:TFTP服务器的根目录,默认为/srv/tftp,所有文件和子目录需放置在此路径下。
  • TFTP_ADDRESS:监听地址和端口,[::]:69表示监听所有IPv6和IPv4地址的69端口。
  • TFTP_OPTIONS:启动选项,--secure表示限制文件操作在TFTP目录内,--create允许上传文件(需确保目录权限正确)。

根据需求修改配置后,保存文件并退出,然后重启TFTP服务使配置生效:

sudo systemctl restart tftpd-hpa

设置目录权限

TFTP服务器的根目录需要正确设置权限,以确保用户可以读写文件,默认情况下,/srv/tftp的属主可能为root,需修改为tftp用户,并设置正确的权限:

sudo chown -R tftp:tftp /srv/tftp
sudo chmod -R 777 /srv/tftp

777权限表示所有用户可读、可写、可执行,适用于测试环境,在生产环境中,建议根据需求限制权限(如755)。

防火墙配置

如果系统启用了防火墙(如ufw),需要允许TFTP端口(UDP 69)的流量,执行以下命令:

sudo ufw allow 69/udp

若使用其他防火墙工具(如iptables),需添加规则:

sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4

测试TFTP服务器

上传文件测试

在客户端机器上(需安装tftp-hpa),使用以下命令上传文件到TFTP服务器:

tftp -i [服务器IP] put localfile.txt remotefile.txt
tftp -i 192.168.1.100 put test.txt test_upload.txt

上传成功后,检查服务器/srv/tftp目录下是否存在test_upload.txt

下载文件测试

使用以下命令从服务器下载文件:

tftp -i [服务器IP] get remotefile.txt localfile.txt
tftp -i 192.168.1.100 get test_upload.txt test_download.txt

下载成功后,客户端目录下应生成test_download.txt

批量文件传输测试

若需传输多个文件,可编写脚本循环调用tftp命令,在服务器端创建/srv/tftp/files目录,放置多个测试文件,然后在客户端使用以下脚本批量下载:

#!/bin/bash
SERVER_IP="192.168.1.100"
REMOTE_DIR="/files"
LOCAL_DIR="./downloaded_files"
mkdir -p $LOCAL_DIR
for file in $(tftp -i $SERVER_IP ls $REMOTE_DIR 2>/dev/null); do
    tftp -i $SERVER_IP get $REMOTE_DIR/$file $LOCAL_DIR/$file
done

常见问题及解决

权限问题

现象:上传或下载文件时提示“Permission denied”。 解决:检查/srv/tftp目录权限是否正确,确保tftp用户有读写权限:

sudo ls -ld /srv/tftp
sudo chown -R tftp:tftp /srv/tftp
sudo chmod -R 777 /srv/tftp

防火墙或端口问题

现象:客户端无法连接到TFTP服务器。 解决

  • 检查服务器防火墙是否允许UDP 69端口:
    sudo ufw status
  • 确认TFTP服务状态:
    sudo systemctl status tftpd-hpa
  • 使用netstat检查端口是否监听:
    sudo netstat -ulnp | grep 69

文件路径问题

现象:上传文件后无法在服务器目录中找到。 解决:确认TFTP_DIRECTORY配置正确,且文件上传路径是否在根目录内,若配置为/srv/tftp,上传的文件需直接位于该目录或其子目录。

相关问答FAQs

问题1:TFTP服务器与FTP服务器有何区别?
解答:TFTP(简单文件传输协议)是基于UDP的轻量级协议,仅支持文件传输,无认证机制,适用于简单场景(如设备固件升级);FTP(文件传输协议)是基于TCP的复杂协议,支持用户认证、目录操作和多种数据传输模式,适用于文件共享和管理,TFTP无需用户名密码,安全性较低,而FTP可通过SSL/TLS加密传输。

问题2:如何限制TFTP服务器的访问IP地址?
解答:可通过修改TFTP_OPTIONS参数结合xinetd服务实现IP限制,首先安装xinetd

sudo apt install xinetd

然后创建/etc/xinetd.d/tftp配置文件,内容如下:

service tftp
{
    socket_type = dgram
    protocol = udp
    wait = no
    user = tftp
    server = /usr/sbin/in.tftpd
    server_args = -s /srv/tftp -c --address 192.168.1.100
    only_from = 192.168.1.0/24
    disable = no
}

only_from指定允许访问的IP网段,--address绑定服务器IP,重启xinetd服务:

sudo systemctl restart xinetd

此时仅168.1.0/24网段的主机可访问TFTP服务器。

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