일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tcp drdos
- 해쉬 dos
- slow http
- udp drdos
- DHCP
- ruddy
- slow http dos
- tcp syn flooding
- 해시 dos
- drdos와 ddos 차이
- OFFSET
- zerowindow
- 헐크 dos
- snmp drdos
- dns drdos
- http get flooding
- slow http read dos
- icmpp drdos
- 네트워크 대역폭 소진
- backlog queue
- slowloris
- slow dos
- from sql injection
- slow http post dos
- 반사 서버
- hash dos
- hulk dos
- ntp drdos
- drdos 대응
- 핑오브데스
- Today
- Total
Tech Juny
DHCP 란? 본문
DHCP
01. DHCP [ Dynamic Host Configuration Protocol ]
IP 주소는 사용자가 수동으로 넣는 정적 IP 방식과 자동으로 할당 받아 쓰는 동적 IP 할당이 있다.
사람이 수동으로 설정 하기 때문에 IP 할당 및 해지 하는 과정에서 실수가 일어날 수 있기 때문이다
IP가 중복되어 A 호스트, B호스트가 동일한 IP를 설정하게 되면 IP 충돌로 인해 통신을 할 수 없다.
또는 호스트가 많은 네트워크에서는 관리자가 몇 천명의 사용자들의 IP를 일일이 수동으로 설정하기에는 무리가있다.
이처럼 관리하는 IP의 개수가 적으면 수동으로 관리하면 되지만,
관리 IP 범위가 클 경우에는 사람이 수동으로 설정 하는데에 한계가 있다.
이러한 동적 IP 할당을 해주는 프로토콜이 DHCP 이다.
처음에는 수동으로 IP를 할당해 주었지만, 시간이 지나 BOOTP라는 프로토콜로 IP를 자동으로 할당해 주었다.
하지만 BOOTP는 완벽한 동적 매커니즘이 아니라 서버에 미리 MAC주소와 IP를 Table 형식으로 저장해 두고
클라이언트가 IP를 요구할때 MAC 주소를 참고하여 Table에 정의된 IP를 찾아 할당해 주는 방식이다.
BOOTP는 관리자가 사전에 일일이 IP와 MAC 주소 테이블을 작성해야된다는 단점이 있었다.
그래서 완전한 동적인 DHCP가 탄생하게 되었고 DHCP는 매커니즘은 비슷하지만 BOOTP의 확장 버전인 것이다.
DHCP는 서버 내의 Lease Table에 할당한 IP들의 정보를 보유하고 새로운 IP 할당을 요청하는 호스트들에게 할당
해줄 때 Lease Table을 참고하여 사용하지 않는 IP 주소를 자동으로 할당해 준다.
때문에 관리자는 네트워크 내의 IP 동적 할당 및 해지와 같은 중앙관리를 하기 편리해 졌고
DHCP는 DHCP 서버에 정의한 IP, Subnet, DNS, Routing 정보 등을 호스트들에게 동적으로 할당해 줄수 있다.
- DHCP 장점
- Host 별 IP 수동 설정 필요 없음
-
DHCP Server의 Lease Table에 의해 관리 되어 IP 충돌 방지
-
Host의 사용 여부에 따라 동적 할당되어 IP 절약 가능
-
중앙관리로 네트워크 관리 및 구성 변경이 쉬움
- DHCP 단점
-
기본적으로 Broadcast 패킷 기반이라 단말이 많아지면 네트워크 부하 발생
-
파일서버, 프린터 등등 IP 변경이 안되야 되는 호스트한테는 적합하지 않음
-
NAT, 포트 포워딩 등을 사용하여 특정 서비스를 사용하는 호스트는 적합하지 않음
-
DHCP 서버 장애 시 전체 단말 통신 불가
-
DHCP 주요 메시지는 다음과 같다
메시지 | 패킷의 출발지 | 설명 |
Discover | Client | DHCP Server 탐색 및 IP 할당 요청 |
Offer | Server | 할당 가능한 IP 및 네트워크 정보 전달 |
Requuest | Client | 요청 받은 IP 및 네트워크 정보 요청 |
Ack | Server | Client 요청 수락 |
Nak | Server | Client 요청 거부 |
Release | Client | IP 임대 해지 |
Infom | Client | IP 이외의 정보 요청 |
Decline | Client | 현재 IP가 사용중임을 알려주는 메시지 |
02. DHCP Lease [ DHCP IP 할당 ]
Server가 Client에게 IP를 할당 해주는 과정이다.
Discover, Offer, Request, Ack 4단계로 구성되어 있다.
사용되는 포트로는 Client Port : UDP 68 / Sever Port : UDP 67을 사용한다.
Discover와 Request는 Broadcast 동작을 하며, Offer와 Ack는 Broadcast와 Unicast 상황에 따라 선택하여 동작한다.
임대 기간이 끝나면 다시 IP 반환하는 과정을 거친다.
다음은 DHCP Lease 과정의 Discover, Offer, Request, Ack 4단계를 Wireshark로 캡처한 사진이다.
03. DHCP Discover 과정
Discover 동작은 Client가 IP 할당을 받기 위해 DHCP Server를 찾는 패킷이다.
동일 LAN 상에 DHCP Server를 찾기 위해 목적지는 Broadcast로 전달한다.
Server로 부터 Subnet mask, Route 정보, DNS 등등.. 요청하는 정보가 패킷에 포함하여 전달 한다.
Broadcast 통신으로 다른 호스트들도 패킷을 받지만 67번 포트로 통신하는 DHCP Server만 응답을 주게 되고
다른 호스트들은 Discover 패킷을 무시하게 된다.
Discover 패킷의 구조는 다음과 같다.
- Src & Dst [MAC, IP, Port]
- Transaction ID : 해당 패킷에 대한 응답 패킷들은 동일한 ID로 전송
- Flags : 0x8000 (Broadcast) / 0x0000 (Unicast)
- DHCP Message Type : Discover 패킷
- Requested IP Address (Option 50): 과거의 Client가 사용한 IP 요청, 없다면 0.0.0.0 값이 들어 감
- Parameter Request List (Option 55): DHCP Server에게 요청하는 파라미터 정보
04. DHCP Offer 과정
Offer 동작은 Server가 Client에게 받은 Discover 패킷에 대한 응답이다.
Server는 IP 관리 테이블 확인 후 미사용 IP 정보 전달한다.
IP 정보 뿐만 아니라 Server의 IP, Subnet mask, Gateway 등등 네트워크 정보도 전달한다.
Discover 패킷의 Flags 값에 따라 Broadcast 또는 Unicast로 응답한다.
Offer 패킷의 구조는 다음과 같다.
- Src & Dst [MAC, IP, Port]
- Transaction ID : 이전 패킷의 응답에 발생한 패킷 동일한 ID로 전송
- Your IP Address : Client에 할당 할 IP 주소
- DHCP Message Type : Offer 패킷
- DHCP Server Identifier (Option 54): DHCP Offer 패킷을 보낸 DHCP Server의 주소. DHCP Server는 자신의 IP를
패킷에 넣어서 Client에 보냄으로 다른 DHCP Server와의 중복 방지 - IP Lease Time (Option 51): Client가 IP를 임대 할 수 있는 기간
- Subnet Mask (Option 1) : 할당 할 Subnet Mask
- Router (Option 3): Client의 Gateway IP 주소
- DNS (Option 6): 할당 할 DNS 서버 IP 주소
05. DHCP Request 과정
Request 동작은 요청 받은 IP 및 네트워크 정보를 사용을 선언하는 메시지이다.
만약 2대 이상의 DHCP Server에게 DHCP Offer를 받으면 Client는 가장 처음 응답이 온 DHCP Server에게
Request 패킷을 송신하고 이 후에 도착한 Offer 패킷은 무시한다.
Request 패킷의 구조는 다음과 같다.
- Src & Dst [MAC, IP, Port]
- Transaction ID : 이전 패킷의 응답에 발생한 패킷 동일한 ID로 전송
- Flags : 0x8000 (Broadcast) / 0x0000 (Unicast)
- DHCP Message Type : Request 패킷
- Requested IP Address (Option 50): Client가 요청하는 IP
- DHCP Server Identifier (Option 54): DHCP Server의 IP
06. DHCP Ack 과정
Ack 동작은 DHCP Server가 Client에게 IP 및 네트워크 정보를 최종 적으로 할당하는 과정이다.
Server는 Client에게 할당한 해당 IP를 사용 상태로 변환한 후 Lease Table에 기록한다.
Ack 패킷의 구조는 다음과 같다.
- Src & Dst [MAC, IP, Port]
- Transaction ID : 이전 패킷의 응답에 발생한 패킷 동일한 ID로 전송
- Your IP address : 단말에 할당 할 IP 주소
- DHCP Message Type : Ack 패킷
- DHCP Server Identifier (Option 54): DHCP Server의 주소
- IP Lease Time (Option 51): Client가 IP를 임대 할 수 있는 기간
- Subnet Mask (Option 1)
- Router (Option 3): 단말의 Default Gateway IP 주소
- DNS (Option 6): DNS 서버 IP 주소
07. DHCP Release [ DHCP IP 해지 ]
Release 동작은 IP의 임대 기간이 종료 되거나 더 이상 사용하지 않을 때 수행한다.
Client는 사용하던 IP를 반환하고 Server는 IP Lease Table에 해당 IP를 사용 안함 상태로 변환한다.
Client에서 Server까지 해당 패킷은 Unicast로 전송된다.
기본적으로 많은 DHCP 서버들은 Defualt 값으로 8시간을 IP 임대를 선호한다.
너무 오랜 시간 호스트가 IP 임대를 하면 IP 순환이 안되게 되고 언젠가는 Lease Table이 꽉 차게 되면
새로운 호스트가 와도 IP Pool에 여유가 없어 IP를 할당해 주지 못하게 된다.
실제로 이러한 취약점을 이용하여 강제로 DHCP Lease Table을 포화 상태로 만드는 DHCP Starvation 공격이 있기도 하다.
Release 패킷의 구조는 다음과 같다.
- Src & Dst [MAC, IP, Port]
- Client IP address : 현재 Client가 가지고 있는 IP 주소
- DHCP Message Type : Request 패킷
- DHCP Server Identifier (Option 54): IP 할당 해지 요청 할 Server IP 주소
08. DHCP Renewal [ DHCP IP 재할당 ]
Renewal 동작은 Client가 Lease Time 이후에도 계속 IP를 사용하기 위한 동작한다.
Client가 사용하는 IP 를 재 할당 하는 과정으로 IP Renewal 과정은 Unicast 통신으로만 진행한다.
DHCP IP 할당 과정인 Lease 과정의 서버를 탐색하고 응답하는 과정이 생략된 Request와 Ack 동작만 수행한다.
첫번째 Renewal 과정은 Lease Time의 1/2 시점에서 1차 Release 수행한다.
통신상의 장애나 다른 이유로 1차에서 IP 재 갱신이 안되면 Lease Time의 7/8 시점에서 2차 Release 수행한다.
1차와 2차의 Renewal 과정이 모종의 이유로 정상 동작하지 않는다면 IP를 해지하는 Release과정으로 넘어간다.
먼저 Renewal Request 패킷의 구조는 다음과 같다.
- Src & Dst [MAC, IP, Port]
- Transaction ID : 해당 패킷의 응답에 발생한 패킷 동일한 ID로 전송
- Flags : 0x8000 (Broadcast) / 0x0000 (Unicast)
- Client IP address : 현재 Client가 가지고 있는 IP 주소
- DHCP Message Type : Request 패킷
다음으로 Renewal Ack 패킷의 구조는 다음과 같다.
- Src & Dst [MAC, IP, Port]
- Transaction ID : 이전 패킷의 응답에 발생한 패킷 동일한 ID로 전송
- Flags : 0x8000 (Broadcast) / 0x0000 (Unicast)
- Client IP address : 현재 Client가 가지고 있는 IP 주소
- DHCP Message Type : Request 패킷
'네트워크' 카테고리의 다른 글
Unicast / Multicast / Broadcast 통신 방식 이란? (0) | 2022.12.21 |
---|---|
DHCP Relay와 DHCP Proxy 란? (0) | 2022.12.17 |
MAC 주소와 ARP 란? (0) | 2022.12.14 |
OSI 7 계층 이란? (0) | 2022.12.13 |
IP 주소와 Subnet Mask 란? (0) | 2022.12.12 |