18.2. DHCP 서버 설정

/etc/dhcpd.conf 설정 파일을 사용하여 DHCP 서버를 설정하실 수 있습니다.

DHCP는 또한 /var/lib/dhcp/dhcpd.leases 파일을 사용하여 클라이언트 할당(lease) 데이터베이스를 저장합니다. 보다 많은 정보를 원하시면 18.2.2 절을 참조하시기 바랍니다.

18.2.1. 설정 파일

DHCP 서버를 설정하기 위한 첫번째 단계는 클라이언트에 대한 네트워크 정보를 저장하는 설정 파일을 생성하는 것입니다. 모든 클라이언트에 적용되는 전체 옵션을 지정하시거나 또는 개별 클라이언트 시스템에 대한 옵션을 따로 지정하실 수 있습니다.

설정 파일에는 여분의 탭이나 빈 줄을 포함되어 보다 쉽게 읽을 수 있도록 해줍니다. 키워드는 대/소문자 구별이 있으며 우물정자 표시 (#)로 시작하는 줄은 주석으로 취급됩니다.

현재 두가지 DNS 업데이트 스키마 — ad-hoc DNS 업데이트 모드와 interim DHCP-DNS 상호 작용 드래프트 업데이트 모드가 실행되고 있습니다. 이 두가지 업데이트 스키마가 IETF에서 인터넷 표준 인증을 받게된다면, 제 3의 모드 — 표준 DNS 업데이트 방식이 생겨날 것입니다. DNS 서버가 현재 사용되고 있는 두가지 DNS 업데이트 스키마 중 한가지를 사용하도록 설정해 주십시오. 0b2pl11 버전과 이전 버전은 ad-hoc 모드를 사용합니다; 하지만 이 모드는 자주 사용되지 않고 있습니다. 이 모드를 계속 사용하시려면 설정 파일의 처음 부분에 다음과 같은 줄을 추가해 주십시오:

ddns-update-style ad-hoc;

추천된 모드를 사용하시려면, 설정 파일 처음 부분에 다음과 같은 줄을 추가해 주십시오:

ddns-update-style interim;

두가지 모드에 대한 자세한 정보를 원하신다면 dhcpd.conf 메뉴얼 페이지를 읽어보시기 바랍니다.

설정 파일에는 다음과 같은 두가지 유형의 문장 (statememt)이 사용됩니다:

option 키워드로 시작하는 일부 매개 변수는 옵션을 나타냅니다. 옵션은 DHCP 옵션을 설정합니다; 반면에 매개 변수는 옵션이 아닌 값을 설정하거나 DHCP 서버가 자동하는 방식을 제어합니다.

중 괄호 ({ }) 내에 포함된 부분 이전에 선언된 (옵션을 포함한) 매개 변수는 전역 매개 변수 (global parameter)로 취급됩니다. 전역 매개 변수는 자신 이하에 위치한 모든 부분에 적용됩니다.

중요중요
 

만일 설정 파일을 변경하시면, service dhcpd restart 명령을 사용하여 DHCP 데몬을 재시작하셔야 변경 사항이 효력을 발생합니다.

예 18-1을 보시면, routers, subnet-mask, domain-name, domain-name-servers, time-offset 옵션은 전역 매개 변수로서 그 옵션 아래에 선언된 모든 host 문장에 사용됩니다.

예 18-1에서 보여지듯이 여러분은 subnet을 선언하실 수 있습니다. 네트워크의 모든 서브넷에 대한 subnet 선언을 포함시켜야 합니다.

다음의 예시에서는 서브넷 내의 모든 DHCP 클라이언트에 대한 전역 옵션과 range (범위)가 지정되었습니다. 클라이언트는 range 범위 내에서 IP 주소를 할당 받습니다.

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name              "example.com";
        option domain-name-servers       192.168.1.1;

        option time-offset              -18000;     # Eastern Standard Time

	range 192.168.1.10 192.168.1.100;
}

예 18-1. subnet 선언

동일한 물리적 네트워크를 공유하는 모든 서브넷은 예 18-2에서 보여지듯이 공유-네트워크 선언 (shared-network declaration)에서 선언되어야 합니다. shared-network에 포함되지만 괄호로 묶인 subnet의 밖에 위치한 매개 변수는 전역 매개 변수로 취급됩니다. shared-network의 이름은 네트워크의 용도를 설명할 수 있는 이름을 사용하셔야 합니다. 예로 들면 테스트 랩 (test lab) 환경의 모든 서브넷을 설명하는 test-lab과 같은 이름을 사용하실 수 있습니다.

shared-network name {
    option domain-name              "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.1.254;
    more parameters for EXAMPLE shared-network
    subnet 192.168.1.0 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.1 192.168.1.31;
    }
    subnet 192.168.1.32 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.33 192.168.1.63;
    }
}

예 18-2. share-network (공유-네트워크) 선언

예 18-3에서 보여지듯이 선언 그룹에 전역 매개 변수를 적용하기 위하여 group 선언을 사용하실 수 있습니다. 공유 네트워크, 서브넷, 호스트나 다른 그룹들을 하나의 그룹으로 모을 수 있습니다.

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;

   option domain-name              "example.com";
   option domain-name-servers       192.168.1.1;

   option time-offset              -18000;     # Eastern Standard Time

   host apex {
      option host-name "apex.example.com";
      hardware ethernet 00:A0:78:8E:9E:AA;
      fixed-address 192.168.1.4;
   }

   host raleigh {
      option host-name "raleigh.example.com";
      hardware ethernet 00:A1:DD:74:C3:F2;
      fixed-address 192.168.1.6;
   }
}

예 18-3. group 선언

서브넷 내의 시스템에 동적 IP 주소를 할당해주는 DHCP 서버를 설정하시려면 예 18-4을 여러분의 시스템에 맞는 값으로 바꾸어 사용해 주십시오. 위의 예시는 클라이언트에 대한 기본 할당 시간 (default lease time), 최대 할당 시간 (maximum lease time)과 네트워크 설정 값을 선언합니다. 아래 예시에서는 192.168.1.10 에서 192.168.1.100 범위 (range) 사이의 IP 주소를 클라이언트 시스템에 할당합니다.

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "example.com";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}

예 18-4. Range 매개 변수

네트워크 인터페이스 카드의 MAC 주소에 기반한 클라이언트에게 IP 주소를 할당하기 위해서는, host 선언 내에서 hardware ethernet 매개 변수를 사용하셔야 합니다. 예 18-5에서 보여지듯이 host apex 선언은 MAC 주소 00:A0:78:8E:9E:AA를 가진 네트워크 인터페이스 카드에는 언제나 IP 주소 192.168.1.4 를 할당하도록 지정하고 있습니다.

클라이언트에 호스트명을 할당하기 위하여 옵션 매개 변수인 host-name도 사용 가능하다는 점을 기억해 주십시오.

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA;
   fixed-address 192.168.1.4;
}

예 18-5. DHCP를 사용하는 정적 IP 주소

작은보힌트
 

처음에는 Red Hat Linux 9의 샘플 설정 파일을 사용하신 후 나중에 그 샘플 설정 파일에 여러분이 스스로 사용자 설정하신 옵션을 추가하실 수 있습니다. 다음 명령을 사용하여 사용자 설정하신 옵션을 파일의 적절한 위치로 복사합니다.
cp /usr/share/doc/dhcp-<version-number>/dhcpd.conf.sample /etc/dhcpd.conf
(여기서 <version-number>는 여러분이 사용하시는 DHCP 버전을 의미합니다)

전체 옵션 구문과 기능에 대한 목록을 보시려면, dhcp-options 메뉴얼 페이지를 참조하시기 바랍니다.

18.2.2. 할당 (Lease) 데이터베이스

DHCP 서버에서 /var/lib/dhcp/dhcpd.leases 파일은 DHCP 클라이언트 할당 데이터베이스를 저장하고 있습니다. 이 파일을 직접 수정하시면 안됩니다. 최근에 할당된 개별 IP 주소에 대한 DHCP 할당 정보는 자동적으로 할당 데이터베이스에 저장됩니다. 이 정보에는 할당 기간, IP 주소가 부여된 클라이언트, 할당이 시작되고 끝나는 날짜 그리고 할당받기 위하여 사용된 네트워크 인터페이스 카드의 MAC 주소가 포함되어 있습니다.

할당 데이터베이스에서 사용된 시간은 모두 그리니치 표준시 (GMT)이며, 지역 시간은 사용되지 않습니다.

할당 데이터베이스는 크기가 너무 커지지 않도록 계속적으로 재생성됩니다. 우선, 모든 알려진 할당 정보를 임시 할당 데이터베이스에 저장한 후 dhcpd.leases 파일을 dhcpd.leases~로 이름을 변경하고 임시 할당 데이터베이스를 dhcpd.leases 파일에 기록합니다.

할당 데이터베이스를 백업 파일로 이름 변경 후 새로운 파일이 기록되기 전에 DHCP 데몬이 죽거나 시스템이 파손되는 경우가 발생할 수 있습니다. 이러한 경우에는 서비스를 시작하는데 필요한 dhcpd.leases 파일이 존재하지 않습니다. 만일 이러한 상황이 발생하면 새로운 할당 파일을 생성하지 마십시오. 새로운 할당 파일을 생성하시면 이전 할당 정보가 삭제되어 많은 문제가 발생합니다. dhcpd.leases~ 백업 파일을 dhcpd.leases로 이름을 변경한 후 데몬을 시작하시는 것이 올바른 해결책입니다.

18.2.3. 서버 시작과 중지

중요중요
 

dhcpd.leases 파일이 없이 DHCP 서버를 처음 시작하신다면, 서버가 실패할 것입니다. 만일 이 파일이 없다면 touch /var/lib/dhcp/dhcpd.leases 명령을 사용하여 파일을 생성하시기 바랍니다.

/sbin/service dhcpd start 명령을 사용하여 DHCP 장치를 시작하십시오. DHCP 서버를 멈추시려면 /sbin/service dhcpd stop 명령을 사용합니다. 시스템 부팅 시 데몬이 자동으로 시작되도록 설정하시려면, 서비스를 관리하는 방법에 대한 정보를 14 장에서 참조하시기 바랍니다.

시스템 상에 한 개 이상의 네트워크 인터페이스가 연결되어 있는 경우, 오직 한 인터페이스 상에서만 DHCP 서버가 시작하도록 설정하는 것이 가능합니다. /etc/sysconfig/dhcpd 파일에서 해당 인터페이스의 이름을 DHCPDARGS 목록에 추가하십시오:

# Command line options here
DHCPDARGS=eth0

두개의 네트워크 카드를 가진 방화벽 컴퓨터를 가지고 계신 경우 특히 이 옵션이 유용합니다. 한개의 네트워크 카드는 인터넷 IP 주소를 검색하도록 DHCP 클라이언트로 설정 가능하며 다른 네트워크 카드는 방화벽 뒤에서 내부 네트워크 용 DHCP 서버로 사용하실 수 있습니다. 내부 네트워크에 연결된 네트워크 카드만을 지정함으로서 다른 사용자가 인터넷을 통하여 데몬에 접속하지 못하게 되므로 시스템 보안이 더욱 강화됩니다.

/etc/sysconfig/dhcpd 파일에서 다음과 같은 다른 명령 행 옵션도 지정 가능합니다:

18.2.4. DHCP 릴레이 에이전트 (Relay Agent)

DHCP 릴레이 에이전트 (dhcrelay)는 DHCP 서버가 없는 서브넷으로부터 다른 서브넷의 한 개 이상의 DCHP 서버로 DHCP와 BOOTP 요청을 중계 (relay)해줍니다.

DHCP 클라이언트가 정보를 요청하는 경우, DHCP 릴레이 에이전트는 그 요청을 DHCP 릴레이 에이전트가 시작될 때 지정된 DHCP 서버 목록으로 전송합니다. DHCP 서버가 응답을 보내오면, 원래 요청을 보낸 네트워크 상에서 그 응답을 브로드캐스트 (broadcast)하거나 유니캐스트 (unicast)합니다.

DHCP 릴레이 에이전트는 모든 인터페이스에서 DHCP 요청을 청취하지만 /etc/sysconfig/dhcrelay 파일에서 INTERFACES 지시문을 사용하여 인터페이스가 지정된 경우에는, 그 지정된 인터페이스만 청취합니다.

DHCP 릴레이 에이전트를 시작하시려면, service dhcrelay start 명령을 사용하십시오.