강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

DHCP 서버 설치(3.0)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle72.gif


배철수/리눅스월드 발행인

 

1. 참고 자료

이 글을 쓰는데 참고 한 자료들은 아래와 같다.

1) DHCP-mini-HOWTO
2) http://www.isc.org/products/DHCP/
3) dhcp-3.0b1pl14.tar.gz 패키지 내의 README 및 문서

 

2. DHCP란?

DHCP(Dynamic Host Configuration Protocol) 프로토콜은 TCP/IP 네트워크에서 호스트 컴퓨터가 IP 주소의 할당을 요청할 경우 이를 할당해 주며 동시에 호스트가 속한 네트워크에 대한 다른 정보(예: DNS 서버 주소)를 알려주는 역할을 한다. 네트워크 관리자는 DHCP 서버에 다른 호스트에 할당할 IP 주소 pool을 지정하며 IP를 할당받을 호스트에는 dhcp 클라이언트 프로그램이 설치되어야 한다. BOOTP 프로토콜도 DHCP와 비슷한 역할을 한다..

우리가 흔히 주위에서 볼 수 있는 DHCP 사용 예는 케이블모뎀으로 인터넷을 연결하는 경우이다. 윈도우에서 케이블모뎀으로 인터넷을 연결할 때는 제어판 ->네트워크 -> tcp/ip 의 등록정보에서 IP 주소를 “자동으로 IP 주소지정”으로 설정한다.

그러면 케이블모뎀 회사의 DHCP 서버에서 윈도우에 IP 주소를 할당해 주는데 여기에 DHCP 프로토콜이 사용된다. 여기서 케이블 모뎀 회사에는 DHCP 서버 프로그램이 작동하고 있고 윈도우에는 DHCP 클라이언트 프로그램이 사용되는 것이다. 따라서 리눅스에 케이블모뎀으로 인터넷으로 연결한다면 DHCP 서버 프로그램이 아니고 DHCP 클라이언트 프로그램을 설치해야 한다. 이 부분은 앞의 글을 참고 하기 바란다.

 

3. DHCP 서버를 왜 사용하는가?

여러분 회사에 인터넷을 연결했거나 또는 내부 랜에서 TCP/IP 프로토콜 사용하고 있다면 모든 피시에는 최소 3가지 정보를 입력해야 한다.

1) IP 주소
2) 게이트웨이 주소
3) DNS 서버 주소등이다.

그런데 IP 주소는 피시 마다 달라야 한다. 나머지 둘은 거의 변하지 않지만 어쨌든 바뀐다면 모든 피시에서 설정을 바꾸어야 한다. 피시가 몇 대라면 별 문제가 아니지만 수십 대라면 이런 작업을 하는게 간단하지는 않다. 이때 DHCP 서버를 설치한다면 모든 피시에서 IP 주소 중복 문제를 걱정할 필요가 없다. 게이트웨이 주소나 DNS 서버 주소가 변해도 피시마다 다시 지정할 필요가 없고 DHCP 서버에서만 변경하면 끝난다.
또 하나 본사와 사무소가 별도로 인터넷을 연결해 사용하는 경우 노트북 사용자가 다른 사무소에 출장을 가서 인터넷을 연결하려면 사무소마다 네트워크 셋업을 바꾸어야 한다. 그런데 두 사무소에 모두 DHCP 서버를 설치했다면 노트북 사용자는 어느 사무소에 가서든 랜케이블만 꼽으면 바로 인터넷 사용이 가능해 진다.

 

4. DHCP 서버 프로그램 설치

여기에 소개하는 DHCP 서버 프로그램은 ISC사(http://www.isc.org/products/DHCP/)의 dhcpd이다. 설치에 사용된 환경은 다음과 같다.

 

4.1  설치 환경

1) 서버 : 펜티엄 150, 메모리 48메가
2) 배포본 : 영문 레드햇 6.0
3) 랜카드(2 개) : 3com 3c509b-txnm
4) 커널 2.2.14

네트워크 설정은 아래와 같다.(두번째 랜카드만)

[root@aptiva network-scripts]# cat ifcfg-eth1
DEVICE=”eth1”
IPADDR=”192.168.1.21”
NETMASK=”255.255.255.0”
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=”yes”

eth0는 인터넷에 연결되어 있고 eth1은 내부 네트워크에 연결하여 있다. 윈도우 피시들은 eth1이 속한 네트워크에 연결되어 있고 이 서버로부터 DHCP로 IP 주소(192.168.1.x)를 할당받는다.
(보안상 공인 IP의 세번째 부분은 지웠다.)

[root@aptiva /root]# ifconfig
eth0  Link encap:Ethernet HWaddr 00:01:02:55:14:D5
        inet addr:211.104.xx.28 Bcast:211.104.xx.31 Mask:255.255.255.248
        UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
        RX packets:10663 errors:14 dropped:0 overruns:0 frame:14
        TX packets:1330 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0

eth1  Link encap:Ethernet HWaddr 00:01:02:36:87:76
        inet addr:192.168.1.21 Bcast:192.168.1.255 Mask:255.255.255.0
        UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
        RX packets:1 errors:0 dropped:0 overruns:0 frame:0
        TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0

lo     Link encap:Local Loopback
        inet addr:127.0.0.1 Mask:255.0.0.0
        UP LOOPBACK RUNNING MTU:3924 Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0

 

[root@aptiva /root]# netstat -nr
Kernel IP routing table
Destination       Gateway       Genmask           Flags   MSS   Window  irtt    Iface
192.168.1.21     0.0.0.0      255.255.255.255    UH        0         0         0     eth1
211.104.xx.28    0.0.0.0      255.255.255.255    UH        0         0         0     eth0
211.104.xx.24    0.0.0.0      255.255.255.248     U         0          0        0     eth0
192.168.1.0       0.0.0.0      255.255.255.0         U         0          0        0     eth
127.0.0.0          0.0.0.0      255.0.0.0                U          0         0        0      lo
0.0.0.0         211.104.xx.25   0.0.0.0                UG         0         0        0     eth0

 

 

4.2  multicast 확인

DHCP 에서 사용하는 인터페이스의 ifconfig 명령 결과에 multicast 단어를 확인한다. 없다면 커널을 컴파일해 multicast 지원을 넣어야 한다.

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

 

4.3  커널 옵션

커널을 컴파일해 사용하는 경우는 아래 두 옵션이 선택되어야 한다.

Networking options --->
<*> Packet socket
[*] Socket Filtering

위 두 가지가 선택되어야 한다.

배포본에서 제공하는 디폴트 커널을 사용할 경우 위 옵션이 빠져있으면 dhcpd 실행시 아래 에러가 나온다.

socket: Protocol not available - make sure CONFIG_PACKET (Packet socket) and CONFIG_
FILTER (Socket Filtering) are enabled in your kernel configuration!

 

4.4  프로그램 다운 받기

ftp://ftp.isc.org 에서 3.0b1pl14 버전을 다운 받는다.
 

[root@aptiva /root]# ftp ftp.isc.org
Connected to isrv4.pa.vix.com.
220 ProFTPD 1.2.0pre10 Server (ISC FTP Server) [ftp.isc.org]
Name (ftp.isc.org:root): ftp
331 Anonymous login ok, send your complete e-mail address as password.
Password:
230 Anonymous access granted, restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.

 

디렉토리는 /isc/dhcp 이다.

-rw-r--r-- 1029 9996 453404 Jun 24 01:20 dhcp-3.0b1pl14.tar.gz

 

4.5  압축 해제

임의의 디렉토리에서 압축을 해제한다. 필자는 /apps 디렉토리에서 작업을 했다.

tar zxvf dhcp-3.0b1pl14.tar.gz

아래처럼 디렉토리가 만들어 지고 그 안에 소스가 위치한다.

drwxr-xr-x 9 1029 9986 1024 Jun 27 14:44 dhcp-3.0b1pl14/

이 디렉토리 내에 있는 README 파일을 필히 읽기 바란다.

 

4.6  컴파일 및 설치

1) cd dhcp-3.0b1pl14
2) ./configure
아래 메시지가 나온다.

System Type: linux-2.2

3) make
4) make install

여기까지 진행했으면 실행 파일이 /usr/sbin 에 dhcpd란 이름으로 생성된다.

 

5. 설정 파일 작성

dhcpd의 설정 파일은 /etc/dhcpd.conf 이다. 아래는 기본적인 설정 내용 예이다.
 

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1,168.126.63.1;
option domain-name “linuxlab.co.kr”;}

 

1) subnet와 netmask는 DHCP 서버에서 IP를 할당하는 클라이언트들의 네트워크 주소와
    서브네트 마스크이다. 그 다음의 { }내의 모든 파라메터는 그 서브네트에만 적용된다.
    즉, subnet는 선언이다.

    dhcpd.conf 에는 여러 개의 subnet를 지정할 수 있고 각 subnet마다 파라메터를 달리 할
    수 있다. 예를 들어 피시가 60대인데 192.168.2.0 C 클라스 주소를 8개의 서브 네트로
    나눈 192.168.2.0 네트워크와 192.168.2.64 네트워크 두 개를 할당 받아 DHCP 서버에서
    윈도우 클라이언트에 할당하려면 subnet 선언은 두 개가 필요하다.

Subnet 192.168.2.0 netmask 255.255.255.224
Subnet 192.168.2.64 netmask 255.255.255.224

    이때 각 서브네트 내의 파라메터는 같지 않아도 상관없다. 예를 들어 서브네트마다 별도의
    router 명령을 지정해도 된다.(당연히 다를 것이다.)

2) range : dhcp 클라이언트에 할당할 주소이다. 위의 경우는 192.168.1.100부터
    192.168.1.200 까지 101개의 IP 주소를 클라이언트에 할당할 수 있다.

    range 는 여러 개를 지정할 수 있다. 만약 DHCP를 사용하지 않는 클라이언트가
    192.168.1.201 부터 209까지를 사용하고 있고 210부터 250까지의 주소도 dhcp
    클라이언트에게 할당하려면 range 192.168.1.210 192.168.1.250 줄을 추가하면 된다.

    즉, 그 랜에서 DHCP 서버가 설치되어 있어도 클라이언트에 고정 IP를 지정할 수 있다.
    단 그 주소는 DHCP 서버의 range에 지정하지 않아야 한다.

3) default-lease-time : dhcp 클라이언트가 요청을 하지 않는 경우 기본으로 IP를 할당해
    주는 시간이다. 이 시간내에 DHCP 클라이언트가 IP 사용을 계속할 것을 요청하면
    IP address는 계속 유지된다. (초) 윈98의 경우는 5분 간격으로 DHCP 요청이 들어온다.
    따라서 default-lease-time은 400(초) 이상을 지정하는게 좋다. 아래 dhcp.lease 내용이다.
 

lease 192.168.1.100 {
           starts 5 2000/06/30 03:16:19;
           ends 5 2000/06/30 03:26:19;
           hardware ethernet 00:01:02:3d:a8:32;
           uid 01:00:01:02:3d:a8:32;
           client-hostname “hansol”;
}
lease 192.168.1.100 {
          starts 5 2000/06/30 03:21:19;
          ends 5 2000/06/30 03:31:19;
          hardware ethernet 00:01:02:3d:a8:32;
          uid 01:00:01:02:3d:a8:32;
          client-hostname “hansol”;

 

4) max-lease-time : DHCP 클라이언트에게 최대로 IP를 할당해 주는 시간이다.
    이 시간이 경과하면 기존 할당된 IP 주소는 소멸한다.

 

6. /var/state/dhcp 디렉토리에 내용이 없는 dhcpd.lease 파일을 만든다.

1) mkdir /var/state
2) mkdir /var/state/dhcp
3) cd /var/state/dhcp
4) touch dhcpd.leases

이 파일이 없으면 dhcpd 실행시 아래 에러가 뜬다.
 

Can’t open lease database /var/state/dhcp/dhcpd.leases: No such file or directory -- check for failed database rewrite attempt! Please read the dhcpd.leases manual page if you don’t know what to do about this. exiting.

 

7. dhcpd 서버 프로그램 실행

아래 명령을 실행한다.

/usr/sbin/dhcpd eth1
(dhcp 서버가 IP 주소를 할당할 클라이언트가 속한 랜이 dhcp서버의 두번째 랜카드에 연결된 경우이다.)

아래 메시지가 나온다.
 

[root@aptiva dhcp]# dhcpd eth1
Internet Software Consortium DHCP Server V3.0b1pl14
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.

Please contribute if you find this software useful.
For info, please visit http://www.isc.org/dhcp-contrib.html

Listening on LPF/eth1/00:01:02:36:87:76/192.168.1.0
Sending on LPF/eth1/00:01:02:36:87:76/192.168.1.0
Sending on Socket/fallback/fallback-net

 

dhcpd 실행 명령을 rc.local 스크립트에 포함해야 부트시 실행된다.

 

8. dhcpd 실행 확인

1) ps ax 명령을 주면 아래 라인이 나온다.

541 S 0:00 dhcpd eth1

2) /var/log/messages 파일에 아래처럼 나온다.

Jun 30 10:47:58 aptiva dhcpd: Internet Software Consortium DHCP Server V3.0b1pl14
Jun 30 10:47:58 aptiva dhcpd: Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
Jun 30 10:47:58 aptiva dhcpd: All rights reserved.
Jun 30 10:47:58 aptiva dhcpd: Please contribute if you find this software useful.
Jun 30 10:47:58 aptiva dhcpd: For info, please visit http://www.isc.org/dhcp-contrib.html
Jun 30 10:47:58 aptiva dhcpd: Listening on LPF/eth1/00:01:02:36:87:76/192.168.1.0
Jun 30 10:47:58 aptiva dhcpd: Sending on LPF/eth1/00:01:02:36:87:76/192.168.1.0
Jun 30 10:47:58 aptiva dhcpd: Sending on Socket/fallback/fallback-net

3) /var/state/dhcp 디렉토리의 dhcpd.lease 파일에 DHCP 서버에서 할당하는 내역이 나온다.

(1) DHCP 클라이언트에서 연결이 없으면 아래 내용만 들어 있다.

# All times in this file are in UTC (GMT), not your local timezone. This is
 

# not a bug, so please don’t ask about it. There is no portable way to
# store leases in the local timezone, so please don’t request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don’t ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.

 

(2) 윈도우 98에서 DHCP서버로부터 IP를 할당 받았을 때는 할당한 IP 내역이 나온다.

 

9. DHCP 사용을 위한 윈도우 설정

윈도우의 제어판/네트워크/tcpip/등록정보의 설정이다.

00-7-7.gif

00-7-8.gif

00-7-5.gif

 

10. 연결 테스트

이상과 같이 윈도우의 tcp/ip 등록정보를 설정 후 먼저 리눅스에서 dhcpd를 실행하고 윈도우 피시를 리부팅하면 윈도 피시에 IP 주소가 할당된다. 아래가 할당한 내용이다.

00-7-4.gif1

이때 dhcpd 서버의 /var/state/dhcp/dhcpd.lease 파일 내용은 아래와 같다.
 

lease 192.168.1.100 {
starts 5 2000/06/30 02:06:18;
ends 5 2000/06/30 02:16:18;
hardware ethernet 00:01:02:3d:a8:32;
uid 01:00:01:02:3d:a8:32;
         client-hostname “hansol”;
}
lease 192.168.1.100 {
         starts 5 2000/06/30 02:11:18;
         ends 5 2000/06/30 02:21:18;
         hardware ethernet 00:01:02:3d:a8:32;
         uid 01:00:01:02:3d:a8:32;
         client-hostname “hansol”;
}
lease 192.168.1.100 {
         starts 5 2000/06/30 02:16:18;
         ends 5 2000/06/30 02:26:18;
         hardware ethernet 00:01:02:3d:a8:32;
         uid 01:00:01:02:3d:a8:32;
         client-hostname “hansol”;
}

 

/var/log/messages 에 아래처럼 할당 내용이 나타난다.
 

Jun 30 11:06:17 aptiva dhcpd: DHCPDISCOVER from 00:01:02:3d:a8:32 via eth1
Jun 30 11:06:18 aptiva dhcpd: DHCPOFFER on 192.168.1.100 to 00:01:02:3d:a8:32 via eth1
Jun 30 11:06:18 aptiva dhcpd: DHCPREQUEST for 192.168.1.100 from 00:01:02:3d:a8:32 via eth1
Jun 30 11:06:18 aptiva dhcpd: DHCPACK on 192.168.1.100 to 00:01:02:3d:a8:32 via eth1

 

11. 일부 2.0 커널을 사용하는 배포본에서 dhcp 서버를 가동하려면 아래의
      라우팅 명령을 부트시에 실행되게 해야 한다.

route add -net 255.255.255.0 dev eth0

마치면서

DHCP 서버는 회사내의 네트워크가 여러 개의 서브네트로 이루어져 있고 각 네트워크 간에 PC의 이동이 빈번한 경우 또는 노트북 피시 사용자가 많은 환경에서 골치 아픈 IP 어드레스 관리 문제를 단숨에 해결해준다. 또 원격지 사무소에 네트워크 관리자가 없는 경우 원격지에서 DHCP 서버만 관리하면 네트워크 관리를 쉽게 할 수 있는 장점이 있다.


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,042 명
  • 현재 강좌수 :  35,846 개
  • 현재 접속자 :  101 명