Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

동적 IP 할당 서버(DHCP) 본문

운영체제/Linux - CentOs

동적 IP 할당 서버(DHCP)

세레프 2023. 3. 27. 10:52

 서버 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 프로그램으로, 이러한 서비스를 제공받는 프로그램 클라이언트라고 한다. 쉽게 말하면, 서비스를 제공하는 프로그램이 설치되어 있는 운영체제 서버, 서비스를 제공받는 프로그램이 설치되어 있는 운영체제 클라이언트라고 한다.

  1. web: apache, IIS(windows에서만 사용)
  2. mail : sendmail, postfix, qmail
  3. name : BIND
  4. FTP: vsftpd, proftp, wu_ftp
  5. telnet: telnet
  6. SSH : ssh
  7. DB : MySQL, MariaDB
  8. etc : NFS, SAMBA ....

 위의 리스트는 서버 프로그램을 기능별로 구분한 것으로, 해당 프로그램을 개별적으로 운영체제에 다운로드해야 하며, 설치하면 클라이언트에게 해당 기능을 제공할 수 있다.

 

서버 관련 명령어들
yum -y install 프로그램 : 프로그램을 설치하는 명령어

systemctl [ start / stop / restart ] [데몬] : 프로그램을 실행, 정지, 재시작하는 명령어

systemctl 
[ enable / disable] [데몬] : 운영체제를 부팅할 때, 프로그램 활성화, 비활성화 하는 명령어

setenforce [ 0 / 1 ] : SELinux(linux의 자체적으로 가지고 있는 커널기반 방화벽)을 비활성화 / 활성화하는 명령어

 

 

DHCP

 DHCP동적 IP주소를 제공하는 서버, 프로토콜로, NAT를 통해 받은 사설IP주소를 기기가 사용할 수 있도록, 동적IP주소로 제공한다. 동적 IP주소란 기기가 받는 IP주소가 변하는 것으로, DHCP서버에서 범위에 있는 IP주소를 하나 가져오기 때문에, IP주소가 변화하여도 괜찮은 클라이언트가 동적 IP주소를 사용한다.

 

DHCP프로그램의 데몬, 환경설정파일

  • 데몬 : dhcpd
  • 환경설정 파일 : /etc/dhcp/dhcpd.conf

 

프로그램 설치

  • yum -y install dhcp* : DHCP 서버 프로그램을 설치하는 명령어

 클라이언트 프로그램은 기본적으로 설치되어 있다.

 

고정 IP로 변경

 서버는 IP주소가 변경이 되어서는 안된다. 만약 서버의 주소가 변경이 되면, 해당 서버의 IP주소를 다시 확인해야 하며, 그 주소에 따라 다른 서비스의 환경설정을 다시 설정해야 하는 경우가 생긴다. 게다가 서버에 여러 클라이언트가 접속, 요청을 해서 해당 서버를 이용하는데, 만약 서버의 주소가 변경될 경우, 여러 클라이언트가 해당 서버에 접근을 하지 못하게 된다.

 

 유동IP주소를 고정IP주소로 변경하기 위해서는 "/etc/sysconfig/network-scripts"에 있는 "ifcfg-ens33"파일을 수정해야 한다. 이때 "ifcfg-ens33"파일은 OS의 ens33(네트워크 장치) 환경설정 파일로, 네트워크에 대한 설정이 모여있는 파일이다.

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"							#"dhcp","static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="52447529-4625-413f-b41f-4af34c0c88d2"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.158.100"
NETMASK="255.255.255.0"
GATEWAY="192.168.158.2"
DNS1="8.8.8.8"

 

"BOOTPROTO"에서 "dhcp"는 부팅할때마다 DHCP서버에게 IP주소를 부여받는 동적 IP주소를 사용하겠다는 것이며, "static"은 IP주소를 고정해서 사용하겠다는 고정IP주소의 사용을 말한다. 따라서 "dhcp"대신 "static"을 작성하고 고정할 IP주소, NETMASK, GATEWAY, DNS를 추가해야 한다. 이때, IP주소를 정할 때, 네트워크 주소(앞의 3개)은 "subnet주소(네트워크 주소를 분할해서 표현한 것)"와 다르면 안된다

 

 

환경설정 파일 수정

  DHCP서버는 기기에게 IP주소를 할당하는 서비스이다. 그렇다면, DHCP서버에서 어떤 subnet주소로 어느 범위까지 동적 IP주소를 할당해야 하는지 결정해야 한다.

ddns-update-style interim;
subnet  192.168.158.0 netmask 255.255.255.0 {
         option routers 192.168.158.2;
         option subnet-mask 255.255.255.0;
         range dynamic-bootp 192.168.158.150 192.168.158.254;
 
         option domain-name-servers 8.8.8.8;			#DNS 주소
         default-lease-time 10000;				#대여 시간
         max-lease-time 20000;					#최대 대여시간
}

 

 

viual network editor DHCP 종료

 해당 운영체제를 DHCP서버로 만들고 해당 서버에서 IP주소를 할당받게 할 것이다. 그렇게 하기 위해서는 기존에 사용하던 DHCP서버는 종료를 해야 한다. 만약 기존의 DHCP서버를 종료하지 않는다면, 충돌이 일어나 정상적으로 운영되지 않는다.

 

 

방화벽 해제

"DHCP"로 클라이언트에게 IP주소를 부여하기 위해서는 클라이언트에서 DHCP서버로 접근하여 IP주소를 요청해야 하는데, 클라이언트에서 서버로 접근하기 위해선 서버 운영체제의 방화벽을 해제할 필요가 있는데, 만약 설정 되어있으면, 방화벽에 DHCP 포트가 설정되어 있지 않아서 해당 포트로 서버에 접근이 불가능하게 된다.

  • systemctl stop firewalld : 방화벽을 정지시키는 명령어
  • setenforce 0 : SELinux(linux의 자체적으로 가지고 있는 커널기반 방화벽)을 비활성화하는 명령어

 

DHCP 프로그램 실행

  • systemctl restart dhcpd : DHCP 서버 프로그램 재실행하는 명령어

 

 DHCP 프로그램을 실행하고 클라이언트의 네트워크를 다시 실행(systemctl restart network)하면, 클라이언트의 IP주소가 해당 범위에 있는 IP주소로 변경되는 것을 확인 할 수 있다.

DHCP 프로그램 실행 전 Client의 IP주소
DHCP 프로그램 실행 후 Client의 IP주소

 

 


PXE Server

 PXE Server란 ftp를 이용하여 OS의 설치를 자동화 할 수 있게 만들어 주는 기술을 담은 서버로, OS가 설치되지 않는 컴퓨터가 해당 서버에 접속해서 저장되어 있는 이미지 파일(iso)를 통해 OS를 자동적으로 설치하게 한다.

 

1. 사용하는 프로그램 설치

  • yum -y install syslinux : 부팅파일인 syslinux 프로그램 설치
  • yum -y install dhcpd* : DHCP 서버프로그램 설치, PXE Client의 IP 주소 자동 할당할 때 사용
  • yum -y install tftp* : TFTP(인증없이 사용가능한 FTP) 서버 프로그램 설치, 부트로더 (PXELINUX) 및 커널 파일 전송할 때 사용
  • yum -y install xinetd* : Superdaemon인 xinetd 프로그램 설치
  • yum -y install vsftpd* : vsftp서버 프로그램 설치, OS설치 프로그램 전송할 떄 사용

 

2. TFTP서버 환경설정 파일 수정

 TFTP서버는 부팅할 때, OS를 설치할 커널(vmliuz)과 커널이미지(initrd), 부트로더(pxelinux.0)를 클라이언트에게 넘겨줄 때 사용하기에 활성화 해야 한다.

service tftp
       {
               	socket_type		= dgram
              	protocol                = udp
             	wait                    = yes
             	user                    = root
             	server                  = /usr/sbin/in.tftpd		#데몬 파일
              	server_args             = -s /var/lib/tftpboot  	#데몬 홈디렉토리
            	disable                	= no				#서비스 사용 유무
              	per_source              = 11
              	cps                     = 100 2
             	flags                   = IPv4
      }

 

 

3. VSFTP 서버 설정 파일 수정

  CD/DVD ROM에 있는 Linux 이미지 파일을 부팅할 때 자동으로 사용하기 위해서는 VSFTP를 활성화 해야하며,  Anonymous FTP의 권한과 /var/ftp/pub의 권한을 활성화 해야 한다.

#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
# When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access
anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES

 위의 내용은 VSFTP서버 환경설정파일의 일부이며 "anon"이 있는 내용이 Anonymous FTP의 권한관련 내용이다.

 

 

4. VM settings CD/DVD ROM 연결상태 확인

 부팅할 때 해당 CD ROM에 있는 ISO파일을 사용하기 때문에, 클라이언트가 운영체제를 설치 하기 위해서 필요한 작업이다.

 

 

5. CD/DVD ROM 마운트/언마운트

 CD/DVD ROM에 있는 Linux 이미지 파일을 부팅할 때 자동으로 사용해야 하는데, 이때 FTP서버를 이용한다. 이때, FTP서버는 Anonymous FTP를 사용하며, "/var/ftp/pub"디렉토리에서 파일 전송, 공유가 일어난다. 그래서 CD/DVD ROM을 해당 디렉토리에 마운트 해야 한다.

 

  • umount /dev/sr0 : CD/DVD ROM를 언마운트하는 명령어
  • mount /dev/sr0 /var/ftp/pub : CD/DVD ROM를 "/var/ftp/pub"디렉토리에 마운트하는 명령어

 자동마운트 할 경우, /etc/fstab을 다음과 같이 추가한다.

/dev/sr0                /var/ftp/pub            auto    defaults        0 0

 

 

 6. 파일 복사

 부팅 할 때 필요한 커널, 커널 이미지 파일, 부트로더를 TFTP서버를 통해 다운로드하기 위해서는 TFTP의 홈디렉토리에 해당 파일을 복사해야 한다.

 

  • cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot : /var/ftp/pub/images/pxeboot에 있는 vmlinuz(커널)파일를 /var/lib/tftpboot에 복사 하는 명령어
  • cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot: /var/ftp/pub/images/pxeboot에 있는 initrd.img(커널 이미지) 파일를 /var/lib/tftpboot에 복사 하는 명령어
  • cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot : /usr/share/syslinux에 있는 pxelinux.0(부트로더)파일을 /var/lib/tftpboot에 복사하는 명령어
[root@localhost xinetd.d]# cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot 
[root@localhost xinetd.d]# cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot
[root@localhost xinetd.d]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
[root@localhost xinetd.d]# cd /var/lib/tftpboot
[root@localhost tftpboot]# ll
합계 60480
-rw-r--r--. 1 root root 55129656  3월 27 09:09 initrd.img
-rw-r--r--. 1 root root    26759  3월 27 09:09 pxelinux.0
-rwxr-xr-x. 1 root root  6769256  3월 27 09:08 vmlinuz

 

 

7. 부팅 관련 설정 파일 디렉터리,  파일 생성 / 수정

"/var/lib/tftpboot"에서 "pxelinux.cfg"디렉토리 생성 후 해당 디렉토리에 "default"파일을 생성하고 다음과 같은 내용을 추가한다.

[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vi default
DEFAULT CentOS7_Auto_Install

LABEL	CentOS7_Auto_Install
kernel  vmlinuz
APPEND  initrd=initrd.img repo=ftp://192.168.158.100/pub

 default 파일의 내용은 "커널과 커널이미지 파일을 실행한 뒤, 설치에 필요한 데이터를 FTP를 통해 다운로드한다"는 내용이다. 즉, 클라이언트가 부트가 되면, 커널과 커널이미지를 실행하고, FTP를 통해 pub디렉토리에 있는 Linux설치파일을 다운로드 한다.

 

 

8. DHCP서버 환경설정 파일 수정

 클라이언트가 부팅할 때, DHCP서버에 접근할 수 있도록 환경설정을 수정해야 한다.

ddns-update-style interim;
subnet  192.168.158.0 netmask 255.255.255.0 {
         option routers 192.168.158.2;
         option subnet-mask 255.255.255.0;
         range dynamic-bootp 192.168.158.150 192.168.158.254;
 
         option domain-name-servers 8.8.8.8;			#DNS 주소
         default-lease-time 10000;				#IP 대여 시간
         max-lease-time 20000;					#IP 최대 대여시간
         
        allow booting;
      	allow bootp;
        next-server 192.168.158.100;	#부팅할 때 접근할 IP주소
        filename "pxelinux.0";		#부팅할 때 가져갈 파일로, pxelinux.0파일은 부트로더 파일
}

 

9. kickstart 설치 후 파일 생성

kickstart는 운영체제를 설치할 때, 필요한 과정, 설치후의 설정을 자동화하는 시스템이다.

  • yum -y install system-config-kickstart system-config-keyboard : kickstart관련 시스템 설치 명령어

설치가 완료되고 "system-config-kickstart"를 명령하면 킥스타트 설정 프로그램 창이 나타나며, 다음과 같이 설정한다.

 그 후 "파일 → 저장"을 통해 "/var/ftp"디렉토리에 "CentOS.cfg"파일로 저장한다.

 

 

10. kickstart 설정 파일(/var/ftp/CentOS.cfg) 수정

 킥스타트 설정 프로그램을 통해 파티션, root 설정 등 설정은 했지만, 패키지 관련해서는 설정이 되어 있지 않다. 따라서 "CentOS.cfg"를 수정해서 패키지 관련 설정을 추가 해야 한다.

part / --asprimary --fstype="xfs" --grow --size=1

%packages
@base
@core
@directory-client
@fonts
@gnome-desktop
@input-methods
@internet-browser
@java-platform
@multimedia
@network-filesystem-client
@x11
%end

 위의 내용은 일부를 가져온 것이며, 파티션 설정에서 xfs파일시스템인 파티션에 "--asprimary"를 추가한다.

 

 

11. 부팅 관련 설정 파일 추가 수정

"/var/lib/tftpboot/pxelinux.cfg"디렉토리에 있는 "default"파일에 다음과 같은 내용을 추가한다.

DEFAULT CentOS7_Auto_Install

LABEL   CentOS7_Auto_Install
kernel  vmlinuz
APPEND  initrd=initrd.img repo=ftp://192.168.158.100/pub ks=ftp://192.168.158.100/CentOS.cfg

 

12. 서버 실행

  • systemctl restart dhcpd : DHCP 서버 프로그램을 재시작하는 명령어
  • systemctl restart xinetd :  Superdaemon 프로그램을 재시작하는 명령어
  • systemctl restart vsftpd : VSFTP 서버 프로그램을 재시작하는 명령어

 

위의 과정을 다하고 VMware에 새로운 Virual Machine을 만들면 다음과 같은 과정으로 OS가 설치가 된다. 이때, 설치할 때 쓰는 파일은 iso파일이 아닌 자동선택을 선택해야 한다.

  • 컴퓨터(서버)에 전원을 키면 PXE환경이 실행되어 DHCP서버를 찾고 DHCP로 IP를 할당 받은 후 TFTP로 부터 pxelinux.0 파일을 다운받아 실행
  • default에 설정에 따라 메뉴가 실행되고 설치 메뉴 선택시 실행할 내용(KERNEL, APPEND)에 따라 커널이미지 파일을 다운받아 실행
  • 운영체제 설치에 필요한 파일을 VSFTP경로(ftp://192.168.158.100/pub)로 다운 

 

'운영체제 > Linux - CentOs' 카테고리의 다른 글

WEB 서버(HTTP)  (0) 2023.04.03
도메인 네임 시스템(DNS)  (0) 2023.04.02
파일 전송 시스템(FTP)  (0) 2023.03.26
파일 공유 시스템(NFS, Samba)  (0) 2023.03.20
서버의 이해와 원격 접속 시스템(Telnet,SSH)  (0) 2023.03.19
Comments