從 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

相關內容