DHCP의 구성 및 동작원리
본문 바로가기
Network/Network

DHCP의 구성 및 동작원리

by Meenzino 2022. 3. 6.

호스트가 네트워크와 통신하려면 물리적 네트워크 구성은 물론 IP, 서브넷 마스크, 게이트웨이와 같은 네트워크 정보와 DNS 주소도 설정이 필요합니다. 이런 네트워크 정보를 호스트에 적용하려면 사용자가 IP정보를 직접 설정하거나 IP 정보를 할당해주는 서버를 이용해 자동으로 설정해야 합니다. 수동으로 IP와 네트워크 정보를 직접 설정하는 것을 '정적 할당'이라고 하고 자동으로 설정하는 것을 '동적 할당'이라고 합니다.

 

일반적으로 데이터 센터의 서버 팜과 같은 운영 망에서 사용되는 IP는 주로 정적 할당을 사용하지만 PC 사용자를 위해 운영되는 사무실 네트워크에서는 IP를 자동으로 할당받는 동적 할당 방식을 많이 사용합니다.

 

이렇게 IP를 동적으로 할당하는 데 사용되는 프로토콜이 바로 DHCP(Dynamic Host Configuration)입니다.

DHCP를 사용하면 사용자가 직접 입력해야 하는 IP주소, 서브넷 마스크, 게이트웨이, DNS 정보를 자동으로 할당받아 사용할 수 있습니다.

별도의 IP 설정 작업이 필요없어 사용자와 관리자 모두 편리하게 네트워크에 접속할 수 있고 사용하지 않는 IP 정보는 회수되어 사용하는 경우에만 재할당되어 사용자 이동이 많고 한정된 IP 주소를 가진 경우 유용하게 사용될 수 있습니다. 또한, IP가 자동으로 관리되므로 사용자가 직접 입력하면서 발생할 수 있는 설정 정보 오류나 중복 IP 할당과 같은 문제를 예방할 수 있습니다.

 

1.  DHCP 프로토콜이란?

DHCP는 BOOTP(Bootstrap Protocol) 라는 프로토콜을 기반으로 합니다. DHCP는 BOOTP와 유사하게 동작하지만 BOOTP에서 지원되지 않는 몇 가지 기능이 추가된 확장 프로토콜입니다. DHCP와 BOOTP 프로토콜 사이에는 호환성이 있어 BOOTP와 DHCP에서 사용되는 서비스 포트가 같고 BOOTP 클라이언트가 DHCP서버를 사용하거나 DHCP 클라이언트가 BOOTP 서버를 사용해 정보를 수신할 수도 있습니다. 

 

DHCP는 서버와 클라이언트로 동작하며 클라이언트의 서비스 포트는 68(bootpc), 서버의 서비스 포트는 67(bootps)입니다.

DHCP 프로토콜에 대한 자세한 내용은 RFC 2131(https://tools.ietf.org/html/rfc2131)에 기술되어 있고 추가적인 상위 기능은 RFC 3046, 3942에서 찾아볼 수 있습니다.

 

2.  DHCP 동작 방식

호스트가 DHCP 서버로 IP를 할당받는 과정은 다음 그림과 같이 4단계로 진행됩니다.

 

DHCP 패킷의 4단계 흐름

1. DHCP Discover

- DHCP 클라이언트는 DHCP 서버를 찾기 위해 DHCP DIsvocer 메시지를 브로드캐스트로 전송합니다.

 

2. DHCP Offer

- DHCP DIscover를 수신한 DHCP 서버는 클라이언트에 할당할 IP주소와 서브넷, 게이트웨이, DNS 정보, Lease Time 등의 정보를 포함한 DHCP 메시지를 클라이언트로 전송합니다.

 

3. DHCP Request

- DHCP 서버로부터 제안받은 IP 주소(Requested IP)와 DHCP 서버 정보( DHCP Server Identifier)를 포함한 DHCP 요청 메시지를 브로드캐스트로 전송합니다.

 

4. DHCP Acknowledgement

- DHCP 클라이언트로부터 IP 주소를 사용하겠다는 요청을 받으면 DHCP 서버에 해당 IP를 어떤 클라이언트가 언제부터 사용하기 시작했는지 정보를 기록하고 DHCP Request 메시지를 정상적으로 수신했다는 응답을 전송합니다.

 

DHCP Discover 메시지에는 DHCP 클라이언트의 IP가 아직 없으므로 출발지는 Zero IP 주소(0.0.0.0), 목적지는 브로드캐스트 주소(255.255.255.255)로 설정됩니다. 그리고 이때 사용되는 서비스 포트는 출발지가 UDP68번(bootpc), 목적지는 UDP 67번(bootps)을 사용합니다. IP를 할당받는 과정이므로 패킷을 정상적으로 주고받을 수 없어 TCP가 아닌 UDP를 사용합니다.

 

클라이언트로부터 DHCP Discover 메시지를 받은 DHCP 서버는 클라이언트에 할당할 수 있는 IP리스트인 DHCP IP Pool 중에서 할당할 IP를 선택합니다. 별도의 설정이 없으면 IP Pool에서 임의로 할당하지만 특정 클라이언트의 MAC주소와 IP 주소를 사전에 정의해두면 설정된 IP를 할당하므로 DHCP를 사용하면서도 고정된 IP를 할당할 수 있습니다.

 

클라이언트에 IP를 할당할 때는 단순히 IP 주소뿐만 아니라 서브넷, 게이트웨이, DNS 정보와 IP 주소 임대 시간(Lease Time), DHCP 서버 자신의 IP 정보를 포함한 메시지를 DHCP 클라이언트에 전송합니다.이 메시지를 DHCP Offer 메시지라고 하며 DHCP 서버가 클라이언트에 IP 주소 사용을 제안하는 단계입니다.


DHCP 클라이언트는 DHCP 서버로부터 제안받은 IP 정보를 사용하기 위해 DHCP Request 메시지를 DHCP 서버에 전송합니다. DHCP 서버를 찾기 위한 Discover 메시지를 보낼 때는 현재 DHCP 서버가 어느 서버인지 알 수 없으므로 브로드캐스트로 전송하고 DHCP Request메시지를 보낼 때도 유니캐스트가 아닌 브로드캐스트로 전송합니다. 서버에서 받은 DHCP Offer 메시지 안에 IP 설정 정보가 모두 포함되어 있어 IP를 설정하고 유니캐스트로 패킷을 전달해도 되지만 DHCP 서버 여러 대가 동작하는 환경을 위해 브로드캐스트를 사용합니다.

 

마지막으로 DHCP 서버는 DHCP Request를 보낸 클라이언트에 최종 확인을 위한 응답 메시지 패킷을 보내는데 이것을 DHCP Acknowledgement 메시지라고 하며 내용은 DHCP Offer의 내용과 동일합니다. 이 패킷도 마찬가지로 브로드캐스트로 해당 네트워크 내에서 전체 전송됩니다. 이 패킷을 전송하면서 클라이언트는 DHCP 서버에서 할당받은 IP를 로컬에 설정하고 사용하기 시작합니다.

 

지금까지 알아본 DHCP 동작은 DHCP 서버를 통해 신규 IP를 할당받는 과정이었습니다. DHCP에서 IP 할당은 DHCP IP Pool에서 클라이언트에 정해진 시간 동안 IP를 사용할 수 있도록 할당하는 것이므로 이 과정을 '임대(Lease) 과정'이라고 합니다. 즉, 클라이언트는 IP 주소를 DHCP서버가 가진 자원(IP Pool)에서 잠시 빌려쓰는 것입니다. 

 

DHCP를 통해 IP를 할당할 떄는 IP 임대 시간이 있습니다. DHCP 서버는 클라이언트에 할당할 IP 정보와 함께 임대시간을 지정해 전달합니다. 임대시간이 만료되면 클라이언트에 할당된 IP를 다시 IP Pool로 회수합니다.

 

3. DHCP 서버 구성

DHCP 서버를 구성할 때는 클라이언트에 할당하게 될 IP 주소 풀을 포함해 다양한 속성과 정보를 설정할 수 있습니다. DHCP 서버를 구성할 때 주로 설정하는 값은 다음과 같습니다.

 

  • IP 주소 풀(IP 범위)
    • 클라이언트에 할당할 IP 주소 범위
  • 예외 IP 주소 풀(예외 IP 범위)
    • 클라이언트에 할당할 IP 주소로 선언된 범위 중 예외적으로 할당하지 않을 대역
  • 임대 시간
    • 클라이언트에 할당할 IP 주소의 기본 임대 시간
  • 서브넷 마스크( Subnet Mask)
    • 클라이언트에 할당할 IP 주소에 대한 서브넷 마스크 정보
  • 게이트웨이(Router)
    • 클라이언트에 할당할 게이트웨이 정보
  • DNS(Domain Name Server)
    • 클라이언트에 할당할 DNS 주소

 

4. DHCP 릴레이

DHCP 서버에서 IP 주소를 할당받기 위해 DHCP 클라이언트와 DHCP 서버 간에 전송되는 패킷은 모두 브로드캐스트입니다. 브로드캐스트는 동일 네트워크에서만 전송되므로 DHCP를 사용하려면 각 네트워크마다 DHCP 서버가 있어야 합니다.

 

네트워크 대역이 하나로 운영되는 소규모 사업장에서 공유기와 같이 간단한 장비로 DHCP를 운영할 때는 고려할 사항이 많지 않지만 네트워크 영역이 여러 개인 환경에서 DHCP를 이용한다면 DHCP 서버 배치, 이중화와 관련된 다양한 사항을 고려해야 합니다. 아래 그림과 같이 네트워크가 여러 개로 나뉜 환경에서는 DHCP의 브로드캐스트가 전달되지 않으므로 각 네트워크 환경에서 DHCP 서버를 개별적으로 구축해야 할 수 있습니다.

네트워크가 분리된 환경에서는 각 네트워크별로 DHCP 서버를 구성해야 한다.

 

 

하지만 여러 네트워크를 가진 환경에서도 DHCP 릴레이 에이전트(Relay Agent) 기능을 사용하면 DHCP 서버 한 대로 여러 네트워크 대역에서 IP 풀을 관리할 수 있습니다. DHCP 릴레이 에이전트가 DHCP 클라이언트와 DHCP 서버가 서로 다른 대역에 있는 경우, DHCP 패킷을 중간에서 중계(Relay)하는 역할을 해주기 때문입니다. 아래 그림과 같이 DHCP 릴레이 에이전트의 구성과 통합된 DHCP 서버 구성에서 1.1.1.0/24 대역을 가진 A 네트워크와 2.2.2.0/24 대역을 가진 B 네트워크에 대한 DHCP IP 풀을 3.3.3.0/24 대역인 C 네트워크의 DHCP 서버에서 관리하는 것을 볼 수 있습니다.

이것이 가능한 것은 브로드캐스트로 전달되는 DHCP 패킷을 동일 네트워크 대역의 DHCP 릴레이 에이전트가 수신하면 DHCP 서버로 갈 수 있도록 이것을 유니캐스트로 변환해주는 역할을 하기 때문입니다. 즉, 릴레이 에이전트를 이용하면 DHCP 서버를 네트워크마다 구성하지 않고 중앙 DHCP 서버만으로도 여러 네트워크에서 DHCP 환경을 운영할 수 있습니다.

DHCP 릴레이 에이전트의 구성과 통합된 DHCP 서버 구성

 

 

참고자료

- IT 엔지니어를 위한 네트워크 입문

댓글