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.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

관련 정보