네트워크의 표준인 TCP / IP 모델에서 네트워크에 연결된 모든 노드는 각 계층에 맞는 주소를 가지고 있어야 테이터를 송/수신 할 수 있다. 이 때 사용되는 주소 중 가장 대표적인 주소가 IP Address이다. 이러한 네트워크 정보를 nmcli / nmtui와 같은 명령어를 이용하여 수동으로 지정할 수 있으며, DHCP 서버를 이용해 자동으로 설정할 수 있다.
DHCP(Dynamic Host Configuration Protocol)
과거에는 각 PC마다 고정 IP 설정을 도입하여 사용 하거나, RARP를 이용해 동적으로 적절한 IP 주소를 얻을 수 있게 구현하여 사용했다. 하지만, 고정 IP 설정은 오타가 나거나 다른 컴퓨터와 동일한 IP를 할당하는 등의 실수가 발생하면 인터넷이 안되며, RARP는 데이터 링크층에서 작동되어야 했으므로 하드웨어로서 구현이 어려웠고 서버가 각각의 네트워크에 존재해야만 한다는 단점이 있었다.
이러한 문제를 해결하기 위해 요즘은 IP를 필요로 하는 컴퓨터에게 자동으로 할당해서 사용할 수 있도록 해주고, 사용하지 않으면 반환해서 다른 컴퓨터가 사용할수 있도록 해주는 DHCP가 사용된다.
DHCP
네트워크상에서 동적으로 IP 주소 및 기타 구성정보 등을 부여 / 관리하는 프로토콜
DHCP 서버
할당할 수 있는 IP 주소 범위를 관리하며 DHCP 요청이 들어오면 IP 주소를 할당하고, 네트워크를 사용하기 위해 필요한 네트워크 정보를 제공하는 역할을 수행한다. 가장 흔히 볼 수 있는 DHCP 서버로 가정용 인터넷 공유기가 있다.
DCHP 구성
- 할당할 IP 주소
- 서브넷 마스크
- 디폴트 라우팅 경로(게이트웨이)
- DNS 서버 주소
- 기본 도메인 이름
- IP 주소 임대 기간
- WINS서버 등 기타 네트워크 정보(Optional)
DHCP 동작방식
DHCP 임대 프로세스
-
DHCP Discover(PC ----------> Server)
- 클라이언트가 서버를 찾기위해 브로드캐스팅하는 메시지
- 자체 MAC Address(Source MAC Address)가 있는 Broadcast 메시지를 사용하여 가능한 DCHP 서버를 검색
- 클라이언트는 부팅시 유효한 IP 정보가 없기 때문에 Layer2 및 Layer3 브로드캐스트 주소를 사용하여 서버와 통신
-
DHCP Offer(Client <---------- Server)
- 서버가 클라이언트에게 본인의 존재를 알림과 동시에 할당 가능한 IP 주소를 포함한 다양한 네트워크 정보를 함께 전달
- 클라이언트에서 보낸 Discover 메시지의 Broadcast flag = 1 이면 Offer 메시지를 브로드캐스트로, flag = 0 이면 유니캐스트로 보냄
-
DHCP Request(Client ----------> Server)
- 클라이언트가 하나의 DHCP 서버를 선택하고 해당 서버에게 사용할 네트워크 정보를 요청
- 선택된 서버에 대해선 구속력있는 수락 통지 역할을 하고 다른 서버에 대해선 암시적 거부 역할
- Offer 메시지를 보낸 모든 DHCP 서버에 수락된 제안에 대해 알리기 위해 브로드캐스트를 사용
-
DHCP Acknowledge(Client <---------- Server)
- 서버는 해당 주소에 대한 ICMP 핑을 통해 임대 정보를 확인하여 이미 사용되고 있지 않은지 확인하고 클라이언트 임대에 대한 새 ARP 항목을 만들고 메시지로 응답
- 이 메시지는 메시지 유형 필드의 변경을 제외하고는 Offer 메시지의 복제본
- 클라이언트가 이 메시지를 수신하면 구성 정보를 기록하고 할당 된 주소에 대한 ARP 조회를 수행하고 ARP에 대한 응답이 없는 경우 유효함을 알고 자체 주소로 사용하기 시작
- 클라이언트에서 보낸 Request 메시지의 Broadcast flag = 1 이면 Ack 메시지를 보르드캐스트로, flag = 0 이면 유니캐스트로 보냄
DHCP서버는 클라이언트에게 IP 주소를 임대할 때 임대 기간을 설정할 수 있다. 임대 기간을 길게 설정하면 DHCP 요청 빈도를 줄일 수 있지만 사용할 수 있는 IP의 주소가 제한적인 환경에선 고정 IP처럼 사용되기 때문에 IP를 효율적으로 사용해야 하는 네트워크에선 비효율적이다. 반대로 임대 기간을 짧게 설정하면 DHCP 요청 빈도가 높아져 DHCP 서버에 불필요한 네트워크 트래픽과 시스템 과부하가 발생될 수 있다. 따라서 네트워크 구성에 따라 어떤 방식이 효율적인지 판단하여 사용해야 한다.
DHCP 임대 연장(갱신) 프로세스
-
DCHP Request(Client ----------> Server)
- 임대가 만료되기 전에 클라이언트는 IP주소를 제공한 DHCP 서버로 메시지를 직접 보냄
- 이미 메시지를 보낼 서버가 정해져 있기 때문에 유니캐스트로 메시지를 보냄
- DHCP ACK가 지정된 시간 내에 수신되지 않으면 클라이언트는 다른 DHCP Request를 브로드캐스트하여 다른 서버중 하나가 임대를 연장할 수 있도록 함
-
DHCP Acknowledge(Client <---------- Server)
- Request 메시지를 받은 서버는 ACK 메시지를 반환하여 임대 정보를 확인
- 유니캐스트로 진행
임대 연장 과정은 임대기간 중 50%가 경과하면 최초로 수행된다. 최초 DHCP 임대 과정에서 IP주소 임대 연장을 수행하지 못하면 클라이언트는 임대 기간의 87.5%(7/8)에 도달했을 때 다시 임대 연장을 시도한다. 여기서도 임대 연장을 하지 못하면 클라이언트는 임대 연장을 포기한다.
임대 연장에 실패하더라도 남은 기간 동안 IP주소를 사용할 수 있고, 만료된 뒤에는 해당 IP주소를 사용할 수 없지만 다시 DHCP 임대 프로세스를 거쳐 IP주소를 임대 받아 사용하면 된다.
DHCP 해제 프로세스
- DHCP Release(Client ----------> Server)
- 클라이언트는 DHCP 서버로 Release 패킷을 전송하여 IP주소 해제를 통보하고, 즉시 IP주소 설정 및 네트워크 정보를 삭제
- Release 패킷을 수신한 서버는 해당 IP주소를 사용하지 않는 IP주소로 변경
DHCP의 IP주소 할당 방법 종류
수동 할당(Manual Allocation)
- DHCP 서버의 관리자가 수동으로 개별 장비별(중요 호스트, 라우터 등)로 고정 설정
자동 할당(Automatic Allocation)
동적 할당(Dynamic Allocation) - 대부분 이 방법 사용
- 제한된 수량의 IP주소 재사용, 한시적 사용(leased period), 자동 재활용
References