Search
Duplicate

PxE Kictstart서버 구성하기

키워드
VMware
GNS
PxE
Kictstart
ftp
tftp
dhcp
httpd
helper address

1. 시나리오

Vmware와 gns를 통해 진행
pxe-ftp 192.168.3.21 (OS설치파일)
pxe-tftp 192.168.3.69 (부팅에 필요한 파일 전송)
pxe-client 192.168.3.0 /24 대역에서 150~160 아이피가 할당
pxe-http 192.168.4.80 (킥스타트 파일)
pxe-dhcp 192.168.1.67 (client에게 ip 부여)
클라이언트가 자동으로 192.168.3.0 대역 아이피를 할당받고 OS를 설치할 수 있도록 구성

2. 실습

2.1 pxe-ftp 구성

a. 방화벽 비활성화

systemctl disable --now firewalld # config파일에서 selinux=disabled vi /etc/selinux/config # selinux=disabled를 위한 재부팅 init 6
Bash
복사

b. ftp 패키지 설치

yum -y install vsftpd systemctl enable --now vsftpd
Bash
복사

c. OS설치파일 ftp에 올려두기

#centos7 이미지 파일 iso파일을 /media에 마운트 mount /dev/cdrom /media #OS설치 파일을 ftp 기본 폴더에 전부 복사 cp -r /media/* /var/ftp/pub #ftp 재시작 systemctl restart vsftpd
Bash
복사

d. 네트워크 재설정

패키지 설치를 위해 nat대역으로 설정해뒀던 것을 원래 아이피로 설정

2.2 pxe-tftp 구성

a. 방화벽 비활성화

systemctl disable --now firewalld # config파일에서 selinux=disabled vi /etc/selinux/config # selinux=disabled를 위한 재부팅 init 6
Bash
복사

b. tftp 패키지 설치

yum -y install tftp-server systemctl enable --now tftp
Bash
복사

c. syslinux 설치 및 tftp 폴더로 이동

*pxelinux.0파일은 .iso 파일내에 없으므로 설치
pxelinux.0 : pxe 부팅에 필요한 파일
yum -y install syslinux cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
Bash
복사

d. 커널과 임시 저장공간 tftp 폴더로 이동

*vmlinuz*initrd.img를 centos7.iso 파일에서 가져옴
vmlinuz : 압축된 리눅스 커널
initrd.img : 임시 저장공간으로 사용할 램디스크 파일(램을 마치 디스크처럼 사용)
mount /dev/cdrom /media cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/ cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/
Bash
복사

e. pxe 부팅 설정

cd /var/lib/tftpboot/pxelinux.cfg/ vi default #default 파일 DEFAULT 본인이 원하는 이름 LABEL DEFAULT와 같은 이름 kernel vmlinuz #repo는 initrd.img 가져올 곳 ks는 kickstart 관련 파일 가져올 곳 APPEND initrd=initrd.img repo=ftp://192.168.3.21/pub ks=http://192.168.4.80/본인이 정한 cfg 이름.cfg
Bash
복사

f. 재시작

systemctl restart tftp
Bash
복사

g. 네트워크 재설정

패키지 설치를 위해 nat대역으로 설정해뒀던 것을 원래 아이피로 설정

2.3 pxe-http 구성

a. 방화벽 비활성화

systemctl disable --now firewalld # config파일에서 selinux=disabled vi /etc/selinux/config # selinux=disabled를 위한 재부팅 init 6
Bash
복사

b. 웹서버 패키지 설치

yum -y install httpd sytemctl enable --now httpd
Bash
복사

c. kickstart 설정 파일 웹 서버 경로에 올려두기

vi /var/www/html/centos.cfg #centos.cfg 파일내용(세부 설정 내용은 하기에 따라 다름 #gui환경에서 system-config-kickstart 패키지를 다운 받고 설정하는게 편할수도 있음 #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard 'us' # Root password rootpw --iscrypted $1$PlUn7Ika$C1EV.7Hw8WUHUCPzENz9t0 # System language lang en_US # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical firstboot --disable # SELinux configuration selinux --disabled # Firewall configuration firewall --disabled # Reboot after installation reboot # System timezone timezone Africa/Abidjan # Use network installation ####여기가 특히 많이 바뀔듯, os설치 파일 어디서 가져올지 url --url="ftp://192.168.3.21/pub" #### # System bootloader configuration bootloader --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part swap --fstype="swap" --size=2048 part / --fstype="xfs" --grow --size=1 ##아래 패키지들은 gui환경에서만 받을 수 있음,minimal에서는 설정 적용 안됨 %packages #@base #@core #@directory-client #@fonts #@gnome-desktop #@input-methods #@internet-browser #@java-platform #@multimedia #@network-file-system-client #@x11 %end
Bash
복사

d. 재시작

systemctl restart network
Bash
복사

e. 네트워크 재설정

패키지 설치를 위해 nat대역으로 설정해뒀던 것을 원래 아이피로 설정

2.4 pxe-dhcp 구성

a. 방화벽 비활성화

systemctl disable --now firewalld # config파일에서 selinux=disabled vi /etc/selinux/config # selinux=disabled를 위한 재부팅 init 6
Bash
복사

b. dhcp 패키지 설치

yum -y install dhcp systemctl enable --now dhcpd
Bash
복사

c. dhcp 설정

vi /etc/dhcp/dhcpd.conf ##dhcpd.conf 파일 # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # subnet 192.168.3.0 netmask 255.255.255.0 { option routers 192.168.3.200; #GW option subnet-mask 255.255.255.0; #SM range dynamic-bootp 192.168.3.150 192.168.3.160; #ip를 받아올 수 없는 상황(bare-metal)에서도 ip를 부여받을 수 있도록. option domain-name-servers 8.8.8.8; #DNS allow booting; #부팅 허용. next-server 192.168.3.69; #PxE 서버의 주소 filename "pxelinux.0"; # next-server에 가서 받아올 파일. } ###내가 속한 대역의 dhcp 설정을 만들어야 동작됨 subnet 192.168.1.0 netmask 255.255.255.0 {}
Bash
복사

d. 재시작

systemctl restart dhcpd
Bash
복사

e. 네트워크 재설정

패키지 설치를 위해 nat대역으로 설정해뒀던 것을 원래 아이피로 설정

2.5 gns 구성하기

a. interface마다 아이피 설정

int f0/0 ip add 192.168.1.200 255.255.255.0 no sh int f1/0 ip add 192.168.4.200 255.255.255.0 no sh int f2/0 ip add 192.168.3.200 255.255.255.0 no sh
Bash
복사

b. ip helper-address 설정

interface f2/0에 helper-address 192.168.1.67 설정 해야함
int f2/0 ip helper-address 192.168.3.200 255.255.255.0 no sh
Bash
복사

3. 어려웠던점

dhcp설정을 하고 gns에서 라우터에 ip helper-address 설정을 해야함
브로드캐스트는 기본적으로 다른 라우터로 넘어가지 않음
따라서 ip helper-address 설정을 통해서 client가 브로드캐스트를 요청했을때 그 브로드캐스트가 어디로 가야할지를 알려줘야함
dhcpd.conf에서 자신의 ip대역을 설정을 안 해줘서 실행이 안됨
DHCP 데몬은 자기가 갖고 있는 pool 중에 적어도 거기에 속한 1개의 인터페이스를 갖고있어야 동작함
따라서 그 대역에 속한 가상의 인터페이스를 ‘임시로’ 한개 만들거나, 혹은 내가 속한 대역의 dhcp 설정을 아무거나 한개 만들어야 함

4. 성과

PxE 서버를 구성하여 새로운 더미 VMware의 가상머신들을 빠르게 생성할 수 있음
하나의 서버가 아닌 ftp, tftp, http, dhcp 기능을 하는 여러 서버들을 서로 통신하게 하여 하나의 pxe 서버 기능을 할 수 있도록 할 수 있음
오류 내용을 파악하여 어디가 문제 일지 역으로 추적할 수 있음
dhcp 기능이 안됨
같은 대역은 되는지 확인
같은 대역은 되는데 다른 대역이 안 되는것으로 ip address 생각해냄