Linux

[Linux] PXE 설치 서버 구현

TTOII 2022. 3. 21. 23:55
728x90

✔️ PXE 서버 구현

사용한 가상 머신 tool은 VMware이다.

 

1. PXE 설치 서버와 관련된 패키지들을 설치 및 설정하기

[root@dns ~]# yum -y install syslinux dhcp-server tftp-server vsftpd

yum으로 패키지들을 설치한다.

[root@dns ~]# systemctl stop firewalld
[root@dns ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

관련 포트를 열어야 하는데, 관련 포트가 여러개이므로 방화벽을 꺼둔다.

 

dhcp.conf 파일

dhcp 서비스를 설정하는 파일이다. 

/usr/share/doc/dhcp-server/dhcpd.conf.example 또는 

/usr/share/doc/dhcp-4.3.6/dhcpd.conf.example 파일을 열어 dhcp 설정 예시를 확인할 수 있다. (주로 복사해서 사용)

 

dhcp 서버 구성요소 3가지

  • 영역 구성(IP 대역대)
  • Routers
  • Domain IP

dhcp 설정 파일 내용에 대한 설명

subnet 10.5.5.0 netmask 255.255.255.0 {          # 네트워크 구성을 위한 Network ID 및 할당 가능 대역 설정

                                                              # 서브넷은 해당 DHCP 서버 IP 대역대를 입력해준다.

range 10.5.5.26 10.5.5.30;                             # client 에게 제공할 IP주소 범위 값 

option domain-name-servers ns1.internal.example.org;    # client 에게 제공할 DNS 서버의 주소 

option domain-name "internal.example.org";                 # client에게 제공할 DNS 서버의 도메인명 

option routers 10.5.5.1;                                # client가 사용할 gateway 주소 

option broadcast-address 10.5.5.31;                # 적용시킨 broadcast 주소 

default-lease-time 600;                                # IP임대 기간의 기본값 (옵션 사항)

max-lease-time 7200;                                  # IP 임대 기간의 최대값 (옵션 사항)

}

 

→ 다음과 같이 설정한다면 

10.5.5.0 : Network를 대표하는 IP

10.5.5.1 DHCP 서버의 IP

10.5.5.26 ~ 10.5.5.30 : 동적으로 할당할 IP 주소들 (여기서는 총 5대의 PC에게 IP 임대가 가능하다.)

10.5.5.255 : broadcast IP 

 

고정 IP 설정

host raspberry {

hardware ethernet dc:a6:32:e6:14:f9;

fixed-address 10.5.5.27;

}

MAC address가 dc:a6:32:e6:14:f9 인 client IP 주소를 10.5.5.27로 고정한다는 의미이다.

[root@dns ~]# vi /etc/dhcp/dhcpd.conf

subnet 192.168.6.0 netmask 255.255.255.0 {
        option routers 192.168.6.2;
        option subnet-mask 255.255.255.0;
        range dynamic-bootp 192.168.6.150 192.168.6.199;
        option domain-name-servers 192.168.6.2;
        allow booting; # 부팅을 허용함
        allow bootp; # 부팅프로토콜을 허용함
        next-server 192.168.6.128; # 부팅 파일이 있는 서버의 주소
        filename "pxelinux.0"; # 부팅 파일 이름(syslinux)
}

우선 DHCP 서버의 설정 파일인 /etc/dhcp/dhcpd.conf를 vi로 열어 PXE 부팅을 허용하도록 추가해줘야 한다. 

IP 주소를 192.168.6.150 ~ 199 까지 할당하는 것으로 설정한다. (50대의 클라이언트에 IP 주소를 동시에 할당할 수 있다.)

vi /etc/vsftpd/vsftpd.conf

ftp 서버 기능을 하는 vsftpd 설정 파일인 /etc/vsftpd/vsftpd.conf 파일에서 익명 사용자의 접속을 허용해줘야 한다.

/etc/vsftpd/vsftpd.conf 파일을 열어 anonymous_enable=NO를 YES로 변경한다. 

ftp 서버는 CentOS 설치 패키지를 클라이언트에 전송하는 역할을 할 것이다. 

 

2. CentOS ISO 파일을 ftp 서버의 홈 디렉토리인 /var/ftp 아래에 있는 /pub 디렉토리에 마운트하기

VMware 메뉴의 [Player] → [Removable Devices] → [CD/DVD] → [Setting]을 선택해 CentOS DVD ISO 파일을 VMware에 연결한다.

[root@localhost ~]# umount /dev/cdrom
[root@localhost ~]# mount /dev/cdrom /var/ftp/pub
mount: /var/ftp/pub: WARNING: device write-protected, mounted read-only.

umount /dev/cdrom 명령으로 마운트를 끊고 mount/dev/cdrom /var/ftp/pub 명령으로 새로 마운트한다. 

쓰기 방지와 읽기 전용으로 마운트된다.

 

3. 부팅에 필요한 파일 준비하기

cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /var/ftp/pub/isolinux/ldlinux.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
ls -l /var/lib/tftpboot/

tftp 서버의 디렉토리인 /var/lib/tfrpboot/에 DVD의 부팅 이미지 및 syslinux 부팅 파일을 복사한다.

복사가 끝나면 정상적으로 복사되었는지 확인한다.

mkdir /var/lib/tftpboot/pxelinux.cfg
cd /var/lib/tftpboot/pxelinux.cfg/
touch default

다음 명령을 입력해 /var/lib/tftpboot/ 디렉토리에 부팅 관련 디렉토리와 설정 파일을 생성한다.

DEFAULT CentOS8_Auto_Install # 기본 부팅 Label 지정
LABEL CentOS_Auto_Install # Label 시작
    kernel vmlinuz # 커널 지정(/var/lib/tftpboot/ 디렉터리에 복사해둠)
    APPEND initrd=initrd.imag repo=ftp://192.168.6.128/pub # CentOS패키지 저장소

default 파일을 열고 내용을 채운다. 

 

4. 관련된 서버 시작하기 

[root@pxe-server pxelinux.cfg]# systemctl start dhcpd
[root@pxe-server pxelinux.cfg]# systemctl start vsftpd
[root@pxe-server pxelinux.cfg]# systemctl start tftp
[root@pxe-server pxelinux.cfg]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@pxe-server pxelinux.cfg]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@pxe-server pxelinux.cfg]# systemctl enable tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.

 

5. VirtualBox가 제공하는 DHCP 서비스를 중지하기

직접 구축한 DHCP 서버를 사용하기 위해 VirtualBox가 제공하는 DHCP 서버 기능을 꺼야한다.

[Edit] → 

 

테스트할 가상머신을 생성한다. 

가상머신을 부팅하고 기다리면 스스로 tftp에 접속해 파일을 다운로드 한다.

잠시 기다리면 CentOS의 설치화면이 나온다. 

728x90