从 tftp 服务器复制文件

从 tftp 服务器复制文件

AFAIU,当tftp服务器用于pxe启动时,客户端向服务器发送请求,服务器发回一些文件(initrd,kernel,config,...)。服务器可以根据客户端的IP地址决定向客户端发送哪些文件。客户端不知道这些文件的 URL。

我的问题是这样的:

我想测试tftp服务器。我想运行一个命令或一个(简单)脚本来联系服务器tftp,接收文件,并将这些文件保存在磁盘上。

换句话说,我想做的是:

  • 在服务器端,没有区别:服务器认为客户端想要通过 PXE 启动并将文件发送到客户端

  • 在客户端:客户端实际上并不想要启动。它只是想将文件复制(保存)到磁盘。

做到这一点最简单的方法是什么?

答案1

@Patrick 对您的问题所做的评论是完全正确的:客户端计算机引导 PXE 所需的全部内容就是广播 DHCP 请求。 DHCP 服务器(通常在 PXE 启动服务器上)将查看客户端设备的 MAC 地址,并使用它来

  • 给客户端一个IP地址
  • 告诉客户端应该从 PXE 服务器获取哪些文件

此时,客户端知道服务器的地址以及可以从中获取什么。不幸的是,有很多繁琐的地方,比如只能有一个 DHCP 服务器,它具有 PXE 客户端的特殊配置,需要运行 TFTP 服务器等等。

有一个非常好的分步指南:https://wiki.debian.org/PXEBootInstall。您没有指定您的发行版,但大多数 PXE 系统至少会与该指南一致。

我知道您的问题是您不想知道 PXE 服务器的地址。但只有一种方法(无需编写自己的客户端)可以完成,即使用 PXE 客户端 DHCP 请求器/处理器。如果你想放弃这一部分,你就会放弃很多引导你所需的能力。

我知道您实际上并不想启动机器,这会让您为了测试目的而实施大量 PXE 协议。如果您没有可用的临时机器,我很好奇为什么您需要测试 PXE。

答案2

使用真实的客户端怎么样tftp

我想到的就是这两个:

答案3

我最熟悉的是如何皮匠设置 TFTP,所以我不确定这是否相关,但无论如何我都会提供此信息。 Cobbler 使用pxelinux.0as设置引导加载程序@Patrick 在评论中解释@msw。但它还设置了一个相应的pxelinux.cfg/目录,其中包含将连接到服务器的每个系统的 MAC 地址。

这些文件包含pxelinux.cfg如下文件信息:

$ more 01-54-52-00-ff-ff-ff
default linux
prompt 0
timeout 1
label linux
        kernel /images/Centos56-x86_64/vmlinuz
        ipappend 2
        append initrd=/images/Centos56-x86_64/initrd.img ksdevice=bootif lang=  console=ttyS0,115200 text serial kssendmac  ks=http://192.168.1.207/cblr/svc/op/ks/system/kvmcobblertest

该虚拟机将启动的实际 Linux 内核包含在该 TFTP 可访问目录 中/images/Centos56-x86_64/vmlinuz。从服务器背面看整个TFTP目录结构是这样的:

$ ls -l /tftpboot/
total 348
drwxr-xr-x 2 root root   4096 Jun 22  2011 etc
drwxr-xr-x 2 root root   4096 Jul  9  2012 grub
drwxr-xr-x 6 root root   4096 Jul  9  2012 images
drwxr-xr-x 2 root root   4096 Jun 30  2011 images2
-rw-r--r-- 1 root root  20020 Jul  9  2012 memdisk
-rw-r--r-- 1 root root  39188 Jul  9  2012 menu.c32
drwxr-xr-x 2 root root   4096 Jun 22  2011 ppc
-rw-r--r-- 1 root root  14716 Jul  9  2012 pxelinux.0
drwxr-xr-x 2 root root   4096 Jul  9  2012 pxelinux.cfg
drwxr-xr-x 2 root root   4096 Jul  9  2012 s390x
-rw-r--r-- 1 root root 198192 Jul  9  2012 yaboot

正如其他人所描述的那样,针对此 TFTP 服务器启动的服务器最初可以访问的唯一内容是pxelinux.0与特定服务器的 MAC 地址相对应的配置文件。

图片目录

如果你好奇的话,它看起来像这样:

$ tree /tftpboot/images
/tftpboot/images
|-- Centos56-x86_64
|   |-- initrd.img
|   `-- vmlinuz
|-- Centos56-xen-x86_64
|   |-- initrd.img
|   `-- vmlinuz
`-- Centos60-x86_64
    |-- initrd.img
    `-- vmlinuz

3 directories, 6 files

相关内容