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 할당 과정에서 사용되는 메시지
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 기본 동작 관정
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
- 응답이 없음 -> 충돌 없음
- 응답이 있음 -> 충돌 있음
- ICMP echo Request
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
- ARP Request Broadcast 전달
- 응답 있음 -> 충돌 있음
- 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주소 할당을 시도한다.