dhcp > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

dhcp 정보

기타 dhcp

본문

dhcp

23.1 개요
DHCP (DYNAMIC HOST CONFIGURATION PROTOCOL)
IP 주소 설정과 서브넷 구성설정은 약간 어렵기도 하고 시간도 많이 드는 작업입니다. 또 네트워크에 시스템을 추가하거나 제거하는 일이 자주 있는 경우나 노트북을 자주 연결하거나 하는 경우에는 매우 귀찮은 일을 해야 합니다. 다행히도 이 과정을 자동화하는 몇가지 방법이 구현되어 있습니다.
최근에 가장 많이 사용되는 방법은 DHCP입니다. DHCP는 호스트의 네트워크 설정 즉 IP 주소, 게이트웨이, DNS 등을 자동으로(동적으로) 설정해주는 서비스입니다. 서버측면과 클라이언트측면이 있는데 일반 컴퓨터나 노트북 심지어는  (하드)디스크 없는 컴퓨터에도 사용됩니다

23. 2 DHCP 의 작동방식
DHCP는 DHCP 서버, DHCP 클라이언트, DHCP 릴레이 에이전트라는 세 개의 구조로 이루어져 있습니다. 
기본적인 진행은 다음과 같습니다. 
컴퓨터가 시동되면 클라이언트는 DHCP 서버를 찾는  브로드캐스트를 합니다. 브로드 캐스트를 받은 서버는 IP 주소, 서브넷 마스크, 기타 설정에 필요한 인수들을 클라이언트에게 넘겨줍니다. 이전에 비슷한 기능을 하는 프로토콜이 BOOTP 이었습니다. DHCP 는 BOOTP 와 호환되면서 그것을 확장한 것입니다.
DHCP는 임의의 지속적인 주소를 상황에 따라 자동적으로 혹은 수동적으로  제공합니다. 또 TCP/IP 인수들을 클라이언트의 요구에 맞게 제공합니다.

23. 3 DHCP 설치
dhcpd 는 데몬이고 클라이언트 프로그램 pump, dhcpcd, dhclinent 등과 결합하여 작동하도록 클라이언트/서버구조로 설계되었습니다. 서버의 주요 설정 파일은 /etc/dhcpd.conf 입니다.  이 파일에 데몬이 알아야할 서브넷 설정 인수들이 들어있습니다.

 

 


23.3.1 준비사항
DHCP 소프트웨어가 설치되어 있는 지 확인하고 필요하면 다운 받아서 설치합니다. (관련사이트 참조)
커널이 멀티캐스팅을 지원하는지 확인합니다. (ifconfig –a 했을 때 MULTICASTING 라는 단어가 보이면 됩니다. )
일부 Win9x 를 위해 라우팅 테이블에 255.255.255.255 주소를 추가해 줍니다.
#route add  – host  255.255.255.255 eth0

23.4. 설치 방법
23.4 .1 site   http://www.rpmfind.net
23.4.2 설치
[root @edu00 linux]#mv dhcp-3.0b2pl24.tar.gz /usr/src; cd /usr/src
[root @edu00 src]#tar zxvf dhcp-3.0b2pl24.tar.gz
[root @edu00 src]#cd dhcp-3.0b2pl24
[root @edu00 dhcp-3.0bpl24]#./configure
[root @edu00 dhcp-3.0bpl24]#make
[root @edu00 dhcp-3.0bpl24]#make install
: multicast 지원여부
[root @edu00 dhcp-3.0bpl24]#ifconfig
  
23.2 서버 설정
[root @edu00 dhcp-3.0bpl24]#vi /etc/hosts
-----------------------
255.255.255.255 local-net
------------------------
[root @edu00 dhcp-3.0bpl24]#route add -host local-net dev eth0    
: 라우팅 경로에 추가(제한된 브로드캐스팅)
[root @edu00 dhcp-3.0bpl24]#vi /etc/rc.local  
: 부팅할 때마다 커널 라우팅 테이블에 브로드캐스팅 주소를 추가하기 위해
-------------------------------
if [ -f /etc/dhcpd.conf ]; then
echo -n "dhcpd"

 


route add -host local-net dev eth0
/usr/sbin/dhcpd
fi
-----------------------------------
[root @edu00 dhcp-3.0bpl24]#vi /etc/dhcpd.conf
--------------------------------------
# option은 DHCP 서버가 관리하는 네트워크에 관련된 공통사항을 설정
option domain-name "example.org"       
   
# DHCP 서버가 관할하는 네트워크 도메인의 네임서버를 지정
# option domain-name-servers 210.206.23.100;
option domain-name-servers ns1.example.org, ns2.example.org;

# subnet-mask, time-offset(시간지정), routers, lpr-servers, host-name,
interface-mtu, broadcast-address,
# static-routes(기본 라우팅 경로 이외의 경로지정), nis-domain, nis-servers,
dhcp-client-identifier(MAC 대신 지정자 사용)

# 클라이언트의 IP 주소 사용 요청에 대한 요청 제한 시간 부여, 단위는 초
default-lease-time 21600;

# 클라이언트의 IP 주소 지속 요청을 무시하고, 강제적으로 IP 주소 반환
max-lease-time 43200;

# 각각의 클라이언트에게 DNS로부터 얻어진 호스트 이름을 할당
# false - IP 주소만 할당
# true  - IP 주소와 DNS의 호스트 이름을 부여
get-lease-hostnames false;

# 현재의 DHCP 서버가 공식적인 경우 주석처리 하지 않는다.
#authoritative;

 

 

# DHCP 로그 메시지를 다른 파일에 기록
log-facility local 7;

# subnet은 DHCP 서버가 서비스하는 네트워크를 정의
# network 주소와 netmask로 정의
# 서버에 물리적으로 연결된 모든 서브넷에 대해서 subnet문이 존재해야 함
# dhcpd는 시동시에 완전한 서브넷 정보를 필요로 함
subnet 211.170.43.192 netmask 255.255.255.192 {
}

subnet 192.168.0.0 netmask 255.255.255.0 {
 option routers    192.168.0.254;
option subnet-mask  255.255.255.0;
option broadcast-address 192.168.0.255;
range    192.168.0.20 192.168.0.25;
host zeus {
  hardware ethernet  00:A0:24:CD:C7:20;
fixed-address      192.168.0.50;
}
}
--------------------------------------------
[root @edu00 dhcp-3.0bpl24]#touch /var/lib/dhcp/dhcpd.leases
[root @edu00 dhcp-3.0bpl24]#/etc/rc.d/init.d/dhcpd start

23.3 Host1 설정
[root @edu00 dhcp-3.0bpl24]#vi /etc/sysconfig/network
------------------------       
NETWORKING=yes
HOSTNAME=zeus.edu00.net
------------------------
[root @edu00 dhcp-3.0bpl24]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
-------------------------------------------

 


DEVICE=eth0
BOOTPROTO=dhcpd
ONBOOT=yes
------------------------------------------

[root @edu00 dhcp-3.0bpl24]#/etc/rc.d/init.d/network restart
[root @edu00 dhcp-3.0bpl24]#ifconfig eth0
[root @edu00 dhcp-3.0bpl24]#route  

23.4 DHCP CLIENTS
사용과 설정이 쉬운 여러 DHCP 클라이언트가 존재합니다.
dhcpcd
dhclient
pump

23.4.1 dhcpcd
dhcpcd는 RFC 2131,1541 에 근거한 Dynamic Host Configuration Protocol Client Deamon 입니다. DHCP 서버로 정보를 요청하고 아래의 파일에 저장합니다. (늘 그렇듯이 배포판에 따라 다릅니다)

명령에서 중요한 옵션
-d DHCP 요청을 기록합니다. 문제해결에 유용
-k 지금 작동중인 instance에 SIGHUP 신호를 보내고, 주소를 풀어줌
-D 서버의 도메인 네임을 사용, 기본값으로 지역적으로 정의된 도메인 네임 사용
-H 서버가 제공한 호스트 네임을 사용, 기본값으로 지역적으로 정의된 호스트 네임 사용
-l 초 단위의 요청된 임대시간, 꼭 필요한 것은 아니다.
-t  주소를 얻을 때까지 포기하지 않고 시도하는 시간

dhcpcd DHCP 서버로부터 정보를 요청하고 아래의 파일에 저장합니다.
/etc/dhcpc/resolve.conf  dhcpcd 가 생성하고 원본은 sv 확장자로 저장됩니다
/etc/dhcpc/hostinfo-<interface> 주소 임대정보를 포함

 


/etc/dhcpc/dhcpc-cache.<interface> 이전의 임대정보를 포함
/etc/dhcpc/dhcpcd-<interface>.exe 임대 정보가 바뀔때마다 실행될지 선택
/var/run/dhcpcd-<interface>.pid  dhcpcd 의 프로세스 id를 포함하는 파일, 스크립트에 유용함
dhcpcd  는 몇 개의 옵션을 가지고 있지만, 설정을 위한 다른 구조도 가지고 있습니다.

23.4.2 dhclient
다음에 설명하는 client는 관리자가 실질적으로 클라이언트의 행동을 설정할 수 있도록 해줍니다.
dhclient 는 서버프로그램과 Internet Software Consortium에서  함께 제공됩니다. 이것은 DHCP 와 BOOTP를 사용하는데 그 프로토콜요청이 실패하면 정적인 주소를 부여할 수 있습니다. rc 스크립트파일에서 다른것보다 먼저 실행되어야 하는데,다른 네트웍 서비스가 IP 주소를 필요로 하기 때문입니다. (모든 DHCP 클라이언트에서 마찬가지다)
명령 라인에서는 옵션이 필요없지만 /etc/dhclient.conf에서 인수를 가져오고 lease 정보를 /etc/dhclient.leases 에 저장합니다. 이 파일을 읽어서 먼저 번 부팅 때와 같은 정보를 얻으려 합니다. 매번 원래 파일은 지워지고 dhclient.lease 새 파일로 백업됩니다.
conf 파일에 포함된 인수들은 옵션인데, dhclient 는 이 파일이 없으면 기본값을 가지고 시작합니다.
dhclient.leases 는 일반 텍스트로 된 임대 정보를 형식에 맞추어 데이터베이스로 갖고 있습니다.
이용 가능한 파라미터는 다음과 같습니다.
bootp   dhcp 와 같음
expiration data  임대 유효기간
filename  디스크 없는 웍스테이션의 부트 파일
fixed-address  부여되는 정적 주소
interface  eth0 같은 적절한 인터페이스
options   서버가 부여한 옵션들(dhcpd.conf 파일에 있는 옵션에 상응합니다.)
rebind   원래의 서버에 접속이 실패했을 때를 위한 새로운 서버를 정의함
renew   클라이언트가 임대를 갱신하는 일자
server-name  디스크 없는 클라이언트를 위한 부트 서버의 이름

 

 

dhclient.conf  예제
#set times
timeout 120;
retry 120;
select-timeout 5;
reboot 5;
initial-interval 2;
#Define parameters for first network interface
interface "eth0" {
send host-name "host1.linux.com";
 send dhcp-client-identifier A6l32:99:02:BB:8A:01;
 send dhcp-lease-time 14400;
 supersede domain-name "linux.com";
 request subnet-mask, broadcast-address, routers, lpr-servers;
}
#Have a static IP address available in case a dynamic one is unabailable.
alias    {
interface "eth0";
 fixed-address 172.14.32.11;
 option subnet-mask 255.255.255.0;
}

times 부분이 포함하는 값들
 timeout 클라이언트가 서버의 응답을 기다리는 최대 시간
 retry 재시도를 하기까지 기다리는 초
 select-time-out 또다른 dhcp 서버가 요청에 응답하는지를 알아보기 위해 정보를
받은 후에도 기다려보는 시간을 초단위로 설정
 reboot  컴퓨터를 재부팅하지 않는다. 클라이언트가 예전의 IP 주소를 얻는 것을
시도하는데 드는 시간 초단위입니다. 마지막 재부팅 전에 사용됩니다.

interface  부분
 - 인수가 적용되는 특별한 인터페이스 정의 - 멀티홈 호스트에서 적용

 


 - 인터페이스 부분의 괄호 안에서 send 문의 번호를 가지고 있습니다.
 - dhcp 서버에게 특별히 무엇이 필요한지 알려줌
 - dhcpd.conf 의 옵션 부분과 상응합니다.
MAC 주소와 같은 정보를 포함하고 있어서, 서버가 클라이언트를 인식 할 수 있
도록 합니다.

명령 라인 옵션
-p 요청이 만들어지는 포트 기본값은 68번 포트
-d dhclient 가 포그라운드로 실행되도록 함, 디버깅에 사용

alias  명령
클라이언트가 서버로부터 주소를 얻는데 실패했을 때를 위해 정적인 주소를 정의하는데 사용됨. 그렇게 되었을 때 사용될 해당 인터페이스와 고정 주소,서브넷마스크등을 지정합니다.

Protocol Timing Options
 backoff-cutoff-time <time> 클라이언트가 설정요청을 포기할 수 있는 최대시간
 default { <options-list>} 서버가 제공하지 않는  옵션 값을 설정
 initial-interval <time>  0부터 1 사이의 임의의 숫자로 시간 간격을 설정합니다.
media "<media setup stuff>" 미디어 타입을 알 수 없는 네트웍 인터페이스의 설정인수들을 정의함
 reject <address> DHCP 서버가 이 주소를 제공하면 클라이언트가 무시하라고 알

 script "<script-name>" 부가적인 DHCP 설정 스크립트

이 클라이언트(dhclient)는 설정 수준이 높아서 사용자에게는 어렵습니다. 쉬운 client 가 있으니, dhcpcd 나  pump  를 사용합니다.

23.4.3 pump - 레드헷이 설계한 DHCP 클라이언트
레드헷 배포판에만 포함되어 있다.
사용하기 쉽지만 설정 옵션이 조금밖에 없다. ( lease 명령 : pump -I eth0 )
- NT에서 ipconfig 명령과 비슷한 문법체계를 가지고 있습니다

 


- ifup/ifdown 스크립트의 기초 명령어가 됩니다.
- 사용이 이더넷으로 제한됩니다.

pump 의 명령 옵션
-h --hostname=hostname 요청할 호스트이름
-i --interface=iface 설정할 인터페이스(보통 eth0)
-k --kill 데몬을 죽임(모든 인터페이스 disable)
-l --lease=hours 요청할 임대시간(시간으로)
--lookup-hostname 항상 DNS에서 도메인과 호스트이름을 찾음
-r --release 인터페이스 재임대
-R --renew 즉시 임대를 새롭게 함
-s --status 인터페이스 상태를 보여줌
-? --help 도움말을 보여줌
--usage 사용메시지를 간략히 보여줌

[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]
추천
0
  • 복사

댓글 0개

© SIRSOFT
현재 페이지 제일 처음으로