본문 바로가기

컴퓨터 사이언스/네트워크

[모바일 컴퓨팅] DHCP (Dynamic Host Configuration Protocol)

IP address의 동적 할당이 필요한 이유?

- 수동적인 IP address 할당을 피하기 위해서 (자동화)

- IP address를 사용자의 요구에 따라 할당하기 위해서

- 모바일 디바이스의 IP address 할당을 위해

모바일 디바이스는 그 특성 상, IP address를 할당받아 짧은 시간동안 이용한 후

자리를 옮기고 또 다른 IP address를 할당받는 것이 비일비재하다.

 

IP address 동적할당을 위한 세 가지 프로토콜

- RARP (1985년까지 쓰였지만, 더 이상 사용되지 않는다.)

- BOOTP (1985 - 1993, DHCP의 원조격이라고 할 수 있다.)

- DHCP (1993 - , BOOTP를 확장했다고 볼 수도 있다.)

현재는 DHCP가 널리 쓰인다.

 

BOOTP (BOOTstrap Protocol)

- Host가 자신의 boot time에 IP parameter를 설정한다.

- IP address, boot file name, boot file을 가지고 있는 server를 제공

- 이 뿐만 아니라, default router, netmask 또한 알려줘 정상적인 네트워킹이 가능하도록 해준다.

- UDP를 사용해 메시지를 보내고 서버는 UDP Port 67, 클라이언트는 UDP Port 78를 사용해 통신한다.

- 호스트는 255.255.255.255의 limited broadcast address를 사용해 서버에 메시지를 보내는데,

기본 네트워크 정보를 제공받기 전, BOOTP 서버가 어디있는지 모르기 때문이다.

 

DHCP (Dynamic Host Configuration Protocol)

- 1993년에 디자인 되었으며, BOOTP의 확장이므로 유사한 부분이 매우 많다.

- BOOTP와 같은 포트 넘버를 사용한다. (server: 67, client: 68)

- IP 주소의 임시 할당을 지원한다. (lease)

- IP address, default gateway router, DNS server, subnet mask의 IP 구성에 필요한 파라미터를 제공한다.

- DHCP는 BOOTP 클라이언트와 상호운용 가능하다.

 

DHCP Exchange

- 기본적으로 다음 구성을 가진다.

Discover: DHCP 서버를 찾는다.

Offer: DHCP 서버들은 client에게 제안을 한다. (이 때, DHCP server가 여러개라면 각각의 offer가 날아올 것이고

client는 그 중 하나의 서버에 응답하면 된다.)

Request: 사용하고 싶은 구성을 서버에 전달한다.

ACK: IP 구성에 필요한 파라미터들과 리스 타임이 제공되며, IP address가 할당되게 된다.

 

DHCP message type

1 DHCPDISCOVER 1 octet rfc2132[13]:Section 9.6
2 DHCPOFFER 1 octet rfc2132[13]:Section 9.6
3 DHCPREQUEST 1 octet rfc2132[13]:Section 9.6
4 DHCPDECLINE 1 octet rfc2132[13]:Section 9.6
5 DHCPACK 1 octet rfc2132[13]:Section 9.6
6 DHCPNAK 1 octet rfc2132[13]:Section 9.6
7 DHCPRELEASE 1 octet rfc2132[13]:Section 9.6
8 DHCPINFORM 1 octet rfc2132[13]:Section 9.6
9 DHCPFORCERENEW 1 octet rfc3203[14]:Section 4
10 DHCPLEASEQUERY 1 octet rfc4388[15]:Section 6.1
11 DHCPLEASEUNASSIGNED 1 octet rfc4388[15]:Section 6.1
12 DHCPLEASEUNKNOWN 1 octet rfc4388[15]:Section 6.1
13 DHCPLEASEACTIVE 1 octet rfc4388[15]:Section 6.1
14 DHCPBULKLEASEQUERY 1 octet rfc6926[16]:Section 6.2.1
15 DHCPLEASEQUERYDONE 1 octet rfc6926[16]:Section 6.2.1
16 DHCPACTIVELEASEQUERY 1 octet rfc7724[17]:Section 5.2.1
17 DHCPLEASEQUERYSTATUS 1 octet rfc7724[17]:Section 5.2.1
18 DHCPTLS 1 octet rfc7724[17]:Section 5.2.1

- DCHPRELEASE란 lease time이 종료돼, 자동으로 반환되기 전

클라이언트가 사용이 다 끝났다고 생각하면, 서버에게 release를 보내 IP주소를 스스로 반환하는 것이다.

 

DHCP lease time

- DHCP는 lease time을 이용해 임시 할당을 지원하게 된다.

- 서버가 정보를 제공할 때, T1(Renewal Time), T2(Rebinding Time)를 제공하게 되는데 클라이언트는 IP address 갱신을 위해 이 값이 사용된다.

- T1은 lease time의 50%, T2는 lease time의 87.5%에 해당한다.

클라이언트는 T1의 시간이 지났을 때, 갱신을 시도하고 이 때 갱신하지 못하면 T2 시간에 다시 갱신하게 된다.

두 번 모두 갱신에 실패한다면, IP address는 반환되고 초기 상태로 돌아간다.

 

DHCP with relays

- 현대에는 같은 네트워크 세그먼트에 존재하지 않고, 원격 DHCP 서버를 통해 IP를 구성하는 것이 흔하다.

- 서버와 클라이언트는 중간에 릴레이를 해주는 라우터 하나를 끼게 된다.

- 클라이언트는 라우터(relay agent)와 기존 DHCP 통신을 하게 되고, 라우터는 서버와 unicast로 통신한다.

- 패킷의 hop count가 1이라면 DHCP가 릴레이 됐음을 확인할 수 있다.

 

DHCP rapid commit

- discover, offer, request, ack의 단계에서 offer와 request를 생략한다.

 

DHCP vulnerability

- DHCP exhaustion attack

DHCP 서버에 무수한 요청을 보내, IP address가 고갈되게 하는 공격이다.

- DHCP MITM attack

255.255.255.255로 DHCP discover가 왔을 때, 자신이 DHCP 서버인 척 패킷에 응답한다.

default gateway router를 자신의 주소로 설정하게 만들면,

해당 클라이언트가 default gateway router로 보내는 패킷을 모두 받을 수 있게 된다.