본문 바로가기
운영체제/리눅스

(리눅스) 무인 원격 설치 서버

by Cloud_Park 2018. 11. 26.
Kickstart란?
  킥스타트란 네트워크 부팅을 통하여 OS를 자동으로 설치하는 설치 방법
  이러한 환경을 PXE 또는 PXE 서버라고 함 (Pre-boot eXecution Enviroment)

구성
  PXE 서버	: OS 이미지 및 설치 정보를 전달해줄 서버	NFS, DHCP
  TFTP 서버	: 부트 이미지를 전달해줄 서버			TFTP
  PXE 클라이언트	: 네트워크 인터페이스가 포함된 시스템

TFTP
  1) 설치
	yum install -y tftp tftp-server xinetd
  2) 설정
	vi /etc/xinetd.d/tftp
		disable = no 로 변경

	systemctl restart xinetd

  3) 확인
	/var/lib/tftpboot 에 파일을 생성
	다른 위치에서 tftp  [서버IP]  -c get [생성한 파일 이름]
	파일이 다운되면 성공


DHCP
  1) DHCP란?
	Dynamic Host Configuration Protocol, 동적으로 IP주소를 할당해주는 프로토콜, DHCP를 이용해서 사용자들에게
	동적으로 IP를 임대해주는 서버가 DHCP 서버이다.

  2) DHCP 프로토콜
	(1) DHCP Discover
	메시지 방향: 단말 -> DHCP 서버
	브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)
	의미: 단말이 DHCP 서버를 찾기 위한 메시지입니다. 그래서 LAN상에(동일 subent상에) 브로드캐스팅을 하여 "거기 혹시 DHCP 서버 있으면 내게 응답 좀 해 주세요~"라고 단말이 외칩니다.
	 
	(2) DHCP Offer
	메시지 방향: DHCP 서버 -> 단말
	브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)이거나 유니캐스트일수 있습니다. 이는 단말이 보낸 DHCP Discover 메시지 내의 Broadcast Flag의 값에 따라 달라지는데, 이 Flag=1이면 DHCP 서버는 DHCP Offer 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.
	의미: DHCP 서버가 "저 여기 있어요~"라고 응답하는 메시지입니다. 단순히 DHCP 서버의 존재만을 알리지 않고, 단말에 할당할 IP 주소 정보를 포함한 다양한 "네트워크 정보"를 함께 실어서 단말에 전달합니다.
	 
	(3) DHCP Request
	메시지 방향: 단말 -> DHCP 서버
	브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)
	의미: 단말은 DHCP 서버(들)의 존재를 알았고, DHCP 서버가 단말에 제공할 네트워크 정보(IP 주소, subnet mask, default gateway등)를 알았습니다. 이제 단말은 DHCP Request 메시지를 통해 하나의 DHCP 서버를 선택하고 해당 서버에게 "단말이 사용할 네트워크 정보"를 요청합니다.
	 
	(4) DHCP Ack
	메시지 방향: DHCP 서버 -> 단말
	브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF) 혹은 유니캐스트일수 있으며 이는 단말이 보낸 DHCP Request 메시지 내의 Broadcast Flag=1이면 DHCP 서버는 DHCP Ack 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.
	의미: DHCP 절차의 마지막 메시지로, DHCP 서버가 단말에게 "네트워크 정보"를 전달해 주는 메시지입니다. 앞서 설명드린 DHCP Offer의 '네트워크 정보"와 동일한 파라미터가 포함됩니다.

 
  3) DHCP 서버 설치
	yum install -y dhcp

  3) DHCP 서버 설정
	vi /etc/dhcp/dhcpd.conf 파일 수정

subnet 192.168.240.0 netmask 255.255.255.0 {
  range 192.168.240.101 192.168.240.199;
  option domain-name-servers 8.8.8.8;
  option routers 192.168.240.2;
  option broadcast-address 192.168.240.255;
  default-lease-time 600;
  max-lease-time 7200;
}

	systemctl restart dhcpd


  4) DHCP 서버 확인
	다른 시스템에서 dhcp로 IP 할당



 NFS
  1) NFS란?
	Network File System, 서버의 특정 디렉토리를 클라이언트의 특정 디렉토리와 연결시켜주는 기술

  2) 설정
	mkdir /share
	touch /share/a
	vi /etc/exports
	  /share 192.168.240.*(rw)
	systemctl restart nfs

  3) 확인

무인 원격 설치 설정
  1) 설치 파일 준비
	ISO 이미지 삽입
	/run/media/sjb/CentOS 7 x86_64/isolinux에서
		initrd.img와 vmlinuz을 복사

	yum install syslinux	설치하고
	  /usr/share/syslinux에서
		menu.c32와 pxelinux.0를 복사

  2) tftp 설정
	vi /etc/xinetd.d/tftp 
		server_args             = -s /tftpboot

	mkdir /tftpboot
		menu.c32와 pxelinux.0를 복사

	mkdir /tftpboot/CentOS7
		initrd.img와 vmlinuz을 복사

	mkdir /tftpboot/ks
		cp /root/anaconda-ks.cfg /tftpboot/ks/ks.cfg

	mkdir /tftpboot/pxelinux.cfg
		vi default
DEFAULT menu.c32
timeout 100

menu title ### OS Installer Boot Menu ###

LABEL CentOS7
	kernel CentOS7/vmlinuz
	append ksdevice=link load_ramdisk=1 initrd=CentOS7/initrd.img unsupported_hardware text network ks=nfs:192.168.240.100:/tftpboot/ks/ks.cfg text

	

  3) DHCP 설정
	vi /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
default-lease-time 600;
max-lease-time 7200;
option domain-name-servers 8.8.8.8;
option ip-forwarding false;
option mask-supplier false;
ddns-update-style none;
next-server 192.168.240.100;
filename "pxelinux.0";

subnet 192.168.240.0 netmask 255.255.255.0 {
        option routers 192.168.240.2;
        range 192.168.240.101 192.168.240.199;
}




  4) NFS  설정
	cp -r /run/media/sjb/CentOS\ 7\ x86_64/* /iso

	vi /etc/exports
		/tftpboot/ks	192.168.240.* (ro)
		/iso	192.168.240.* (ro)
		각 각 공유

  5) Kickstart 설정
	vi /tftpboot/ks/ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
install

# Use graphical install
text

nfs --server=192.168.240.100 --dir="/iso"

# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=kr --xlayouts='kr'
# System language
lang ko_KR.UTF-8

# Network information
network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$3KSzSujoZ4nUIyYR$.mcWCH5rgKH2aWqeuAi02KNGd2iYxcszlyXvpthozU0maaaq5KG5mPjxi1Ti6jOu1/vD/ChvCFFwKYP8.hLW3/
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Seoul --isUtc
# X Window System configuration information
xconfig  --startxonboot
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel --drives=sda

%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end






	권한 에러
	  chmod -R 777 /tftpboot

	타임아웃
	  systemctl stop firewalld
	  setenforce 0




'운영체제 > 리눅스' 카테고리의 다른 글

(리눅스)리눅스의 기초  (0) 2019.04.12
(리눅스)우분투에서 윈도우로 파일이동  (0) 2019.01.30
(리눅스)웹 서버 & DB 서버(MySQL)  (0) 2018.11.26
(리눅스)DNS 서버  (0) 2018.11.26
(리눅스) 패키지 관리  (0) 2018.11.26