DHCP 서버, PXE 서버, Kickstart 실습

sso·2025년 5월 7일

리눅스 서버

목록 보기
36/40

DHCP 서버

dhcp 설치

dnf -y install dhcp-server

dhcp-server 설치된 리스트 확인

rpm -ql dhcp-server

dhcp ip 정보 내용 복사 (46번째 행)

vi /usr/share/doc/dhcp-server/dhcpd.conf.example

subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}

dhcp 서버 설정에서 편집

vi /etc/dhcp/dhcpd.conf

subnet 192.168.111.0 netmask 255.255.255.0 {
range 192.168.111.52 192.168.111.60;
option domain-name-servers 1.1.1.1;
option routers 192.168.111.2;
option broadcast-address 192.168.111.255;
default-lease-time 43200;
max-lease-time 86400;
}

dhcp 설정 적용

systemctl --now enable dhcpd
systemctl restat dhcpd

방화벽 개방

firewall-cmd --add-service=dhcp

클라이언트에서 dhcp로 ip 받아오기

  1. VMware DHCP 기능 해제

VMware Edit > Virtual Network Editor > Use local DHCP 체크 해제

  1. 기존 ip 설정 해제 및 ens33 재실행하여 ip 받아오기

nmcli con mod ens33 ipv4.addr "" ipv4.dns "" ipv4.gateway "" ipv4.method auto connection.autoconnect yes
nmcli con down ens33
nmcli con up ens33

이전에 생성한 새로운 winserver_test에서 dhcp 확인
(암호 p@ssw0rd)

껐다 키기

DHCP + PXE 서버

설치용으로 사용할 서버에 필요한 패키지 설치

Server A

dnf -y install dhcp-server syslinux tftp-server vsftpd

syslinux - PXE 부팅 시에 클라이언트가 사용할 부트로더 제공
(pxelinux.0, ldlinux.c32등의 파일이 필요한데 해당 파일들을 제공)

pxelinux.0 - PXE 환경의 부트로더
(클라이언트가 dhcp로 네트워크 연결 후 가장 먼저 tftp로 받아올 파일)
(어떤 형태의 커널을 가지고 부팅을 시작할지 결정)

ldlinux.c32 - pxelinux.0 파일 실행 시 필요한 라이브러리

tftp-server - 단순한 파일 전송 프로그램
(69번 upd 포트 사용 - 아주 작은 크기의 파일을 인증없이 빠르게 전송 가능)

dhcp 설정 파일 추가 기입

vi /etc/dhcp/dhcpd.conf

allow booting;
allow bootp;
next-server 192.168.111.100;
filename "pxelinux.0";

데몬 재시작

systemctl restart dhcpd

설치 디스크 확인

df

만약 없다면 connected 체크 여부와 파일이 해당 위치에 존재하는지 확인

디스크가 FTP 서버에서 배포될 수 있는 경로에 추가적으로 마운트
/var/ftp/pub에 디스크를 마운트

mount /dev/sr0 /var/ftp/pub

lsblk

cd /var/ftp/pub

images/pxeboot의 initrd.img, vmlinuz를 tftp 기본 경로로 복사
/var/lib/tftpboot

cp ./images/pxeboot/initrd.img /var/lib/tftpboot
cp ./images/pxeboot/vmlinuz /var/lib/tftpboot

isolinux/ldlinux.c32 파일을 /var/lib/tftpboot로 복사

cp ./isolinux/ldlinux.c32 /var/lib/tftpboot

마지막으로 부트로더 파일 pxelinux.0을 /var/lib/tftpboot로 복사

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

pxelinux.0 부트 로더 파일을 /var/lib/tftpboot/pxelinux.cfg/default 파일을 기본 설정 파일로서 읽음

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

DEFAULT rocky_4gl_pxe
LABEL rocky_4gl_pxe
KERNEL vmlinuz
APPEND initrd=initrd.img repo=ftp://192.168.111.100/pub

익명 계정 사용 여부 설정
anonymous 설정

vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES

데몬 실행

systemctl --now enable vsftpd tftp dhcpd
systemctl restart vsftpd tftp dhcpd

방화벽 오픈

firewall-cmd --add-service={tftp,ftp}

새로운 VM으로 테스트(만들고 켜기만 하되, 사양 조금 높게 지정)

DHCP + PXE + Kickstart 서버

Server A에서 anaconda-ks.cfg 내용과 동일

vi anaconda-ks.cfg

repo 주석처리 후 ftp 주소 등록

cdrom 주석 처리

처음 Server A 세팅하며 설정했던 파티션 설정 부분 확인 (내용만 확인 수정X)

혹시 모르니 해당 파일 백업

cp anaconda-ks.cfg anaconda-ks.cfg.backup

수정한 킥스타트 파일은 FTP 서버에서 읽을 수 있도록 복사

cp anaconda-ks.cfg /var/ftp/rocky8.ks

다른 사용자도 읽을 수 있게 권한 부여

chmod 644 /var/ftp/rocky8.ks

킥스타트 파일의 경로를 /var/lib/tftpboot/pxelinux.cfg/default에 명시

vi /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT rocky_4gl_pxe
LABEL rocky_4gl_pxe
KERNEL vmlinuz
APPEND initrd=initrd.img repo=ftp://192.168.111.100/pub ks=ftp://192.168.111.100/rocky8.ks

새로운 장비에서 실행하여 정상적으로 설치되면 성공


문제

B에 DHCP + PXE 구성 후 테스트용 서버를 재부팅하여 설치 화면까지 진입

dnf -y install dhcp-server syslinux tftp-server vsftpd

vi /etc/dhcp/dhcpd.conf

subnet 192.168.111.0 netmask 255.255.255.0 {
range 192.168.111.210 192.168.111.220;
option domain-name-servers 1.1.1.1;
option routers 192.168.111.2;
option broadcast-address 192.168.111.255;
default-lease-time 600;
max-lease-time 7200;
allow booting;
allow bootp;
next-server 192.168.111.200;
filename "pxelinux.0";
}

mount /dev/sr0 /var/ftp/pub

cd /var/ftp/pub

cp ./images/pxeboot/initrd.img /var/lib/tftpboot
cp ./images/pxeboot/vmlinuz /var/lib/tftpboot
cp ./isolinux/ldlinux.c32 /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

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

DEFAULT rocky_4gl_pxe
LABEL rocky_4gl_pxe
KERNEL vmlinuz
APPEND initrd=initrd.img repo=ftp://192.168.111.200/pub

vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

systemctl --now enable vsftpd tftp dhcpd
systemctl restart vsftpd tftp dhcpd

firewall-cmd --add-service={dhcp,tftp,ftp}

profile
오늘도 하나씩 해결해 나가자!

0개의 댓글