Linux 서버를 운영하다 보면 부팅 후 IP 주소가 할당되지 않거나, 네트워크 연결이 되지 않고 인터넷에 접속할 수 없는 문제가 발생할 수 있습니다. 이러한 증상의 대표적인 원인 중 하나가 DHCP(Dynamic Host Configuration Protocol) 문제입니다.
DHCP는 클라이언트에게 IP 주소와 서브넷 마스크, 기본 게이트웨이, DNS 서버 등의 네트워크 정보를 자동으로 할당하는 프로토콜입니다. DHCP 서버 또는 클라이언트 설정에 문제가 발생하면 IP를 받지 못하거나 잘못된 네트워크 설정으로 인해 통신 장애가 발생할 수 있습니다.
이번 글에서는 Linux에서 DHCP 문제가 발생하는 원인과 확인 방법, 해결 방법을 실무 중심으로 알아보겠습니다.
DHCP란?
DHCP는 네트워크 장비가 자동으로 IP 주소를 할당받을 수 있도록 하는 프로토콜입니다.
동작 과정은 다음과 같습니다.
DHCP Discover
↓
DHCP Offer
↓
DHCP Request
↓
DHCP ACK
↓
IP 주소 사용
이 과정 중 하나라도 실패하면 IP 주소를 정상적으로 받을 수 없습니다.
DHCP 문제가 발생하는 주요 원인
대표적인 원인은 다음과 같습니다.
- DHCP 서버 장애
- DHCP 서비스 중지
- DHCP 주소 풀(IP Pool) 부족
- VLAN 설정 오류
- DHCP Relay 설정 오류
- 방화벽 차단
- 네트워크 케이블 문제
- 잘못된 클라이언트 설정
- 가상머신 네트워크 설정 오류
- Docker 또는 브리지 네트워크 충돌
실무에서는 DHCP 서버 장애와 IP Pool 부족이 가장 많이 발생합니다.
1. 현재 IP 주소 확인하기
먼저 현재 IP가 정상적으로 할당되었는지 확인합니다.
ip addr
또는
hostname -I
IP 주소가 없거나 169.254.x.x 주소가 표시된다면 DHCP 문제를 의심할 수 있습니다.
2. DHCP 임대 정보 확인하기
현재 DHCP 임대 정보를 확인합니다.
Ubuntu/Debian
cat /var/lib/dhcp/dhclient.leases
RHEL 계열
cat /var/lib/NetworkManager/*.lease
임대 정보가 없으면 DHCP 서버와 통신하지 못한 것입니다.
3. DHCP 요청 다시 수행하기
기존 임대를 해제합니다.
dhclient -r
다시 요청합니다.
dhclient
새로운 IP가 정상적으로 할당되는지 확인합니다.
4. DHCP 서버 연결 확인하기
네트워크 인터페이스를 확인합니다.
ip link
인터페이스가 DOWN이라면 활성화합니다.
ip link set eth0 up
5. DHCP 패킷 확인하기
DHCP 통신을 캡처합니다.
tcpdump -i eth0 port 67 or port 68
정상적인 패킷 흐름은 다음과 같습니다.
Discover
↓
Offer
↓
Request
↓
ACK
Offer가 오지 않는다면 DHCP 서버 문제일 가능성이 높습니다.
6. DHCP 서비스 확인하기
DHCP 서버에서는 서비스를 확인합니다.
systemctl status dhcpd
또는
systemctl status isc-dhcp-server
서비스가 중지되어 있다면 재시작합니다.
systemctl restart dhcpd
7. DHCP 주소 풀 확인하기
DHCP 설정 파일을 확인합니다.
cat /etc/dhcp/dhcpd.conf
예시
range 192.168.10.100 192.168.10.200;
주소 풀이 모두 사용되었는지 확인합니다.
8. VLAN 및 DHCP Relay 확인하기
다른 VLAN에서 DHCP를 사용하는 경우 DHCP Relay(IP Helper)가 정상적으로 설정되어 있는지 확인합니다.
Relay 설정 오류가 있으면 DHCP Discover는 전달되지만 Offer를 받지 못할 수 있습니다.
9. 로그 확인하기
DHCP 관련 로그를 확인합니다.
journalctl -u NetworkManager
또는
journalctl -u dhcpd
커널 로그도 함께 확인합니다.
journalctl -k
10. 방화벽 확인하기
DHCP는 UDP 67, 68 포트를 사용합니다.
iptables
iptables -L -n
firewalld
firewall-cmd --list-all
DHCP 관련 포트가 차단되어 있지 않은지 확인합니다.
DHCP 문제 점검 순서
실무에서는 다음 순서대로 점검하는 것이 좋습니다.
- IP 주소 확인
- DHCP 임대 정보 확인
- dhclient 재실행
- 인터페이스 확인
- DHCP 패킷 분석
- DHCP 서비스 확인
- 주소 풀 확인
- VLAN 및 Relay 확인
- 로그 확인
- 방화벽 확인
DHCP 문제 사용 시 주의사항
다음 사항을 고려해야 합니다.
- DHCP 주소 풀이 충분한지 확인한다.
- VLAN 환경에서는 DHCP Relay 설정을 점검한다.
- 가상머신에서는 브리지 모드와 NAT 모드를 확인한다.
- Docker Bridge가 DHCP와 충돌하지 않는지 확인한다.
- DHCP 서버 시간을 동기화하는 것이 좋다.
- DHCP 임대 시간이 너무 짧지 않은지 확인한다.
DHCP는 네트워크의 기본 설정을 자동으로 제공하므로 작은 설정 오류도 전체 네트워크 장애로 이어질 수 있습니다.
DHCP와 Static IP의 차이
| 항목 | DHCP | Static IP |
|---|---|---|
| IP 할당 | 자동 | 수동 |
| 관리 | 쉬움 | 직접 관리 |
| 변경 가능성 | 있음 | 없음 |
| 서버 환경 | 클라이언트에 적합 | 서버에 적합 |
일반적으로 서버는 Static IP, PC나 노트북은 DHCP를 사용하는 경우가 많습니다.
자주 묻는 질문
DHCP를 사용하면 IP가 계속 바뀌나요?
임대 기간(Lease Time)이 만료되면 변경될 수 있습니다. 하지만 동일한 장비에는 같은 IP가 다시 할당되는 경우도 많습니다.
DHCP 서버가 여러 대 있으면 문제가 되나요?
네. 동일한 네트워크에서 여러 DHCP 서버가 동시에 응답하면 잘못된 IP가 할당되어 네트워크 장애가 발생할 수 있습니다.
DHCP 대신 Static IP를 사용하면 더 안정적인가요?
서버 환경에서는 일반적으로 Static IP를 사용하는 것이 관리와 서비스 운영 측면에서 더 안정적입니다.
마무리
DHCP는 Linux 네트워크에서 IP 주소와 게이트웨이, DNS 정보를 자동으로 제공하는 핵심 서비스입니다. dhclient, tcpdump, ip addr, journalctl 등을 활용하면 DHCP 관련 문제를 빠르게 분석할 수 있으며, DHCP 서버와 주소 풀, Relay 설정을 함께 점검하면 대부분의 문제를 해결할 수 있습니다.