
네트워크 관리를 하다 보면 호스트에게 IP 주소를 어떻게 할당할지 결정해야 합니다. 정적 IP와 동적 IP, 두 방식 모두 장단점이 있어 상황에 따라 적절한 선택이 필요합니다. 오늘은 두 방식의 차이점과 DHCP 동작 원리까지 자세히 알아보겠습니다.
정적 IP 할당은 관리자가 수동으로 각 호스트에 고정된 IP 주소를 설정하는 방식입니다. 한 번 설정하면 호스트를 재시작하거나 네트워크에 재연결해도 동일한 IP 주소를 유지합니다.
# Linux에서 정적 IP 설정 예시
sudo ip addr add 192.168.1.100/24 dev eth0 # IP 주소와 서브넷 마스크
sudo ip route add default via 192.168.1.1 # 게이트웨이
echo "nameserver 8.8.8.8" >> /etc/resolv.conf # DNS 서버
| 설정 항목 | 설명 | 예시 |
|---|---|---|
| IP 주소 | 호스트의 고유 주소 | 192.168.1.100 |
| 서브넷 마스크 | 네트워크 범위 정의 | 255.255.255.0 (/24) |
| 게이트웨이 | 외부 네트워크 연결 지점 | 192.168.1.1 |
| DNS 서버 | 도메인 이름 해석 서버 | 8.8.8.8, 8.8.4.4 |
동적 IP 할당은 DHCP 서버가 자동으로 사용 가능한 IP 주소를 임대해주는 방식입니다. 호스트는 네트워크에 연결될 때마다 사용 가능한 IP 주소를 자동으로 받게 됩니다.
✅ 장점
❌ 단점
✅ 장점
❌ 단점
DHCP(Dynamic Host Configuration Protocol)는 DORA 과정을 통해 IP 주소를 할당합니다.
클라이언트 → 브로드캐스트: "DHCP 서버 있나요?"
DHCP 서버 → 클라이언트: "이 IP 주소 어때요?"
클라이언트 → 브로드캐스트: "제안받은 IP 주소를 사용하겠습니다"
DHCP 서버 → 클라이언트: "IP 주소 임대 승인!"
# DHCP 패킷의 주요 필드 (Python 예시)
class DHCPPacket:
def __init__(self):
self.op = 1 # Operation: 1=Request, 2=Reply
self.htype = 1 # Hardware Type: 1=Ethernet
self.hlen = 6 # Hardware Length
self.xid = 0x12345678 # Transaction ID
self.ciaddr = 0 # Client IP Address
self.yiaddr = 0 # Your IP Address
self.siaddr = 0 # Server IP Address
self.giaddr = 0 # Gateway IP Address
self.chaddr = b'\x00' * 16 # Client Hardware Address
# 웹서버 설정 예시
server {
listen 80;
server_name example.com;
# 정적 IP: 192.168.1.100 고정 사용
}
# Docker Compose에서 정적 IP 설정
version: '3'
services:
database:
image: mysql:8.0
networks:
app_network:
ipv4_address: 172.20.0.10
networks:
app_network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16
# DHCP 풀 설정 예시 (Cisco 스타일)
"""
ip dhcp pool LAN_POOL
network 192.168.1.0 255.255.255.0
default-router 192.168.1.1
dns-server 8.8.8.8 8.8.4.4
lease 7 0 0 # 7일 임대
"""
sequenceDiagram
participant C as 클라이언트
participant D as DHCP 서버
Note over C: 임대 기간 50% 경과
C->>D: DHCP Request (갱신 요청)
D->>C: DHCP ACK (갱신 승인)
Note over C: 임대 기간 87.5% 경과
C->>D: DHCP Request (재갱신 요청)
D->>C: DHCP ACK (재갱신 승인)
| 구분 | DHCPv4 | DHCPv6 |
|---|---|---|
| 주소 형식 | 32비트 (192.168.1.1) | 128비트 (2001:db8::1) |
| 브로드캐스트 | 브로드캐스트 사용 | 멀티캐스트 사용 |
| 자동 설정 | DHCP 필수 | SLAAC + DHCPv6 |
| 포트 번호 | 67(서버), 68(클라이언트) | 546(클라이언트), 547(서버) |
실무에서는 DHCP 예약(Reservation)을 통해 두 방식의 장점을 결합할 수 있습니다.
# DHCP 예약 설정 예시
# MAC 주소 기반으로 특정 IP 할당
host server1 {
hardware ethernet 00:1B:44:11:3A:B7;
fixed-address 192.168.1.100;
}
장점:
# DHCP 스푸핑 탐지 로직 예시
def detect_dhcp_spoofing(dhcp_servers):
legitimate_servers = ['192.168.1.1']
for server in dhcp_servers:
if server not in legitimate_servers:
alert(f"Unauthorized DHCP server detected: {server}")
# DHCP Snooping 설정 (Cisco 스위치)
ip dhcp snooping
ip dhcp snooping vlan 10
ip dhcp snooping trust # 신뢰할 수 있는 포트 설정
IP 주소 할당 방식 선택은 네트워크 환경과 요구사항에 따라 결정되어야 합니다.
정적 IP 선택 기준:
동적 IP 선택 기준:
마치 도시에서 집 주소를 부여하는 것처럼, 고정 주소가 필요한 중요한 건물(서버)에는 정적 IP를, 임시 거주자(일반 사용자)에게는 동적 IP를 할당하는 것이 효율적입니다. DHCP의 4단계 과정을 이해하고 적절한 보안 조치를 취한다면, 안정적이고 효율적인 네트워크 운영이 가능합니다.