목차

DHCP 서버 구성

이강우 2017/01/13 13:06

필요 패키지 설치

RHEL / CentOS 7

[root@pxe ~]# yum install dhcp dhcp-common

RHEL / CentOS 8

[root@pxe ~]# yum install dhcp-common dhcp-server dhcp-client

Debian / Ubuntu

[root@pxe ~]# yum install dhcp dhcp-common

dhcpd.conf 설정

PXE 부팅을 위한 설정

/etc/dhcp/dhcpd.conf


# dhcpd.conf
#

allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;

option domain-name-servers 8.8.8.8, 168.126.63.1;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

subnet 192.168.222.0 netmask 255.255.255.0 {
  range dynamic-bootp 192.168.222.101 192.168.222.200;
  next-server 192.168.222.254;
  filename "pxelinux.0";
}

dhcpd.conf 전체 설정 예제 설명

ddns-update-style none ;
// DDNS 설정시 DHCP의 실행 방법 명시
// ad-hoc : DHCP의 Failover를 사용 하지 않고 DDNS을 실행
// DHCP 2.x의 경우 ad-hoc 옵션을 명시 하여 DDNS을 설정
// 
// interim : DHCP의 Failover를 포함한 모든 기능을 사용 하여 DDNS을 실행
// DHCP 3.x의 경우 interim 옵션을 명시 하여 DDNS을 설정
// 
// none : DHCP를 DNS와 함께 사용 하지 않고 Only DHCP 만을 실행

default-lease-time 10800 ; //DHCP의 IP 주소 대여 기본 시간
max-lease-time 32400 ; //DHCP의 IP 주소 대여 최대 시간
authoritative ;
// IP 대여 시 정상적인 DHCP Server에서 대여 받은 IP 주소 인지를 확인할 수 있도록
// DHCP Server의 DHCPNAK Message를 전송

log-facility local7 ;
//syslogd를 이용하여 log 기록 (Man Page 참고)

shared-network "NDOCS-NET" {
        // shared-network 옵션은 DHCP에서 하나 이상의 다른 Subnet을 사용 하는 IP 주소를 할당할
        // 경우 단일의 물리적인 Interface[NIC]에서 하나 이상의 Subnet를 사용할 수 있도록 공유 영역을
        // 정의 하는 옵션 :: 현재의 shared-network "NDOCS-NET" { 설정은 DHCP에서 하나 이상의
        // 다른 Subnet을 사용할 수 있도록 “NDOCS-NET” 이름의 공유 영역을 명시한 설정으로
        // shared-network [“공유 영역 이름”]과 같이 설정
        // DHCP의 실행 환경 설정 시 { 로 시작 하여 }로 종료 되어야 함
        
        dhcpd_interface = "hme0" ;
        // DHCP에서 사용할 NIC를 명시 하는 옵션 :: 현재의
        // dhcpd_interface = "hme0" ; 설정은 DHCP에서 사용할 NIC가 hme0 이름의 NIC라는
        // 것을 명시한 설정으로 dhcpd_interface = [ NIC ]와 같이 설정
        // DHCP에서 사용할 NIC가 하나일 경우 생략 하여도 됨
        
        subnet 58.72.95.128 netmask 255.255.255.128 {
            range 58.72.95.210 58.72.95.220 ;
            option domain-name "ndocs.com" ;
            option domain-name-servers 58.92.95.222 ;
            option routers 58.72.95.129 ;
        option broadcast-address 58.72.95.255 ; }
        
        subnet 61.40.66.64 netmask 255.255.255.192 {
            range dynamic-bootp 61.40.66.77 61.40.66.87 ;
            option domain-name-servers ns.ndocs.com ;
            option routers 61.40.66.100 ;
        option broadcast-address 61.40.66.127 ; }
        // DHCP에서 61.40.65.64 / 255.255.255.192 Subnet의
        // 61.40.65.77 ~ 87 IP 주소를 BOOTP 프로토콜로 대여 하도록 명시한 설정
        // DHCP에서 BOOTP를 사용할 경우 DHCP를 설치한 시스템의 inetd에서 bootp를
        // 사용 하도록 활성화
        
        subnet 192.168.102.0 netmask 255.255.255.0 {
            range dynamic-bootp 192.168.102.2 192.168.102.100 ;
            option domain-name-servers 203.248.252.2 ;
            option routers 192.168.102.254 ;
        option broadcast-address 192.168.102.255 ; }
        // DHCP에서 192.168.102.0 / 255.255.255.0 Subnet의 192.168.102.2~ 100
        // IP 주소를 BOOTP 프로토콜로 대여 하도록 명시한 설정
        
        subnet 203.248.252.0 netmask 255.255.255.128 {
            range 203.248.252.10 203.248.252.120 ;
            option domain-name-servers 203.248.252.70 ;
            option routers 203.248.252.100 ;
            option broadcast-address 203.248.252.127 ;
            default-lease-time 600 ;
        max-lease-time 7200 ; }
        // DHCP에서 203.248.252.0 / 255.255.255.128 Subnet의
        // 203.248.252.10 ~ 120 IP 주소를 대여 하도록 명시한 설정
        
        class "foo" {
        match if substring (option vendor-class-identifier, 0, 4) = "SUNW"; }
        subnet 10.17.224.0 netmask 255.255.255.0 {
        option routers gw.ndocs.com ; }
        subnet 10.0.29.0 netmask 255.255.255.0 {
        option routers gw1.ndocs.com ; }
        pool {
            allow members of "foo" ;
        range 10.17.224.10 10.17.224.250 ; }
        pool {
            deny members of "foo";
        range 10.0.29.10 10.0.29.230 ; }
        // DHCP에서 “SUNW” 문자열을 포함 하는 Hardware의 DHCP
        // 클라이언트 시스템의 IP 주소를 10.12.224.10 ~ 250 IP 주소를 사용 하는 “foo” Class로 사용
        // 하도록 “SUNW” 문자열을 포함 하지 않는 DHCP 클라이언트 시스템의 IP 주소를
        // 10.0.25.10 ~ 230 IP 주소를 사용 하도록 명시한 설정
        
        // class 옵션은 DHCP에서 IP 주소를 대여받는 DHCP 클라이언트의 Class와 조건을 명시하는 옵션
        // 현재의 class "foo" { match if substring (option vendor-class-identifier, 0, 4) = "SUNW"; }
        // 설정은 DHCP에서 “SUNW” 문자열이 포함 된 Hardware의 DHCP 클라이언트 시스템을 “foo”
        // Class로 정의 하도록 명시한 설정으로
        // class "[Class]" {match if substring (option vendor-class-identifier,[문자수])="[문자열]";}과
        // 같이 설정
        
        // pool 옵션은 class에서 정의한 조건의 실행 값을 명시 하는 옵션 ::
        // pool { allow members of "foo" ; range 10.17.224.10 10.17.224.250 ; } 설정은 앞서 Class로
        // 정의한 foo class에서 정의한 조건과 부합 될 경우 DHCP 클라이언트의 IP 주소를
        // 10.17.224.10 ~ 250 IP 주소로 할당 하도록 명시한 설정으로
        // pool { allow members of "[Class]" ; range [IP 대역 주소] ; }와 같이 설정
        
        // pool { deny members of "foo" ; range 10.0.29.10 10.0.29.230 ; } 설정은 앞서 Class로
        // 정의한 foo class에서 정의한 조건과 부합 되지 DHCP 클라이언트의 IP 주소를 10.0.29.10 ~
        // 230 IP 주소로 할당 하도록 명시한 설정으로 pool { deny members of "[Class]" ; range [IP
        // 대여 주소] ; }와 같이 설정
        // DHCP Server에서 Class를 정의할 경우 DHCP Client 또한 현재 DHCP Server를 구성한
        // ISC-DHCP를 사용 하여야 한다. 만약 DHCP Client의 DHCP Agent를 ISC-DHCP의 DHCP
        // Agent가 아닌 다른 DHCP Agent를 사용할 경우 DHCP Server에서 Class가 정의 되지 않는다 .
        
        group “one” {
            subnet 192.168.1.0 netmask 255.255.255.0 {
                range 192.168.1.110 192.168.1.250 ;
                option routers 192.168.1.254 ;
                option subnet-mask 255.255.255.0 ;
                option domain-name "blanco.net" ;
                option domain-name-servers 192.168.1.1 ;
            option broadcast-address 192.168.1.255 ; }
        }
        // group 옵션은 DHCP에서 IP 주소를 대여 받는 DHCP 클라이언트의 그룹 명시 하는 옵션 ::
        // 현재의 group "one" { subnet , netmask, range, option routers, option subnet-mask, .. }
        // 설정은 DHCP에서 IP 주소를 대여 받는 DHCP 클라이언트 중 192.168.1.110 ~ 250 IP 주소를
        // 사용 하는 DHCP 클라이언트를 “one” 이름의 그룹으로 사용 한다는 것을 명시한 설정으로
        // group "[그룹명]" { subnet , netmask, range, option routers, .. }과 같이 설정
        
        host windowsxp { <-- 클라이언트의 이름을 명시
            hardware ethernet 00:07:e9:06:85:07 ;
            fixed-address 192.168.102.50 ;
        option host-name "windowsxp.ndocs.com" ; }
        
        host linuxboot {
            hardware ethernet 0:0:c0:5d:bd:95 ;
            server-name "linux.ndocs.com" ;
            filename "/tmp/vmunix.boot" ;
        }
    }
    // BOOTP를 사용 하여 /tmp 디렉터리에 존재 하는 vmunix.boot Kernel로
    // Booting 하도록 명시 하도록 설정
    
    // DHCP의 BOOTP를 사용 하여 DHCP의 클라이언트를
    // Booing 하고자 한다면 Disk 없는 시스템에서 Booting 가능한 Kernel과 BOOTP를 사용할 수
    // 있도록 tftp Daemon이 활성화 되어야 함
    
} //설정종료