Network/테스트베드2009. 8. 1. 16:11
반응형
DHCPv6 서버 구축 및 설치 

1. DHCPv6

1.1. 개요

IPv6에서 주소 할당하는 방법은 크게 3가지가 있다. 128bits의 주소를 수동으로 설정하는 방법, DHCPv6 서버를 이용하여 주소를 할당받는 stateful 방법, 그리고 네트워크 주소는 라우터로부터 받고 호스트 주소는 MAC주소를 변환하여 이용하는 stateless 방법 등이 있다. 이 중 stateful 방법인 DHCPv6서버를 이용 주소할당 받는 것을 설명할 것이다.

DHCPv6는 IPv6 기반에서 주소를 동적으로 할당받을 수 있는 프로토콜이다. IP 주소, 라우팅정보, 운영체제 설치정보, 디렉터리 서비스 등을 각 네트워크 노드 사이의 로컬 구성 파일에 분산시키기 보다는 소수의 DHCP server 상에 이러한 정보와 네트워크 자원들의 관리를 집중화시킴으로서 유지비용을 줄일 수 있도록 하는 메커니즘이다. 또한, DHCPv4와 달리 Windows XP나 Windows server 2003에서는 DHCP client를 포함하고 있지 않기 때문에 DHCPv6 client에서 별도의 설정을 해야 주소 할당을 받을 수 있다.

본 문서에서는 DHCPv6의 메시지와 구성요소, 그리고 DHCPv6 server 설정 등에 대해 알아볼 것이다. 시험망 구성은 그림 1과 같이 DHCPv6 server를 ubuntu linux 8.04버전에서 구동하였고, client는 각각 ubuntu Linux 8.04 기반의 PC와 Windows XP 기반의 노트북에서 구현하였다. DHCPv6 server로부터 주소를 할당받는 것을 패킷 캡처 프로그램인 wireshark를 통해 확인하는 것이 본 문서의 최종목적이라 하겠다.

DHCPv6 프로토콜에서는 구성요소를 크게 세 가지로 구분하고 있다. IPv6 주소를 할당받기 원하는 client와 IPv6주소를 할당하는 server, 그리고 한 개 이상의 네트워크에 연결되어 중간에 매개체 역할을 해주는 relay 등 세 가지로 구성되어 있다. 본 문서에서는 relay는 배제하여 local network 상에서 시험망을 구성하였다.


 

그림 1). DHCPv6 시험망 구성


1.2. DHCPv6 메시지 포맷 및 종류

IPv4에서와 같이 DHCPv6는 UDP 메시지이다. 그림 2에서 보는 바와 같이 DHCPv6 메시지 포맷은 IPv4에서의 DHCP보다 훨씬 더 간단하다. Message Type 필드는 1Bytes로써 DHCPv6 메시지 타입을 가리키고, 표 2는 각 메시지 타입을 보여준다. Transaction-ID는 3Bytes로써 client에 의해 지정되고, DHCPv6 server는 이 값을 request 메시지에 대한 reply 메시지로 설정한다. Option 필드는 여러 옵션을 설정할 수 있도록 메시지 크기가 유동적이다.

그림 2). DHCPv6 메시지 포맷

Message Type (8 bits)

 

Transaction-ID (24 bits)

 

Options (variable size)

    
 

그림 3). DHCPv6 동작 과정


표 1). DHCPv6 메시지 타입 및 종류

Message Type 값

메시지 종류

내용

유사한 DHCPv4 메시지

1

Solicit

client에서 server로 요청

DHCPDiscover

2

Advertise

server에서 응답 보냄

DHCPOffer

3

Request

client에서 주소 요청

DHCPRequest

4

Confirm

client에서 IPv6 할당이 유효한지 알기 위해 링크 내의 모든 server로 전송

5

Renew

client에서 주소에 할당된 시간을 늘리고자 할 때

6

Rebind

client에서 Renew 메시지에 대한 응답을 받지 못했을 때

7

Reply

server에서의 응답

DHCPAck

8

Release

client에서 주소를 해제할 때

DHCPRelease

9

Decline

client에서 할당받은 주소가 사용 중이라는 것을 알릴 때

DHCPDecline

10

Reconfigure

server에서의 세팅이 변경되었을 때

N/A

11

Information-Request

client에서 server 정보를 요청할 때

DHCPInform

12

Relay-Forward

Relay agent에서 server로 메시지 전송

N/A

13

Relay-Reply

server가 Relay agent를 거쳐 client에게 메시지 전송


2. Linux에서의 DHCPv6 설정

Linux와 같은 unix 기반의 운영체제에서 사용할 수 있는 DHCPv6는 NER Netlab, Sourceforge.net, Dibbler, HP-UX 등 여러 종류가 있다. 그 중 우리는 무료로 제공되고 다양한 DHCPv6 옵션을 제공하며 linux kernel 2.4, 2.6버전과 Windows XP SP1, Windows server 2003 이상의 버전에서 사용이 가능한 Dibbler DHCPv6를 이용하여 테스트를 하였다. 관련 소프트웨어 및 데이터시트는 하단의 사이트로부터 구할 수 있다.


http://klub.com.pl/dhcpv6


2.1. Dibbler DHCPv6 다운 및 설치

Ubuntu 리눅스에서는 DEB 패키지 파일을 다운받아야 하기에 http://klub.com.pl/dhcpv6/debian/0.7.1-2-fixed/ 사이트로부터 dibbler-server_0.7.1-2_i386.deb, dibbler-client_0.7.1-2_i386.deb 파일을 다운받고, dpkg 명령어를 통해 해당 파일의 압축을 푼다. 그림 4는 압축을 해제하는 화면이다.


 

그림 4). 압축 해제 화면


압축 해제 후, 설정을 위해 필요한 파일인 server.conf, client.conf, relay.conf 파일을 /etc/dibbler 디렉터리로 이동시킨다. 그림 5는 각 파일들을 /etc/dibbler 디렉터리로 이동시킨 화면이다.


 

그림 5). conf 확장자 파일


또한, /var/lib/dibbler 디렉터리가 존재하는 지 확인하고, 디렉터리의 권한을 쓰기 가능(W)하도록 변경한다. 그림 6은 /var/lib/dibbler 디렉터리의 권한을 보여주고 있다.

 

 

그림 6). /var/lib/dibbler 권한 설정

2.2. Dibbler DHCPv6 server & client설정

2.2.1. server 설정

DHCPv6 server 설정 파일은 /etc/dibbler/ 폴더 내에 있는 server.conf 파일인데, server 설정을 위해 텍스트 에디터 프로그램으로 연다. Dibbler DHCPv6 sever에서는 인터페이스, 주소 범위, 기본옵션, 추가옵션 등의 설정을 할 수 있다.

인터페이스 설정은 표 2와 같이 인터페이스의 이름이나 인터페이스 번호 중 하나로 설정하면 된다. interfac e-name 을 사용할 시에는 ‘ifconfig’에서 나오는 이더넷 랜카드의 인터페이스 이름(ex> 로컬 영역 연결)을 입력하면 되고, number를 사용할 시에는 해당 랜카드 번호를 입력하면 되지만, 인터페이스 이름 사용하는 것을 추천한다.

표 2). interface 설정

iface interface-name

{

    interface-options

    class-options

}

 

or

 

iface number

{

    interface-options

    class-options

}


주소 범위는 표 3(a)와 같이 class-option과 address-pool(client에게 제공될 주소의 범위)을 설정할 수 있다. address-pool은 표 3(b)와 같이 주소의 최소 최대 범위 설정 방식과 prefix 설정 방식 중 중 하나로 설정할 수 있다. 이외에 기본옵션 및 추가옵션에 관한 DHCPv6 server 옵션 부분은 dibbler DHCPv6 데이터시트를 참고하길 바란다. 표 4는 DHCPv6 server 설정에 관한 간단한 예제이다.



표 3). (a) class 설정 (b) address-pool 설정

(a)

(b)

class

{

    class-options

    address-pool

}

pool minaddress-maxaddress

pool address/prefix

표 4). DHCPv6 server 설정 간단한 예제

iface eth0

{

  class

  {

    pool 2000::100-2000::10f

  }

}


2.2.2. client 설정

DHCPv6 client 설정 파일은 /etc/dibbler/ 폴더 내에 있는 client.conf 파일이다. Dibbler DHCPv6 client에서는 interface, IA(Interface Assciation), address option을 설정할 수 있다. 하지만 Interface, IA 설정 이외에 별다른 설정 없이도 DHCPv6 server로부터 주소를 할당받을 수 있다.


표 5). interface 설정

iface interface-name

{

   interface-options

   IA-options

   address-options

}

 

or

 

iface interface-number

{

   interface-options

   IA-options

   address-options

}


인터페이스 설정은 표 5과 같이 DHCPv6 server와 마찬가지로 인터페이스의 이름이나 인터페이스 번호 중 하나로 설정하면 된다.


표 6). IA 설정

ia

{

   IA-options

}


표 7). DHCPv6 client 설정 간단한 예제

iface eth0{

   T1 1800 //1800초(30분) 되는 시점에 renew 메시지 전송

   T2 2000 //client가 server로 Rebind 메시지 전송하는 시간

   ia{

      address{

              2000::1:2:3 //client에서 할당받기 원하는 ipv6 주소

            }

     }

}


IA는 Identity Association의 약자로 client와 server간에 주소 할당 정보를 교환 및 관리하는 부분이다. IA- options는 IA 옵션을 정의하는 부분으로써, 예를 들면 client가 renew 메시지를 server로 보낼 때 시간 확장 프로세스를 시작하는 시간인 T1을 정의하는 데 사용한다. 표 6은 client.conf 파일에 IA 설정하는 화면이고, 표 는 DHCPv6 client 설정에 관한 간단한 예제이다.


3. DHCPv6 동작 테스트

3.1. DHCPv6 server

그림 7과 같이 server.conf 파일에 서버 설정을 해준다. ‘#’으로 되어있는 부분은 주석을 나타내고, prefix를 2000으로 설정하였다. 그림 8은 ‘dibbler-server’ 명령어에 ‘status’ 파라미터를 입력하여 각 server, client, Relay의 상태를 조회할 수 있는 것을 나타내고 있다. ‘dibbler-server’는 Dibbler DHCPv6 server를 실행하는 명령어로 아무 옵션이 없이 명령어를 입력하면 관련 파라미터에 대한 도움말이 나온다.


 

그림 7). server.conf 설정


 

그림 8). server, client, relay 상태 확인


그림 9, 10는 DHCPv6 server를 ‘dibbler-server start’ 명령을 이용해 구동하고, ‘dibbler-server status’ 명령으로 구동 상태를 확인하는 그림이다. 구동 중인 server를 중단하고자 할 때는 ‘dibbler-server stop’ 명령으로 가능하다.


 

그림 9). DHCPv6 server 시작


 

그림 10). DHCPv6 server 구동 확인


3.2. DHCPv6 client

앞에서 설명했듯이 dibbler DHCPv6는 Windows에서도 주소 할당이 가능하기에 Windows XP 기반의 client와 ubuntu linux 기반의 client 등 두 client에서 DHCPv6 주소 할당 테스트를 하였다. Windows XP 기반의 client 설정은 http://klub.com.pl/dhcpv6 에서 다운받아 설치하면 된다.


3.2.1. Windows client

Server에서와 마찬가지로 client도 client.conf 파일을 설정해준다. 다만, client.conf 파일은 대부분 별다른 설정없이 공백으로 하는 것이 일반적이다. 본 테스트에서도 별다른 설정없이 client.conf 파일이 존재한다는 것만 확인하였다. 그림 11과 12는 각각 windows client의 IPv6 주소 할당 전과 후를 나타내고 있다. (IP Address 에 IPv6 link local 주소가 나타나지 않는다면, IPv6가 설치되지 않은 상황이다. 이럴 경우, ‘ipv6 install’ 명령을 입력하면 IPv6 주소 할당을 받을 수 있다). DHCPv6 server에서 설정한 prefix 2005:: 로 할당받은 것을 볼 수 있다.


 

그림 11). DHCPv6 client 설치 전의 windows client


 

그림 12). DHCPv6 client 설치 후의 windows client


3.2.2. Linux client

Linux client에서도 windows client와 마찬가지로 conf 파일에 별다른 설정없이 실행한다. 그림 13은 linux client의 IPv6 주소 할당 전을 나타내고 있다. 그림 14는 linux client를 실행 후, prefix 2005:: 로 IPv6 주소를 할당받은 후의 화면이다.


 

그림 13). DHCPv6 client 설치 전의 linux client


 

그림 14). DHCPv6 client 설치 후의 linux client


3.3. Wireshark에서의 동작확인

그림 15는 windows XP 기반의 노트북과 ubuntu linux 기반의 PC 상의 DHCPv6 client에 IPv6 주소를 할당한 후의 네트워크 구성도이다.


 

그림 15). IPv6 주소 할당 후 네트워크 구성도


3.3.1. Windows client

 그림 16에서 볼 수 있듯이 dibbler DHCPv6를 이용하여 windows client에서도 IPv6를 할당받을 수 있는 것을 알 수 있다. ‘Solicit’ 이나 ‘Request’ 메시지는 link local 내의 모든 노드에 멀티캐스트하는 것을 볼 수 있다.

 

그림 16). Windows client의 Wireshark 화면


3.3.2. Linux client

그림 17은 dibbler DHCPv6를 이용하여 linux client에서 IPv6를 할당받고, 해제하는 패킷까지 캡처한 화면이다. 여기서도 마찬가지로 ‘Solicit’, ‘Request’ 메시지는 link local 내의 모든 노드에 멀티캐스트하는 것을 볼 수 있고, ‘Confirm’ 메시지 또한 같은 방식으로 동작하는 것을 볼 수 있다. ‘Confirm’ 메시지는 표 1에서 설명했듯이 client에서 IPv6 할당이 유효한지 알기 위해 링크 내의 모든 server로 전송할 때 사용하는 메시지이다. Souce주소가 windows client의 link local 주소 ‘fe80::290:f5ff:fe53:84e9’ 인 것을 볼 수 있다.


 

그림 17). Linux client의 wireshark 화면

반응형

'Network > 테스트베드' 카테고리의 다른 글

IO 멀티플렉싱 서버 구현  (0) 2010.02.21
Posted by pmj0403