DHCP (Dynamic Host Configuration Protocol)

  • BOOTP의 정적 주소할당의 문제점을 해결하고 동적 주소할당 방식을 지원하기 위해 개발 됐다.
    • Pool(IP주소 공용 구역)을 사용 한다. -> pool을 기반으로 Mapping Table을 동적으로 생성 한다.
    • UDP port 67(Server), UDP port 68(Client)

DHCP 주소 할당 방식

  • 정적 할당
    • BOOTP와 동일하게 한 장비에게 특정 IP주소를 미리 배당 한다.
    • Router,Server 등 고정된 IP주소를 사용하는 시스템
  • 동적 할당
    • 제한된 시간 동안 정보를 임대하는 방식 -> 임대 시간(Lease Time)
    • 자동화, 중앙 집중 관리,주소 재사용과 공유, 충돌 방지 등의 기능을 제공 한다.
  • 자동 할당
    • 제한 시간이 무한대로 지정되는 동적 할당
    • 정적 할당과 동일하지만 관리적 장점을 가진다.

Pool (Address Pool)

  • DHCP 서버가 할당 할 수 있는 주소의 집합
    • 동적 주소할당을 위해 사용하는 모든 주소의 목록
    • IP주소 외 클라이언트 동작에 필요한 기타 정보들도 같이 정의 된다.
  • 클라이언트의 수, 안정성 및 주소 사용 빈도수 등을 고려해야 한다.

주소 범위(Scope)

  • DHCP 서버에서 Pool에 구성된 IP주소 집합 중 실제 동적 할당에 사용될 수 있는 IP주소
  • 네트워크 장비 및 서버를 위한 IP주소(관리용 IP주소)를 동적 할당 범위에서 제외 한다.
    • 주소 범위를 설정할 때 1 ~ 19를 제외한 범위로 pool을 구성 한다.
  • DHCP 서버를 이중화 구성한 경우 pOOL의 IP주소를 다르게 설정해야 한다.

임대 시간

  • DHCP 서버에게 할당 받은 IP주소의 Life Time
  • 서버 S/W마다 기본값이 다르며 회사의 정책이나 네트워크 환경에 따라 구성해야 한다.

클라이언트의 임대 관리 주기

  • 주소 바인딩 -> renewal -> Rebinding -> 해제
  • 타이머를 통해 임대 상황에 맞는 단계를 진행 한다.

주소 바인딩

  • 시스템에서 DHCP 서버로 부터 획득한 IP주소(정보)를 실제로 사용하는 단계

갱신(renewal)

  • 할당 받은 서버에게 임대시간 연장을 요청하는 단계
  • 임대 시간의 50% -> Renewal Timer (T1)
  • 갱신이 완료되면 임대 시간을 재 할당 받는다.

리 바인딩(rebinding)

  • 갱신 단계가 실패한 경우 모든 DHCP 서버에게 IP주소 재할당을 요청하는 단계
  • 임대 기간의 87.5$ -> Rebinding Timer(T2)
  • Rebinding이 완료되면 임대 시간을 재 할당 받는다.

해제

  • 할당 받은 정보의 임대기간이 종료된 단계
  • rebinding 실패, client의 강제 release

DHCP 메시지 (DORA)

  • Client와 Server는 지정된 의미의 메시지를 주고 받아서 DHCP 동작을 진행한다.
  • 종류 -> discover, offer, request, decline, ack, nak, release, inform, forcerenew
  • 초기 IP 할당 과정에서 사용되는 메시지

DHCP1

DHCP 메시지 종류

DISCOVER (Client) 서버를 찾는 Broadcast 메시지
OFFER (서버) Client에게 동적 할당 할 IP주소를 제안하는 메시지
REQUEST (Client) 선택된 서버를 알리는 메시지
DECLINE (Client) IP주소 충돌이 확인되면 할당과정을 취소하기 위해 전달되는 메시지
ACK (Server) IP주소 할당과정의 정상적인 종료를 알리는 메시지
NAK (Server) IP주소 충돌 감지 등의 이유로 할당과정을 취소하기 위해 전달하는 메시지
RELEASE (Client) 할당된 IP주소 해제 요청
INFORM (Client) 현재 binding 된 정보 이외의 추가 정보를 요청하는 메시지
FORCERENEW (Server) binding Client의 정보를 삭제하고 재 요청을 하게 만드는 메시지

DHCP 기본 동작 관정

DHCP2

1. Client에서 DISCOVER 메시지 생성 후 전달

  • XID(식별자), Client MAC Address를 설정 한다.
  • (선택) 이전에 할당 받은 IP주소를 재 요청 -> (Option 50) Requested IP Address
  • (선택) 특정 임대 시간 요청 -> (Option 51) IP Address Lease Time
  • (선택) 할당 받기를 원하는 추가 정보 목록 전달 -> (Option 55) Parameter Request List
  • 생성된 Discover 메시지를 Broadcast로 전달 후 서버의 응답을 기다린다.

2. (선택) Server에서 제안할 IP주소 충돌 확인

  • ICMP echo 메시지를 이용하여 충돌여부 확인
    • ICMP echo Request
      • Source IP = Server
      • Destination IP = 제안할 IP
    • 응답이 없음 -> 충돌 없음
    • 응답이 있음 -> 충돌 있음

3.(선택) Server에서 제안할 IP주소를 예약

  • IP주소 할당 과정이 종료될 때까지 제안한 IP주소를 예약
  • 다른 Client의 요청에 같은 IP주소를 제안하지 않는다.

4.Server에서 OFFER 메시지 생성 후 전달

  • XID, Your IP Address(제안할 IP주소), Client MAC Address, Leased Time(Option 51), Server Identifier(Option 54), 요청 목록의 추가 정보, 서버에서 지정된 추가 정보를 설정 해야 한다.
  • Your IP Address 선택 순서
    • 이전에 할달된 IP 주소 -> 정적 할당, 자동 할당, Mapping Table 정보
    • Discover메시지에서 요구한 Requested IP Address
    • Pool에서 할당 가능한 IP주소 중 작은 IP주소부터 순차적으로 선택
  • 클라이언트가 지시한 대로 Unicast 또는 Broadcast로 전달

5. Client에서 OFFER 메시지 처리

  • 여러 개의 Offer 메시지가 도착한 경우 그 중 하나를 선택한다.
  • 클라이언트의 설정에 따라 처리 방식이 다르다.
    • 먼저 도착한 응답을 기준
    • 조건(Leased Time)을 기준으로 선택
  • Offer 메시지를 전달받지 못한 경우 -> Discover 메시지를 재 전달 한다.

6. Client에서 REQUEST 메시지 생성 후 전달

  • XID,Client MAC Address, Requested IP Address(Option 50), Server Identifier(Option 54), Parameter Request List(Option 55)
  • 선택한 서버 정보를 메시지에 담아서 전달
  • 모든 서버가 전달받아야 하므로 broadcast로 전달 한다.

7. Server에서 REQUEST메시지 처리

  • 선택되지 못한 Server
    • IP 할당과정 중지
    • 할당된 IP를 임시 대기 -> Client에서 선택한 다른 Server와의 IP할당과정이 취소되면 Client는 2번쨰 서버로 다시 Request 전달
  • 선택된 Server
    • ACK(긍정 승인 또는 NAK(부정 승인) 생성

8. Server에서 ACK 또는 NAK 메시지 생성 후 전달

  • XID, Your IP Address, Client MAC Address, Leased Time(Option 51), Server Identifier(Option 54), 요청 목록의 추가 정보, 서버에서 지저오딘 추가 정보를 설정 한다.
  • ACK
    • Client가 선택한 IP주소에 문제가 없으면 사용 승인
    • 서버 Mapping Table에 기록
  • NAK
    • IP주소 충돌 등의 문제 떄문에 IP주소에 문제가 확인되면 할당 과정 취소

9.Client에서 ACK 또는 NAK 메시지 처리

  • ACK
    • Client가 최종적으로 IP 충돌을 확인
  • NAK
    • IP 할당 과정을 취소하고 discover 메시지를 재 전달
  • 응답을 못 받음
    • Request 메시지를 재전달
    • Request 메시지를 재 전달한 후에도 응답이 없으면 discover 메시지를 재 전달

10. Client에서 IP 충돌 확인

  • ARP를 이용하여 충돌 여부 확인
    • ARP Request Broadcast 전달
      • Sender MAC = 0
      • Sender IP = 제안 받은 IP
      • Target MAC = 0
      • Target IP = 제안 받은 IP
  • 응답 있음 -> 충돌 있음
    • Server에게 Decline(Option 54-4) 메시지 전달 하여 IP주소 충돌을 알림
    • 새로운 IP주소를 할당 받기 위해 Discover 메시지 재 전달
  • 응답 없음 -> 충돌 없음
    • 할당 받은 정보를 시스템에 Binding 한다.

DHCP 대체 IP 주소

  • DHCP에 의한 IP 할당이 실패한 경우 클라이언트에서 지정된 IP주소를 자동으로 구성 한다.
  • IP주소 할당이 실패한 경우에도 내부 통신을 지원하기 위해 사용된다.
  • 표준에서 제안하고 있으나 상세 동작 방식이 지정되지 않는다.
  • Microsoft에서 제안한 방식이 산업표준이 됐다.
  • 표준 대체 IP 주소 대역
    • 169.254.0.0/16 -> 169.254.0.1 ~ 169.254.255.254

APIPA (Auto Private IP Assigned)

  • MS에서 구현한 자동 사설 IP 주소 지정 방식
  • OS에 지정된 네트워크 대역 중에서 하나의 IP주소를 선택 한다.
  • ARP Request를 이용하여 해당 IP주소가 사용중인 확인 한다.
  • ARP Reply가 없으면 선택한 IP주소를 Client에 Binding하여 내부 통신을 지원한다.
  • 주기적으로 DHCP Discover 메시지를 전달하여 IP주소 할당을 시도한다.