다음 이전 차례

4. DHCP 서버 셋업

4.1 유닉스를 위한 DHCP 서버

흔히 말하는 유닉스 스타일의 OS에서 사용할 수 있는 DHCP 서버의 종류는 다양하다. 이것들은 상용 또는 무료의 형태로 배포된다. 무료 소프트웨어중 매우 인기 있는 것중 하나가 Paul Vixie/ISC DHCDd이다. 가장 최근의 버전은 1.0이고, 현재 2.0이 베타 테스트 중이다. 하지만 우리는 1.0으로 문서를 작성하였고 아직은 1.0을 사용하기를 권고한다. 다음 사이트에서 받을 수 있을 것이다.

ftp://ftp.isc.org/isc/dhcp/

다운로드 후 압축을 풀고 생긴 디렉토리로 들어가 다음의 과정을 밟는다.

./configure
아마 설정을 하기위해 어느정도의 시간이 걸릴 것이다. 다 되면
make;make install
을 통하여 쏘스를 컴파일하고 설치한다.

4.2 네트워크 설정

설치가 끝나고나면 ifconfig -a 명령을 통해 다음과 같은 내용을 볼 수 있을 것이다.


eth0      Link encap:10Mbps Ethernet  HWaddr 00:C0:4F:D3:C4:62
          inet addr:183.217.19.43  Bcast:183.217.19.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2875542 errors:0 dropped:0 overruns:0
          TX packets:218647 errors:0 dropped:0 overruns:0
          Interrupt:11 Base address:0x210

만일 3번째 라인에 있는 MULTICAST 라는 단어가 보이지 않는다면 멀티캐스트를 지원하도록 커널 컴파일을 다시해야 할 것이다. 하지만 대부분의 시스템에서는 멀티캐스트가 지원되고 있을 것이다. 다음 과정은 255.255.255.255를 위한 라우팅을 추가해 주어야 한다. DHCPd의 README 파일에서 인용해 보면

어떤 선택된 클라이언트 - 예를 들어 windows 95 시스템 - 와 잘 부합되어 돌아가는 dhcpd를 위해서, 데몬에서 대상 IP 주소인 255.255.255.255와 패킷들을 함께 보낼 수 있어야 한다. 불행히도 리눅스는 255.255.255.255를 내부 서브넷 브로드캐스트 어드레스로 설정해 버리고 만다. 이런 결과는 DHCP 프로토콜과 부합되지 않는다. 물론 많은 DHCP 클라이언트에서는 이런 문제점이 드러나지 않는다. 하지만 몇몇 클라이언트(모든 마이크로소프트사의 클라이언트)에서는 문제가 있다. 아마 DHCPOFFER 메세지를 서버로부터 받을 수 없다는 경고가 나올 것이다.

다음의 명령행으로 추가한다.

route add -host 255.255.255.255 dev eth0

만일

255.255.255.255: Unknown host

라는 응답을 받는다면 /etc/hosts파일에 다음의 엔트리를 추가한 후

255.255.255.255 all-ones

다시 한번 라우팅을 한다.

route add -host all-ones dev eth0

혹은 이런 방식도 가능하다.

route add -net 255.255.255.0 dev eth0

당연한 이야기지만 eth0은 물리적인 네트워크 디바이스의 이름이다. 다른 이름을 쓴다면 적절히 바꿔주길 바란다.

4.3 DHCPd의 옵션

이제 DHCPd를 설정해야 한다. 설정 파일은 /etc/dhcpd.conf이다. 없다면 만들도록 한다. 일반적인 방법으로는 IP address를 임의로 설정하게 하는 것이다. 이것은 다음과 같은 설정으로 가능하다.


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.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
   range 192.168.1.150 192.168.1.200;
}

위의 설정으로는 클라이언트에게 192.168.1.10에서 192.168.1.100까지 그리고 192.168.1.150부터 192.168.1.200까지의 IP 어드레스를 할당할 것이다. 클라이언트가 적절한 시간내에 응답을 하지 않는다 하더라도, 우선적으로는 600초 동안 IP 어드레스를 할당한다. 그렇지 않는다면 최대한 7200초를 할당한다. 또한 서버는 각 클라이언트로 하여금 서브넷 마스크를 255.255.255.0으로 쓰도록 알려준다. 192.168.1.255는 브로드 캐스트 어드레스이고, 192.168.1.254는 라우터나 게이트웨이를 가리킨다. 물론 도메인 네임 서버 역시 세팅되어있다. 만일 특정 이더넷 카드를 가진 클라이언트에게 특정한 IP주소를 주고 싶다면 다음과 같은 방법으로 할 수 있을 것이다.


host haagen {
   hardware ethernet 08:00:2b:4c:59:23;
   fixed-address 192.168.1.222;
}

이 것은 이더넷 어드레스로 08:00:2b:4c:59:23를 가진 네트워크 카드를 설치한 컴퓨터에 192.168.1.222의 IP 어드레스를 할당해 준다.

또한 여러가지 옵션들을 섞어 이용할 수도 있다. 즉 어떤 클라이언트는 고정적인 IP 어드레스를 가지고 있고(서버들) 다른 것들은 다이나믹한 IP 로 할당하기를 바란다면 다른 옵션들을 이용하여 세팅 가능하다(ex wins server addresses, time server 등등) 더 자세한 것이 알고 싶다면 dhcp.conf의 매뉴얼을 참고하기 바란다.

4.4 서버 실행하기

단순하게는

/usr/sbin/dhcpd
라고 명령을 주는 것만으로 간단히 실행 할 수있다.(혹은 부트 스크립트에 넣는 방법 역시 유용하다) 만일 최초로 실행해 볼때 여러가지 설정 사항들에 대해 확인해 보고 싶다면 다음과 같은 명령으로 디버깅 모드에 포그라운드 모드로 사용할 수 있을 것이다.

/usr/sbin/dhcpd -d -f
자 이제 DHCP를 지원하는 클라이언트를 부팅시키고 서버의 콘솔에 뜨는 메세지를 점검하자. 오류를 발견할 지도, 자신의 실력에 감탄할 지도 모른다.


다음 이전 차례