[Daily morning study] DHCP 동작 원리와 IP 주소 할당 과정
#daily morning study
DHCP란
DHCP(Dynamic Host Configuration Protocol)는 네트워크에 연결된 기기에 IP 주소를 자동으로 할당하는 프로토콜이다. 수동으로 IP를 설정하지 않아도 네트워크에 연결하는 순간 IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버 정보를 자동으로 받아온다.
UDP 기반으로 동작하며, 클라이언트는 포트 68, 서버는 포트 67을 사용한다.
DORA: IP 주소 할당 4단계
DHCP IP 할당 과정을 DORA라고 부른다. Discover → Offer → Request → Acknowledge 4단계로 이루어진다.
1. DHCP Discover (브로드캐스트)
클라이언트가 네트워크에 처음 연결되면 아직 IP가 없으므로 브로드캐스트(255.255.255.255)로 DHCP 서버를 탐색한다.
Source IP: 0.0.0.0
Destination IP: 255.255.255.255
Message: "DHCP 서버 있으면 응답해 주세요"
같은 네트워크 세그먼트의 모든 기기에 전달되며, DHCP 서버만 응답한다.
2. DHCP Offer (유니캐스트 또는 브로드캐스트)
DHCP 서버가 클라이언트에게 사용 가능한 IP 주소를 제안한다.
제안 내용:
- 할당 예정 IP: 192.168.1.100
- 서브넷 마스크: 255.255.255.0
- 기본 게이트웨이: 192.168.1.1
- DNS 서버: 8.8.8.8
- 임대 시간(Lease Time): 86400초 (24시간)
네트워크에 DHCP 서버가 여러 대 있으면 여러 Offer가 올 수 있다.
3. DHCP Request (브로드캐스트)
클라이언트가 받은 Offer 중 하나를 선택하고, 선택한 서버에 IP 사용을 요청한다. 이 메시지도 브로드캐스트로 보내는 이유는 다른 DHCP 서버들에게 “나는 저 서버 것을 쓸게”라고 알리기 위해서다.
Source IP: 0.0.0.0 (아직 IP 확정 전)
Destination IP: 255.255.255.255
Message: "192.168.1.1 서버의 192.168.1.100 IP를 쓸게요"
4. DHCP Acknowledge
서버가 요청을 최종 승인하고 IP 임대를 확정한다. 이 시점부터 클라이언트는 해당 IP를 사용할 수 있다.
확정 내용:
- IP: 192.168.1.100/24
- 게이트웨이: 192.168.1.1
- DNS: 8.8.8.8
- 임대 만료: 24시간 후
IP 임대(Lease)와 갱신
DHCP로 받은 IP는 영구 소유가 아니라 임시 임대다. 임대 시간이 지나면 IP를 반납해야 한다.
갱신 타이밍
| 시점 | 동작 |
|---|---|
| 임대 시간의 50% 경과 | 서버에 유니캐스트로 갱신 요청 (T1) |
| 임대 시간의 87.5% 경과 | 브로드캐스트로 갱신 요청 (T2) |
| 임대 시간 100% 경과 | IP 반납, 처음부터 DORA 재수행 |
임대 시간이 24시간이면, 12시간 후 첫 갱신 시도, 21시간 후 두 번째 시도를 한다. 보통 서버가 정상이면 50%에서 갱신이 성공한다.
IP 반납
# Windows
ipconfig /release
ipconfig /renew
# Linux/macOS
sudo dhclient -r eth0 # 반납
sudo dhclient eth0 # 재요청
DHCP 옵션(Options)
DHCP는 IP 주소 외에도 다양한 네트워크 설정을 전달한다.
| 옵션 번호 | 의미 |
|---|---|
| Option 1 | 서브넷 마스크 |
| Option 3 | 기본 게이트웨이 |
| Option 6 | DNS 서버 주소 |
| Option 15 | 도메인 이름 |
| Option 51 | IP 임대 시간 |
| Option 53 | DHCP 메시지 타입 (Discover/Offer/Request/ACK) |
| Option 121 | Classless Static Routes |
DHCP 릴레이 에이전트
DHCP는 브로드캐스트 기반이라 기본적으로 같은 서브넷 내에서만 동작한다. 라우터는 브로드캐스트를 다른 네트워크로 전달하지 않기 때문이다.
대규모 네트워크에서는 DHCP 릴레이 에이전트가 이 문제를 해결한다. 라우터나 L3 스위치에 릴레이 에이전트를 설정하면, 브로드캐스트 메시지를 유니캐스트로 변환해서 중앙 DHCP 서버에 전달한다.
클라이언트 → 브로드캐스트 → 릴레이 에이전트 → 유니캐스트 → DHCP 서버
클라이언트 ← 유니캐스트 ← 릴레이 에이전트 ← 유니캐스트 ← DHCP 서버
덕분에 여러 서브넷을 하나의 DHCP 서버로 관리할 수 있다.
DHCP vs 정적 IP
| 구분 | 동적 IP (DHCP) | 정적 IP |
|---|---|---|
| 설정 방법 | 자동 | 수동 |
| 관리 편의성 | 높음 | 낮음 |
| IP 충돌 위험 | 낮음 (서버가 관리) | 높음 (수동 관리) |
| 항상 같은 IP | 보장 안 됨 | 보장됨 |
| 주요 사용처 | 일반 단말기, 모바일 | 서버, 프린터, 네트워크 장비 |
서버처럼 IP가 고정되어야 하는 경우에는 정적 IP를 쓰거나, DHCP 서버에서 MAC 주소 기반으로 항상 같은 IP를 예약(DHCP 예약/고정 임대) 해두는 방법을 쓴다.
DHCP Snooping (보안)
DHCP 스누핑은 스위치에서 동작하는 보안 기능이다. 가짜 DHCP 서버 공격(DHCP Spoofing)을 방어한다.
공격 시나리오: 공격자가 가짜 DHCP 서버를 세우고 클라이언트에게 공격자의 게이트웨이 IP를 알려주면, 클라이언트 트래픽이 모두 공격자를 경유하게 된다(Man-in-the-Middle).
방어: 스위치에서 신뢰할 수 있는 DHCP 서버 포트(Trusted Port)만 DHCP Offer를 보낼 수 있도록 제한한다. 다른 포트(Untrusted)에서 오는 DHCP Offer는 차단한다.
핵심 정리
- DHCP는 UDP 기반 (클라이언트 68번 포트, 서버 67번 포트)
- IP 할당 4단계: DORA (Discover → Offer → Request → Acknowledge)
- Discover와 Request는 브로드캐스트, Offer와 ACK는 유니캐스트 또는 브로드캐스트
- IP는 임대 개념이며 임대 시간 50%에서 자동 갱신 시도
- 다른 서브넷과 통신하려면 DHCP 릴레이 에이전트 필요
- 서버/장비처럼 고정 IP가 필요한 경우 DHCP 예약 또는 정적 IP 사용