CISCO IOS로 DHCP Server 만들기

DHCP (RFC 2131/2132)

 

1. DHCP Overview

2. DHCP Message Type

3. CISCO IOS로 DHCP 서버 만들기

4. Windows Server로 DHCP 서버 만들기

5. Linux로 DHCP 서버 만들기

CISCO의 Router나 L3 Switch에 DHCP 서버를 구성하기 위해서 가장 먼저 설정하여야 하는 것이 ‘DHCP Pool’ 이다. ‘DHCP Pool’은 DHCP로 IP address를 할당할 Network 영역과 DHCP로 할당할 정보들을 정의하는 DHCP 정책이다. ‘DHCP Pool’설정에 대한 간단한 예시를 먼저 살펴보기로 하자.
Router> enable
Router# configure terminal
Router(config)# ip dhcp pool DHCP_POOL_1
Router(dhcp-config)# network 172.16.1.0 /24
예시 설정을 보면 [ip dhcp pool Pool_Name] 명령어를 통하여 ‘DHCP_POOL_1’이라는 DHCP Pool을 생성한후, [network Network] 명령어를 사용하여 DHCP로 IP를 할당하고자 하는 Network 범위를 설정하였다. 그런데, Router나 L3 Switch는 여러 Interface를 가지고 있을 텐데, Pool에 설정된 ‘172.16.1.0/24’ Network 영역의 IP address는 어느 Interface에 연결된 장비에게 할당할 것인가?
DHCP Pool’에 설정된 Network 영역의 대상은 누구인가?

그 조건은 매우 단순하다.  DHCP Discover Message를 받은 interface의 IP address가 설정한 Network 내에 포함되어 있으면 대상으로 간주한다. 예를 들어, Router의 Interface가 다음과 같다면 가정해 보자.

Router# show ip interface brief
Interface          IP-Address   OK? Method Status Protocol
GigabitEthernet0/0 172.16.1.129 YES NVRAM  up     up
GigabitEthernet0/1 172.16.1.1   YES NVRAM  up     up
GigabitEthernet0/2 10.10.45.5   YES NVRAM  up     up
GigabitEthernet0/3 10.10.25.5   YES NVRAM  up     up

Network으로 설정한 ‘172.16.1.0/24’ 내에 IP address가 포함된 interface는 Gi0/0(172.16.1.129)과 Gi0/1(172.16.1.1) 두개 뿐이다. 그러므로, 해당 interface로 DHCP Discover Message를 받게되면 설정한 DHCP Pool 정책이 적용되게 된다.

서로 다른 Pool에 Network이 겹치면 어떻게 되는가

그렇다면, Pool 설정시 서로 다른 Pool에서 Network이 겹치게 되면 무슨 일이 발생하는가? 일단,  Network 범위를 동일하게 설정할 수 없다.

Router(config)# ip dhcp pool TEST
Router(dhcp-config)# network 172.16.1.0 /25
% A pool already exists for network 172.16.1.0 / 255.255.255.128.

하지만, 범위가 다르다면 설정이 가능하다.

Router(config)# ip dhcp pool TEST
Router(dhcp-config)# network 172.16.1.0 /24

이런 경우, 두개 Pool 내용이 모두 적용되며, 동일한 정책에 대하여 다른 값이 설정되어 있는 경우는 Longest-match에 의해 보다 자세한 Network 영역을 가지고 있는 Pool의 정책 값이 적용된다. 다음의 예를 살펴보자.

Router(config)# ip dhcp pool DHCP_POOL_1
Router(dhcp-config)# network 172.16.1.0 /24
Router(dhcp-config)# dns server 172.16.1.101

Router(config)# ip dhcp pool DHCP_POOL_2
Router(dhcp-config)# network 172.16.1.0 /25
Router(dhcp-config)# default-router 172.16.1.1

Router(config)# ip dhcp pool DHCP_POOL_3
Router(dhcp-config)# network 172.16.1.128 /25
Router(dhcp-config)# default-router 172.16.1.129

이렇게 설정을 하면 172.16.1.0/24 내에 있는 모든 장비는 DNS Server를 ‘172.16.1.101’로 할당 받을 것이다. 그리고, ‘172.16.1.0/25’와 ‘172.16.1.128/25’는 독립된 Network이기 때문에 각각 별도의 default gateway가 필요하다. 이렇게 각 Network 별로 상이한 정보를 할당해야 하는 경우는 작은 Pool을 만들어서 정책을 적용하여 주면 된다.

학교 다닐 때 배웠던 교집합, 합집합을 잘 그리면 DHCP 설계를 쉽게 핤 수 있다.

DHCP 설계를 위한 교집합과 합집합

위와 같은 정책을 DHCP Pool로 구성한다면 다음과 같이 될 것이다.

Router(config)# ip dhcp pool DHCP_POOL_1
Router(dhcp-config)# domain-name itbestpath.com
Router(dhcp-config)# dns-server 172.16.1.101 8.8.8.8
Router(dhcp-config)# netbios-name-server 172.16.3.100
Router(dhcp-config)# default-router 172.16.1.1
Router(dhcp-config)# lease 3

Router(config)# ip dhcp pool DHCP_POOL_2
Router(dhcp-config)# domain-name itbestpath.com
Router(dhcp-config)# dns-server 172.16.1.101 8.8.8.8
Router(dhcp-config)# netbios-name-server 172.16.3.100
Router(dhcp-config)# default-router 172.16.2.1
Router(dhcp-config)# lease 0 12

이것을 회사 공통 정책과 부서별 상이한 정책으로 구분하면 다음과 같이 도식화할 수 있을 것이다.

Router(config)# ip dhcp pool DHCP_POOL_All
Router(dhcp-config)# domain-name itbestpath.com
Router(dhcp-config)# dns-server 172.16.1.101 8.8.8.8
Router(dhcp-config)# netbios-name-server 172.16.3.100

Router(config)# ip dhcp pool DHCP_POOL_1
Router(dhcp-config)# default-router 172.16.1.1
Router(dhcp-config)# lease 3

Router(config)# ip dhcp pool DHCP_POOL_2
Router(dhcp-config)# default-router 172.16.2.1
Router(dhcp-config)# lease 0 12
Gateway나 Server에 Static IP address 설정이 필요하다면?

단일 Network 내에 DHCP IP address 영역과 Static IP address 영역이 함께 존재할 수 있다.  DHCP Server를 구성하기 전에 Static IP address가 이미 사용되고 있다면, GARP나 ICMP를 이용하여 IP address 충돌(Conflict)를 감지할 수 있다. 하지만, IP address 할당 시점에 해당 IP address가 사용되지 않거나 장비가 오프라인 상태로 되어 있으면 Static IP address를 DHCP Server가 다른 장비에 할당하게 되는 문제가 발생하게 된다.

이 문제를 해결하기 위해서는 DHCP Server가 Static IP address 영역에 대해서는 다른 장비에 설정하지 않도록 해야 한다. 그때 사용하는 명령어가 [ip dhcp excluded-address]이다.

만일, gateway 주소(172.16.1.1, 172.16.2.1)와 Server 영역(172.16.1.100 ~ 172.16.1.120)을 제외하고 싶다면 다음과 같이 설정하면 된다.

Router(config)# ip dhcp excluded-address 172.16.1.1
Router(config)# ip dhcp excluded-address 172.16.2.1
Router(config)# ip dhcp excluded-address 172.16.1.100 172.16.1.120

여기까지 학습하면 CISCO IOS를 이용해서 기본적인 DHCP Server를 구성할 수 있을 것이다. 이 외에도 다양한 DHCP 설정들이 있는데, 이 부분은 추후에 하나씩 알아나가기로 하자.