TFTP-服务搭建

参考

介绍

TFTP (Trivial File Transfer Protocol) 是一个相比 FTP (File Transfer Protocol) 更为简单的文件传输协议.

其与 FTP 服务的差别在:

  • 功能: TFTP 仅提供基本的文件传输 (上传和下载), 而 FTP 还提供文件和目录管理, 文件重命名, 权限设置等
  • 验证: TFTP 不要求用户进行身份验证, 也没有内置加密机制保护数据传输, 而 FTP 支持多种身份验证方法, 如用户名/密码, ssh 密钥等
  • 端口: TFTP 使用 69/UDP. 而 FTP 使用 21/TCP
  • 效率: TFTP 在传输小文件上更高效. 而 FTP 支持数据分块, 断点续传等传递大文件

相关概念

TFTP 根目录

TFTP 根目录为 /var/lib/tftpboot, 用于存放需要通过 TFTP 进行传输的文件.

安装及相关命令

服务端

这里以 Fedora 38 为例:

1
sudo dnf install -y tftp-server

其提供:

  • /usr/sbin/in.tftpd, TFTP 服务守护进程
  • /etc/xinetd.d/tftp/etc/inetd.d/tftp, 配置文件, 可能不存在
  • /var/lib/tftpboot/srv/tftp, 也可能不存在

in.tftpd 命令的常用选项有:

  • -c, --create, 允许客户端在服务器创建文件
  • -s, --secure, 更改 TFTP 服务根目录
  • -p, --permissive, 不做额外的权限检查

客户端

1
sudo dnf install -y tftp

其提供:

  • /usr/bin/tftp, 客户端命令

tftp 客户端常用选项有:

  • -v, “verbose”, 开启详细输出模式
  • -4, 只允许 IPv4 连接
  • -6, 只允许 IPv6 连接

配置

服务端

TFTP 服务默认没有配置文件, 可以创建 /etc/default/tftp/etc/default/tftp-hpa 来配置, 也可以结合 xinetd 服务使用.

TFTP 默认的设置有:

  • 监听端口为 69/UDP
  • 默认根目录为 /var/lib/tftpboot

一般用命令设置一些参数, 编写 Unit file 来启动:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Tftp Server
Requires=tftp-server.socket
Documentation=man:in.tftpd

[Service]
ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot
StandardInput=socket

[Install]
WantedBy=multi-user.target
Also=tftp-server.socket

客户端

1
2
3
4
5
6
7
8
[client@thinclient:~ ]$ tftp 192.168.1.164
tftp> verbose
Verbose mode on.
tftp> get server.logs
getting from 192.168.1.164:server.logs to server.logs [netascii]
Received 7 bytes in 0.0 seconds [inf bits/sec]
tftp> quit
[client@thinclient:~ ]$

启动

1
2
3
4
5
systemctl daemon-reload
systemctl enable --now tftp-server
chmod 777 /var/lib/tftpboot
firewall-cmd --add-service=tftp --perm
firewall-cmd --reload

对于 PXE 启动

一般只需要安装 tftp-server, 然后:

1
systemctl enable --now tftp.socket

并开启防火墙:

1
2
firewall-cmd --add-service=tftp --permanent
firewall-cmd --reload

并将相关文件放在 /var/lib/tftpboot/ 目录下即可.


TFTP-服务搭建
http://example.com/2024/03/13/TFTP-服务搭建/
作者
Jie
发布于
2024年3月13日
许可协议