копировать файлы с 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-сервера. Но есть только один способ (без написания собственного клиента), который можно сделать, с помощью DHCP-клиента PXE requester/processor. Если вы хотите отказаться от этой части, вы отбрасываете большую часть возможностей, необходимых для самозагрузки.

Я знаю, что вы на самом деле не хотите загружать машину, что ставит вас в положение, когда вам приходится реализовывать большую часть протокола PXE для целей тестирования. Если у вас нет доступной машины для скретча, мне интересно, зачем вам вообще нужно тестировать PXE.

решение2

А как насчет использования реального tftpклиента?

Мне на ум приходят два:

решение3

Я лучше всего знаком с тем, какСапожникнастраивает TFTP, поэтому я не уверен, что это имеет значение, но я предоставлю эту информацию в любом случае. Cobbler настраивает загрузчик, используя pxelinux.0как@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

Связанный контент