DHCP는 IP를 동적으로 할당하는 데 사용되는 프로토콜이다.
여기서 동적 할당이란 IP와 네트워크 정보를 자동으로 설정하는 것이다. 반대로 수동으로 설정하는 것을 정적 할당이라고 한다.
핸드폰, PC 대부분은 동적 할당 방식을 이용하면서 보안을 강화하고 쉽게 관리하도록 도와주는 서비스와 장비가 대중화되어 동적 할당 방식이 많이 사용되고 있다.
DHCP를 사용하면 사용자가 직접 입력해야 하는 IP 주소, 서브넷 마스크, 게이트웨이, DNS 정보를 자동으로 할당받아 사용할 수 있다. 또한 IP가 자동으로 관리되므로 설정 정보 오류나 중복 IP 할당과 같은 문제를 예방할 수 있다.
DHCP 프로토콜
DHCP는 BOOTP(Bootstrap Protocol)에서 지원되지 않는 몇 가지 기능이 추가된 확장 프로토콜이다.
BOOTP(Bootstrap Protocol) : `처음으로 부팅된 컴퓨터`, `디스크를 갖지 않은 컴퓨터`에게 IP 주소 등 구성정보를 제공
- 정적으로 클라이언트/서버 형태의 구성 정보를 제공하는 프로토콜
DHCP와 BOOTP는 서로 호환성이 있기 때문에 사용되는 서비스 포트가 같고 정보도 수신 가능하다.
DHCP는 서버와 클라이언트로 동작하며 클라이언트의 서비스 포트는 68(bootpc), 서버의 서비스 포트는 67(bootps)이다
DHCP 동작 방식
- DHCP Discover
- 클라이언트는 DHCP 서버를 찾기 위해 DHCP 메시지를 브로드캐스트 전송
- 이때 브로드캐스트로 전송하는 이유는 클라이언트의 IP가 아직 없기 때문에 브로드캐스트를 사용한다.
- DHCP Offer
- DHCP Discover를 수신한 서버는 클라이언트에 할당할 IP 주소와 서브넷, 게이트웨이, DNS 등의 정보를 포함한 DHCP 메시지를 클라이언트로 전송
- 이때 IP 주소는 DHCP IP Pool 중에서 할당, 별도의 설정이 없다면 임의로 할당하지만 특정 IP, MAC 주소를 사전에 정의해두면 설정된 IP 할당
- DHCP Request
- DHCP 서버로부터 제안받은 IP 주소와 DHCP 서버 정보를 포함한 DHCP 요청 메시지를 브로드캐스트로 전송
- 이때 유니캐스트로 가능하지만 DHCP 서버 여러 대가 동작하는 환경을 위해 브로드캐스트 사용
- DHCP Acknowledgement
- DHCP 클라이언트로부터 IP 주소를 사용하겠다는 요청을 받으면 DHCP 서버에 해당 IP를 어떤 클라이언트가 언제부터 사용하기 시작했는지 정보를 기록하고 DHCP Request 메시지를 정상적으로 수신했다는 응답을 전송
해당 과정은 패킷을 정상적으로 주고받을 수 없어 TCP가 아닌 UDP를 사용한다.
이렇게 DHCP 서버를 통해 신규 IP를 할당받는 과정을 임대 과정이라고 한다. 즉, 클라이언트는 IP 주소를 DHCP 서버가 가진 자원(IP Pool)에서 잠시 빌려 쓰는 것이다.
이때 잠시 빌려쓴다는 말은 IP 임대시간이 존재한다는 것이다. 임대시간이 만료되면 클라이언트에 할당된 IP를 다시 IP Pool로 회수한다. 만약 IP 사용 중 만료가 된다면 IP를 수거하고 재할당 받는다.
실제론 매번 할당받은 IP주소를 반환하고 다시 새로운 할당을 요청하는 과정을 반복하지 않는다. 현재 클라이언트가 IP를 사용중일 경우 갱신 과정을 거쳐 IP주소를 IP풀에 다시 반환하지 않고 계속 사용 가능하다.
DHCP에서 IP를 할당받은 후 임대 시간의 50%가 지나면 DHCP 갱신 과정을 수행한다.
갱신 과정은 임대 과정과 달리 DHCP 서버 정보와 이미 사용 중인 IP 정보가 있기 때문에 Discover, Offer 과정을 생략한다.
또한 브로드캐스트가 아닌 유니캐스트로 진행되므로 불필요한 브로드캐스트가 발생하지 않는다.
만약 갱신이 실패하면 임대 시간 50%가 남은 시간의 50%가 지난 시점인 75% 때 다시 시도한다. 이때도 갱신 실패 시 임대 시간이 지난 후 IP를 반납하고 다시 임대 과정을 거쳐 IP를 할당받아야 한다.
임대 시간은 DHCP를 사용하는 환경에 맞추어 알맞게 설정할 수 있다. 클라이언트가 불특정 하면서 자주 바뀌는 경우라면 임대 시간을 짧게 설정해 임대된 IP가 빠르게 반환되도록 해야 한다.
<참고> DHCP 메시지 타입
메시지 타입 내용 DHCP Discover 클라이언트가 사용한 DHCP 서버를 찾는 메시지 DHCP Offer DHCP 서버가 IP 설정값에 대해 클라이언트에게 제안하는 메시지 DHCP Request DHCP 서버에서 제안받은 설정값을 요청하는 메시지 DHCP Decline 현재 IP가 사용 중임을 클라이언트가 서버에 알려주는 메시지 DHCP Ack DHCP 서버가 클라이언트에 받은 요청을 수락하는 메시지 DHCP Nak DHCP 서버가 클라이언트에 받은 요청을 수락하지 않는다는 메시지 DHCP Release 클라이언트가 현재 IP를 반납할 때 사용하는 메시지 DHCP Inform 클라이언트가 서버에 IP 설정값을 요청하는 메시지
<참고> DHCP Starvation 공격
IP 풀에서 관리하는 모든 IP 주소를 소진한 상태에서 새로운 클라이언트가 DHCP 서버로 Discover 메시지를 보내면 서버는 사용할 IP 주소가 없어서 IP를 할당할 수 없다.
이를 악용해 DHCP 서버에서 가용한 모든 IP를 가짜로 할당받아 실제 클라이언트가 IP 주소를 할당하지 못하게 하는 공격 방식을 DHCP Starvation(기아 상태) 공격이라고 한다.
DHCP 릴레이
DHCP IP 할당의 모든 패킷은 브로드캐스트로 전송된다. 브로드캐스트는 동일 네트워크에서만 전송되므로 DHCP를 사용하려면 각 네트워크마다 DHCP 서버가 있어야 한다.
하지만 네트워크 영역이 여러 개인 환경에서 DHCP를 이용한다면 DHCP 서버 배치, 이중화와 관련된 다양한 사항을 고려해야 한다.
그림 같은 환경에서는 DHCP 브로드캐스트가 전달되지 않으므로 DHCP 릴레이 에이전트(Relay Agent) 기능을 사용하면 DHCP 서버 하나로 여러 네트워크 대역에서 IP 풀을 관리할 수 있다.
위 그림이 가능한 이유는 브로드캐스트로 전달되는 DHCP 패킷을 동일 네트워크 대역의 DHCP 릴레이 에이전트가 수신하면 DHCP 서버로 갈 수 있도록 이것을 유니캐스트로 변환해주기 때문이다.
즉, 릴레이 에이전트를 이용하면 DHCP 서버를 네트워크마다 구성하지 않고 중앙 DHCP 서버만으로도 여러 네트워크에서 DHCP 환경을 운영할 수 있다.
- DHCP Discover(클라이언트 -> 릴레이 에이전트)
- DHCP 클라이언트는 DHCP 서버를 찾기 위해 브로드캐스트로 패킷을 전송
- DHCP Discover(릴레이 에이전트 -> DHCP 서버)
- 릴레이 에이전트는 수신한 DHCP Discover 메시지를 다른 네트워크에 있는 DHCP 서버로 전달하기 위해 출발지와 목적지를 릴레이 에이전트 IP 주소와 DHCP 서버 IP 주소로 재설정.
- 이때 목적지가 명확해졌기 때문에 유니캐스트로 통신
- 출발지 주소와 DHCP 메시지의 릴레이 에이전트 IP 주소가 다른데 출발지 주소는 DHCP 서버로 가기 위한 방향의 인터페이스 IP 주소이며 릴레이 에이전트 IP 주소는 DHCP 클라이언트가 속한 내부 인터페이스의 IP 주소이다.
- DHCP Offer(DHCP 서버 -> 릴레이 에이전트)
- DHCP Discover를 수신한 DHCP 서버는 클라이언트에 할당할 IP 주소와 서브넷, 게이트웨이, DNS, 임대 시간 등의 정보를 포함한 DHCP 메시지를 릴레이 에이전트로 전송
- 이때 도착지 IP가 명확하기 때문에 유니캐스트로 통신
- DHCP Offer(릴레이 에이전트 -> 클라이언트)
- 릴레이 에이전트는 수신한 Offer 메시지를 다시 클라이언트로 브로드캐스트 전송
- DHCP Request(클라이언트 -> 릴레이 에이전트)
- 클라이언트는 DHCP 서버로부터 제안받은 IP 주소와 DHCP 서버 정보를 포함한 DHCP 요청 메시지를 브로드캐스트로 전송
- DHCP Request(릴레이 에이전트 -> DHCP 서버)
- 수신한 Request 메시지를 유니캐스트로 변환해 DHCP 서버로 전달
- DHCP ACK(DHCP 서버 -> 릴레이 에이전트)
- 요청을 받은 DHCP 서버는 해당 IP 사용 정보를 기록하고 정상적으로 수신했다는 응답을 전송
- 유니캐스트
- DHCP ACK(릴레이 에이전트 -> 클라이언트)
- 전달받은 ack 메시지를 클라이언트에 브로드캐스트로 다시 전달
이처럼 DHCP 릴레이 에이전트는 직접 통신이 불가능한 DHCP 클라이언트와 DHCP 서버 간 통신을 위한 중간자 역할을 위해 대신 수행한다.
이때 DHCP 클라이언트와 DHCP 릴레이 에이전트 간에는 브로드캐스트로 동작하고 다시 DHCP 릴레이 에이전트와 DHCP 서버 간에는 유니캐스트로 동작한다.
이를 위해 릴레이 에이전트는 DHCP 클라이언트와 같은 L2 네트워크 내에 존재해야 하고 DHCP 서버에는 유니캐스트로 전달하기 위해 DHCP 서버의 IP 주소가 등록되어 있어야 한다.
'CS > 네트워크' 카테고리의 다른 글
방화벽이란 (0) | 2022.08.13 |
---|---|
보안과 보안 솔루션 (0) | 2022.08.12 |
GSLB(Global Server/Service Load Balancing) 란 (0) | 2022.07.07 |
DNS(Domain Name System)란 (0) | 2022.07.06 |
NAT/PAT 란? (0) | 2022.07.06 |