IT/OracleLinux-1Z0460

DHCP

알콩달콩아빠 2022. 5. 19. 19:20
728x90
반응형

안녕하세요

 

뚱보 프로그래머 입니다.

 

DHCP 동적 네트워크죠 반대는 static 고정 네트워크

 

DHCP

1 DHCP 개요

DHCP(Dynamic Host Configuration Protocol)는 각각의 호스트에 필요한 네트워크 설정 사항들을 서버에서 지정한대로 설정하도록 원격에서 제어해 주는 프로토콜이다. IP 주소 설정, 서브넷 구성 설정 작업, 네트워크에 시스템을 추가하거나 제거하는 작업, 그리고 노트북을 자주 연결하거나 하는 경우에 DHCP를 이용하여 구현이 가능하다.

DHCP는 호스트의 네트워크 설정 즉 IP 주소, 게이트웨이, DNS  TCP/IP와 관련된 전반적인 내용을 사용자에게 자동으로(동적으로) 전송해서 설정해주는 서비스이다. 특히 일정한 시간마다 자동적으로 IP 주소를 변경시키기 때문에 사용자들이 고정 IP를 갖는 것을 방지할 수 있다. DHCP 설정으ㄴ 서버측 설정과 클라이언트측 설정이 있는데 일반 컴퓨터나 노트북, 심지어는 (하드)디스크 없는 컴퓨터에도 사용된다.

 

1) BOOTP

초창기 하드웨어의 가격이 그리 저렴하지 않을 때 서버만 하드 디스크를 가지고 있고, 나머지는 CPU와 네트워크 카드, 모니터 등만을 가지고 있는 시스템의 경우를 말한다. 서버에만 리눅스가 설치되어 있고, 나머지 시스템은 하드 디스크가 없기 때문에 운영체제를 설치할 수가 없고, 서버와 네트워크로만 연결되어 있는 경우인데, 클라이언트들은 부팅이 되면서 서버의 bootpd(bootp daemon)에 접속하여 운영체제를 다운로드 받아서 메모리에 올려놓고 사용하게 된다. 이때 필요한 프로토콜이 bootp이고 요즘은 거의 사용을 하지 않고 있다. 하지만 여전히 /etc/services 파일에는 67번과 68번 포트가 bootps(BOOTP 서버), bootpc(BOOTP 클라이언트)에 할당되어 있다.

현재는 거의 사용을 하지 않고 있기 때문에 BOOTP에 대한 개요만을 설명하였다.

 

2) DHCP

DHCP(동적 호스트 설정 프로토콜)는 우선 TCP/IP와 관련된 모든 내용들을 다 설정할 수 있다는 특징이 있다. 또한 하위 프로토콜인 BOOTP와 호환성을 유지하기 때문에 BOOTP 클라이언트를 지원할 수 있다. 뿐만 아니라 클라이언트에 할당된 주소를 영구적으로 설정할 수도 있고, 특정한 시간 단위로 할당할 수 있기 때문에 네트워크 관리자는 상당히 편리하게 이용할 수 있다.

본 교재에서는 ISC(Internet Software Consortium, BIND 소스관련 사이트, http://isc.org/products/DHCP)에서 제공하는 프로그램을 사용한다.

현재 버전 3에서 지원하는 기능들은 다음과 같다.

(1) DHCP 장애 극복 프로토콜 지원

(2) DHCP 서버와 클라이언트의 상태를 변경하거나 접근할 수 있는 API 제공

(3) 조건에 따른 수행

(4) 동적 DNS 업데이트

(5) 클래스별 주소할당 제한

DHCP IP 주소의 범위만을 지정하면 된다는 측면에서 BOOTP를 한층 발전시킨 것이다. IP 주소를 요구하는 컴퓨터에 선착순으로 IP 주소를 부여하고, 특정 MAC 주소에 대해서는 미리 IP 주소를 예약할 수 있다.

DHCP의 구성에 따른 장점이라면 관리자가 중앙에서 전체 인트라넷의 글로벌과 서브넷 고유의 TCP/IP 매개 변수를 지정하고, 예약된 주소를 사용하는 클라이언트의 매개 변수를 정의할 수 있다는 것과 클라이언트 컴퓨터에 수동으로 TCP/IP를 구성할 필요가 없으며, 클라이언트가 서브넷 사이에서 이동하면 컴퓨터가 시동될 때 TCP/IP가 자동으로 구성된다는 것이다. DHCP 서버는 LAN을 통해서 LAN에 접근을 요구하는 컴퓨터에 IP 주소를 제공하는 호스트이다. DHCP를 위한 준비사항으로는 우선 DHCP 서버에 대한 IP 주소를 고정적으로 할당해야 하며, 어떤 IP 주소의 사용이 자유로운지 알아야 한다.

 

2 DHCP 의 작동방식

DHCP DHCP 서버, DHCP 클라이언트, DHCP 릴레이 에이전트라는 세 개의 구조로 이루어져 있다.  

다음은 기본적인 진행과정이다.  

컴퓨터가 시동되면 클라이언트는 DHCP 서버를 찾는 브로드캐스트를 한다. 브로드캐스트를 받은 서버는 IP 주소, 서브넷 마스크, 기타 설정에 필요한 인수들을 클라이언트에게 넘겨준다. 이전에 비슷한 기능을 하는 프로토콜이 BOOTP이었다. DHCP BOOTP와 호환되면서 그것을 확장한 것이다. DHCP는 임의의 지속적인 주소를 상황에 따라 자동적으로 혹은 수동적으로  제공한다.  TCP/IP 인수들을 클라이언트의 요구에 맞게 제공한다.

 

3. DHCP 설치 및 설정

DHCP는 크게 3가지 종류의 프로그램으로 구성되어 있다.

(1) DHCP 서버

공식적인 IP 주소를 가지고 있고, 서버에서 실행 중인 프로그램으로, 일정한 범위의 IP 주소를 클라이언트 호스트들에게 자동적으로 할당하고, 기타 여러가지 설정 항목들을 클라이언트들에 설정해주는 역할을 하는 프로그램이다. DHCP 서버는 클라이언트에 할당된 IP 주소를 지속적으로 유지시킬수도 있고, 일정 기간만 할당한 후 IP 주소를 자동적으로 변경할 수도 있다. 또한 하나의 클라이언트에 둘 이상의 IP 주소를 부여할 수도 있다.

 

(2) DHCP 클라이언트

클라이언트는 DHCP 서버에게 서비스를 받는 호스트로, 부팅이 되면서 DHCP 서버에게 자신의 IP 주소를 요청하게 된다. DHCP 서버로부터 특정 IP 주소를 부여받게 되면 TCP/IP 설정은 초기화되고, 다른 호스트와 TCP/IP를 이용해서 통신이 가능하게 된다. DHCP 클라이언트 프로그램은 호스트의 네트워크 카드에 IP 주소가 없기 때문에 MAC(Medium Access Control) 주소(네트워크 하드웨어 주소:16진수 6바이트로 구성)를 이용해서 해당 호스트의 IP 주소를 할당받게 된다. DHCP 클라이언트는 일정 기간(리스 기간: lease time) 동안만 특정 IP 주소를 부여받게 되지만, 최신 버전의 경우에는 브로드캐스트로 인한 네트워크 트래픽을 줄이기 위해 IP 주소를 유지할 수 있다.

(3) DHCP Relay Agent

DHCP 서버와 DHCP 클라이언트 사이에서 DHCP 메시지를 전송하는 호스트나 라우터를 의미한다. DHCP Relay Agent가 존재한다는 것은 하나의 서브넷에 하나 이상의 DHCP 서버가 존재하지 않을 수도 있음을 의미하는데, 이는 DHCP 메시지가 라우터를 거쳐 외부로 전송될 가능성이 존재하기 때문에 해킹의 대상이 될 수 있다. 그러므로 DHCP Relay Agent를 사용하지 않는 것이 좋다.

 

(4) DHCP 설정 정보

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

 

1) 준비사항

먼저 ISC 사이트(http://isc.org/products/DHCP)에서 소스를 다운로드 받는다. 만약 RPM 패키지로 구성된 것을 http://www.rpmfind.net에서 다운로드 받을 수도 있지만, 소스를 다운로드 받게되면 다양한 플랫폼에서 사용이 가능하기 때문에 소스를 다운로드 받아서 컴파일한다.

다음의 과정을 따른다.

#tar xvzf dhcp-3.0b2pl24.tar.gz –C /usr/local

#cd /usr/local/dhcp-3.0b2pl24

#./configure

#make

#make install

먼저 소스를 /usr/local 디렉토리에 압축을 푼다. 다음 컴파일 환경을 구성하기 위해서 ./configure 명령을 Makefile을 생성하고, Makefile이 생성되었다면 make 명령으로 바이너리 파일을 생성하는 컴파일 과정을 진행한다. 컴파일이 끝난 후 make install 명령으로 해당 파일을 설정 위치로 보낸다.

 

DHCP 서버의 환경 설정에 앞서 커널이 멀티캐스팅을 지원하는지를 확인하고 나머지 설정을 수행하는데, 만약 멀티캐스팅을 지원하지 않는다면 커널이 멀티캐스팅을 지원하도록 커널 컴파일한다. 이경우 ifconfig를 입력해서 MULTICASTING이라는 단어가 출력되면 된다.

 

2) 사전 작업

성공적인 dhcpd의 실행을 위해서 /etc/hosts 파일에 다음을 추가한다.

255.255.255.255   local-net

그리고 제한된 브로드캐스팅이 가능하도록 라우팅 테이블에 255.255.255.255 주소를 추가해 준다.

#route add  –host  255.255.255.255 dev eth0

인터페이스의 이름은 시스템마다 달라질 수 있기 때문에 ifconfig 명령이나 netstat –ni 명령을 이용해서 확인한다. 그리고 부팅할 때마다 커널 라우팅 테이블에 위의 브로드캐스팅 주소를 추가하기 위해서 /etc/rc.d/rc.local 파일의 제일 아래에 다음의 내용을 추가한다.

# DHCP를 위한 로컬 브로드캐스팅 주소 추가

if [ -f /etc/dhcpd.conf ];  then

             echo –n “dhcpd”

             route add –host 255.255.255.255 dev eth0

             /usr/sbin/dhcpd

fi

 

3) dhcpd 명령

dhcpd [-p <UDP port #>] [-d] [-f] [-cf config-file] [-lf lease-file] [if0 […ifN]]

 

옵션

-p :  dhcpd가 사용할 UDP 포트 번호를 지정할 때 사용된다(일반적으로 67)

-d : 디버깅을 위한 옵션으로, 에러 메시지들은 stderr로 보내게 되고, 특별히 지정되지 않은 경우에는 syslogd를 통해서 기록된다.

-f : 데몬을 background 데몬으로 수행하지 않고 foreground 데몬으로 동작하도록 지정한다.

-cf : /etc/dhcpd.conf 파일 대신 다른 설정 파일을 읽어오도록 지정한다.

-lf : dhcpd가 주소 할당 정보를 dhcpd.lease 파일 대신에 다른 파일을 읽어오도록 지정하는 것으로,

리스 파일의 이름을 변경하면 클라이언트에 주소가 잘못 할당될 수 있기 때문에 주의한다.

-if0[..ifN] : 인터페이스를 지정하는 옵션으로, 둘 이상의 인터페이스를 가지고 있는 장비나 혹은

dhcpd가 정확한 인터페이스를 이용하지 못하고 있을 경우에만 사용한다.

 

4) 설치 과정

1] 소스 사이트

site : http://isc.org/product/DHCP

site : http://www.rpmfind.net

 

2] 설치

[root @edu00 linux]#tar zxvf dhcp-3.0b2pl24.tar.gz –directory=/usr/local ; cd /usr/local

[root @edu00 local]#cd dhcp-3.0b2pl24

[root @edu00 dhcp-3.0bpl24]#./configure

[root @edu00 dhcp-3.0bpl24]#make

[root @edu00 dhcp-3.0bpl24]#make install

[root @edu00 dhcp-3.0bpl24]#ifconfig

multicasting 지원여부를 확인한다.

  

4. 서버/클라이언트 설정

1) 서버 설정

(1) /etc/hosts

[root @edu00 dhcp-3.0bpl24]#vi /etc/hosts

127.0.0.1             localhost.localdomain       localhost

255.255.255.255 local-net

/etc/hosts 파일에 기본 설정 정보가 있다면 삭제하지 않고 위의 사항을 추가한다.

 

(2) 라우팅 테이블

[root @edu00 dhcp-3.0bpl24]#route add -host local-net dev eth0               

제한된 브로드캐스팅을 위해 라우팅 경로에 추가한다.

이 경우 route add –host 255.255.255.255 dev eth0으로 입력하여도 된다.

 

(3) /etc/rc.d/rc.local

[root @edu00 dhcp-3.0bpl24]#vi /etc/rc.local                     

부팅할 때마다 커널 라우팅 테이블에 브로드캐스팅 주소를 추가하기 위해 다음을 설정한다.

다음의 내용을 /etc/rc.d/rc.local 파일의 제일 아래에 추가한다.

if [ -f /etc/dhcpd.conf ]; then

echo -n "dhcpd"

route add -host local-net dev eth0

/usr/sbin/dhcpd

fi

 

(4) /etc/dhcpd.conf 예제 1

dhcpd는 시작할 때 /etc/dhcpd.conf 파일의 설정 내용들을 읽어오도록 되어있다. 그래서 시스템에 dhcpd.conf 파일이 존재하지 않는다면 dhcpd의 실행은 불가능하다. /etc/dhcpd.conf 파일에는 DHCP 서버가 서비스하게 될 네트워크와 클라이언트들에게 제공해 줄 정보들이 저장되어 있다. 또한 다른 설정 파일들처럼 주석은 #으로 시작하며, 특별히 대문자와 소문자를 구분하기 때문에 주의해야 한다. 각 라인은 세미콜론(;)으로 끝나며, 연관된 명령문은 중괄호({})로 묶이게 된다.

다음은 ISC DHCP의 샘플로 제공되는 설정파일이다.

[root @edu00 dhcp-3.0bpl24]#vi /etc/dhcpd.conf

option DHCP 서버가 관리하는 네트워크에 관련된 공통사항을 설정할 때 사용하는 것으로 다양하게 존재한다.

DHCP 서버가 관할하는 네트워크의 도메인 이름을 지정하는 옵션

option domain-name "example.org";

 

DHCP 서버가 관할하는 네트워크의 도메인 네임서버를 지정하는 옵션으로 IP 주소를 사용하거나 도메인 네임을 사용할 수 있다.

option domain-name-servers ns1.example.org, ns2.example.org;

혹은

option domain-name-servers 164.124.101.2;

 

이외에도 서브넷 마스크를 지정하기 위한 subnet-mask(없는 경우에는 아래의 subnet 항목을 이용),

시간을 지정하기 위한 time-offset(ETC : coordinated universal time으로부터 시작한 초 수), 라우터를 지정하기 위한 routers, 라인 프린터 서버를 위한 lpr-servers, 클라이언트가 사용해야 할 호스트 이름을 지정하기 위한 host-name, 클라이언트의 MTU(Maximum Transfer Unit)를 지정하기 위한 interface-mtu, 클라이언트 서브넷의 브로드캐스팅 주소 지정을 위한 broadcast-address, 기본 라우팅 경로 이외의 라우팅 경로 지정을 위한 static-routes, NIS(Network Information Services) 도메인 이름을 정의하기 위한 nis-domain, NIS 서버 지정을 위한 nis-servers, DHCP 클라이언트를 가리키기 위해 MAC 주소 대신 지정자를 사용하게 되는데 클라이언트 지정자를 위한 dhcp-client-identifier 등의 옵션들이 있다.

 

IP 주소를 클라이언트에게 할당한 후 해당 IP 주소를 지속적으로 사용할 수 있는 시간을 부여하지 않은 경우 기본적으로 사용할 사용할 시간을 지정(초단위)

클라이언트는 IP 주소를 몇 초 동안 사용할 것인지를 요청하게 되는데, 요청이 받아들여지면 다른 요소들과 함께 요청한 제한 시간이 부여된다.

default-lease-time 600;

 

클라이언트의 IP 주소 지속 요청을 무시하고, 무조건 강제적으로 이 시간 이후에는 클라이언트의 IP

주소를 반환하게 된다. 단위는 초

max-lease-time 7200;

 

각각의 클라이언트에게 DNS로부터 얻어진 호스트 이름을 할당하도록 설정하는 항목으로, false일 경우에는 IP 주소만을 할당받게 되고, true인 경우에는 IP 주소와 DNS의 호스트 이름을 부여하게 된다.

매번 호스트의 이름과 IP 주소가 변경되어서 호스트 이름을 찾는데 시간이 많이 소모되기 때문에 특정 서비스 호스트에 대해서는 고정 IP 주소를 부여하는 것이 좋다.

get-lease-hostname false;

 

로컬 네트워크에 대해서 현재의 DHCP 서버가 공식적인 경우 주석처리 하지 않는다.

#authoritative;

 

DHCP 로그 메시지를 다른 파일에 기록할 때 사용하는 항목으로, /etc/syslog.conf를 변경하여 다른 파일에 로그를 기록하게 할 수도 있다.

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;

}

}

 

다음은 기본적인 설정 방식으로, 32개의 호스트를 포함하는 서브넷에 대한 지정을 나타내고 있다. 해당 서브넷에서 DHCP가 동적으로 할당할 수 있는 IP 주소의 범위(range) 10~20까지 11개의 시스템에 대한 것이고, 해당 서브넷에 대한 라우터는 두개가 지정되어 있다. 해당 서브넷 상에서 DHCP 클라이언트가 주소를 요구할 경우, range 매개 변수가 지정한 범위내에 사용 가능한 주소가 존재한다면 그 중 하나를 할당해 주게 된다. 만약 range 매개 변수가 없는 경우라면 동적 주소 할당은 불가능하다.

주소의 범위는 항상 서브넷의 주소 공간에 있어야 한다.

subnet 211.170.43.0 netmask 255.255.255.224 {

range 211.170.43.10 211.170.43.20;

option routers rtr-43-01.example.org, rtr-43-0-2.example.org;

}

 

다음은 주소 범위가 두 개인 예이다. 이미 서비스하고 있는 서버의 IP 주소를 변경시키기 불가능하거나 기타 다른 이유로 인해서 특정 주소 영역을 사용할 수 없을 때 둘 이상의 range를 사용한다.

subnet 222.222.222.0 netmask 255.255.255.0 {

range 222.222.222.10 222.222.222.100;

range 222.222.222.150 222.222.222.250;

option broadcast-address 222.222.222.255;

option routers gw.linux.com;

}

 

특정 호스트에 대해서 특별한 정보를 제공하기 위해서 host를 사용한다. 아래와 같이 특정 주소가 지정되어 있지 않은 경우에는 IP 주소가 동적으로 할당된다.

host test {

hardware ethernet 00:A0:24:CD:C7:20;

filename “vmlinux.test”;

server-name “dabang.edu00.net”;

}

 

특정 호스트에 대해서 고정된 IP 주소를 부여할 수도 있는데, 여기에 사용된 IP 주소는 이전의 subnet 지정에서 동적으로 IP 주소가 할당되지 않도록 range 범위내에 두지 않도록 한다. 고정된 IP 주소가 할당된 경우에는 BOOTP DHCP 모두를 통해서 부팅이 될 수 있지만, host 항목에 고정된 IP 주소가 부여되지 않은 경우에는 DHCP만을 통해서 부팅이 가능하다. 반면 BOOTP subnet 내에 dynamic-bootp 플래그가 설정된 경우에 한해서만 부팅이 가능하다.

아래는 00:A0:24:CD:C7:20라는 하드웨어 주소를 갖는 시스템에 대해서 hodduck이라는 호스트 이름을 적용하고, 해당 장비에 222.222.222.10이라는 IP 주소를 고정적으로 할당한다.

host hodduck {

hardware ethernet 00:A0:24:CD:C7:20;

fixed-address 222.222.222.10;

또는 fixed-address “dabang.edu00.net”라는 DNS 네임을 적용할 수 있다.

}

 

여러 개의 클라이언트를 묶어서 클래스(class)로 정의한 후에 클래스에 기반해서 주소를 할당할 수도 있다. 아래의 예는 foo라는 클래스에 포함된 모든 클라이언트가 211.170.43.0/24 서브넷상의 주소를 갖도록 지정한다. 그리고 기타 클라이언트들은 192.168.10.0/24 서브넷상의 주소를 갖도록 지정한다.

class “foo” {

match if substring (option vendor-class-identifier, 0, 4) = “SUNW”;

}

shared-network 43-10 {

subnet 211.170.43.0 netmask 255.255.255.0 {

option routers rtr-43.example.org;

}

subnet 192.168.10.0 netmask 255.255.255.0 {

option routers rtr-10.example.org;

}

pool {

allow members of “foo”;

range 211.170.43.10 211.170.43.250;

}

pool {

allow members of “foo”;

range 192.168.10.10 192.168.10.230;

}

}

 

(5) /etc/dhcpd.conf 예제 2

모든 클라이언트에게 공통적으로 적용되는 옵션 부분

default-lease-time 1000;

max-lease-time 1000000;

option subnet-mask 255.255.255.0;

option domain “edu00.net”;

option domain-name-servers 164.124.101.2 211.170.43.136;

option lpr-servers 211.170.43.135;

option interface-mtu 1500;

 

해당 서브넷에 대한 지정

subnet 211.170.43.0 netmask 255.255.255.0 {

option routers 211.170.43.1;

option broadcast-address 211.170.43.255;

range 211.170.43.100 211.170.43.134;

range 211.170.43.137 211.170.43.254;

}

 

group은 매개 변수나 옵션을 그룹에 속해 있는 모든 클라이언트 호스트들에게 적용하기 위해 사용한다. , use-host-decl-names라는 매개 변수가 group에 포함된 모든 호스트에 그대로 적용된다.

group {

아래의 옵션은 dhcpd로 하여금 각각의 클라이언트에게 호스트 항목에 정의된 호스트 이름을 지정해 주며, host-name 옵션을 사용하지 않아도 되도록 지정

use-host-decl-names;

host test1 {

hardware ethernet 00:A0:24:CD:C7:20;

fixed-address 211.170.43.2;

}

host nana {

hardware ethernet 00:B0:34:EF:F5:30;

fixed-address 211.170.43.3;

}

}

위 설정을 이용해서 DHCP 서버가 가동중일 때, 00:A0:24:CD:C7:20인 클라이언트로부터 dhcpd에게 BOOTREQUEST 패킷이 왔다면, DHCP 서버는 다음의 정보를 담아서 DHCPOFFER 데이터를 전송하게 된다.

주소 : 211.170.43.2
호스트 이름 : test1
기본 라우터 주소 : 211.170.43.1
브로드캐스팅 주소 : 211.170.43.255
서브넷 마스크 : 255.255.255.0
도메인 이름 : edu00.net
도메인 네임 서버 : 164.124.101.2 211.170.43.136
프린터 서버 : 211.170.43.135
네트워크 카드의 MTU : 1500

 

(6) 서버 데몬 실행

[root @edu00 dhcp-3.0bpl24]#touch /var/lib/dhcp/dhcpd.leases

[root @edu00 dhcp-3.0bpl24]#/etc/rc.d/init.d/dhcpd start

 

2) 클라이언트 설정

(1) 클라이언트 네트워크 설정

[root @edu00 dhcp-3.0bpl24]#vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=zeus.edu00.net

[oot @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  

 

(2) DHCP 클라이언트의 IP 주소 획득 과정

[1] 클라이언트의 브로드캐스팅

DHCP 클라이언트가 부팅을 하게 되면 자신의 MAC 주소(하드웨어 주소)를 이용해서 DHCPDISCOVER가 모든 DHCP 서버에게 브로드캐스팅을 하게 된다.

 

[2] 서버의 응답

DHCP 서버들이 클라이언트의 요청에 DHCPOFFER로 응답을 하게 되며, 응답을 할 때는 클라이언트가 사용할 IP 주소와 리스(lease) 기간을 알려주게 된다.

 

[3] 할당받은 IP 주소를 브로드캐스트

DHCP 서버가 여러 대일 경우 일반적으로 서브넷을 서로 달리하기 때문에 클라이언트의 IP 주소들 중에서 가장 적합한 IP 주소를 갖게 되며, 적합한 IP 주소가 둘 이상 도달할 경우 가장 먼저 도달한 것을 선택하여 사용하게 된다. 동시에 자신은 어떤 IP를 갖게 되었다고 확인하기 위해서 DHCPREQUEST를 브로드캐스트하게 된다.

 

[4] 추가적인 정보 전달

DHCP 서버가 응답을 받게 되면 해당 IP 주소에 해당하는 여러가지 사항들(서브넷 마스크, DNS 네임 서버 주소, 게이트웨이 주소 등) DHCP 클라이언트에게 알려주며, DHCPACK(acknowledgement of the request)를 클라이언트에게 주게 된다.

 

3) DHCP CLIENTS

사용과 설정이 쉬운 여러 DHCP 클라이언트가 존재한다.  

dhcpcd

dhclient

pump

 

1] dhcpcd

dhcpcd RFC 2131,1541 에 근거한 Dynamic Host Configuration Protocol Client Deamon이다. DHCP 서버로 정보를 요청하고 해당 파일에 저장한다. (배포판에 따라 다르다.)

 

(1) 명령에서 중요한 옵션

-d          DHCP 요청을 기록한다. 문제해결에 유용하다.

-k         지금 작동중인 instance SIGHUP 신호를 보내고, 주소를 풀어준다.

-D         서버의 도메인 네임을 사용, 기본값으로 지역적으로 정의된 도메인 네임을 사용한다.

-H         서버가 제공한 호스트 네임을 사용, 기본값으로 지역적으로 정의된 호스트 네임을 사용한다.

-l           초 단위의 요청된 임대시간, 꼭 필요한 것은 아니다.

-t           주소를 얻을 때까지 포기하지 않고 시도하는 시간을 지정한다.

 

(2) 저장 파일

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를 포함하는 파일, 스크립트에 유용함

 

2] dhclient

dhclient는 관리자가 실질적으로 클라이언트의 행동을 설정할 수 있도록 해준다. dhclient는 서버프로그램과 Internet Software Consortium에서  함께 제공된다. 이것은 DHCP BOOTP를 사용하는데 그 프로토콜요청이 실패하면 정적인 주소를 부여할 수 있다. rc 스크립트파일에서 다른 것보다 먼저 실행되어야 하는데,다른 네트웍 서비스가 IP 주소를 필요로 하기 때문이다. (모든 DHCP 클라이언트에서 마찬가지다)

명령 라인에서는 옵션이 필요없지만 /etc/dhclient.conf에서 인수를 가져오고 lease 정보를 /etc/dhclient.leases 에 저장한다. 이 파일을 읽어서 이전 부팅 때와 같은 정보를 얻으려 한다. 매번 원래 파일은 지워지고 dhclient.lease 새 파일로 백업된다.

conf 파일에 포함된 인수들은 옵션인데, dhclient는 이 파일이 없으면 기본값을 가지고 시작한다.

dhclient.leases 는 일반 텍스트로 된 임대 정보를 형식에 맞추어 데이터베이스로 갖고 있다.

 

(1) 이용 가능한 파라미터들

bootp                             dhcp 와 같음

expiration data  임대 유효기간

filename                          디스크 없는 웍스테이션의 부트 파일

fixed-address                 부여되는 정적 주소

interface                         eth0 같은 적절한 인터페이스

options                           서버가 부여한 옵션들(dhcpd.conf 파일에 있는 옵션에 상응한다.)

rebind                             원래의 서버에 접속이 실패했을 때를 위한 새로운 서버를 정의함

renew                             클라이언트가 임대를 갱신하는 일자

server-name                   디스크 없는 클라이언트를 위한 부트 서버의 이름

 

(2) 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;

}

 

[1] times 부분이 포함하는 값들

timeout  클라이언트가 서버의 응답을 기다리는 최대 시간

retry      재시도를 하기까지 기다리는 초

select-time-out  또다른 dhcp 서버가 요청에 응답하는지를 알아보기 위해 정보를 받은 후에도

기다려보는 시간을 초단위로 설정

reboot  컴퓨터를 재부팅하지 않는다. 클라이언트가 예전의 IP 주소를 얻는 것을 시도하는데 드는 시간 초단위이다. 마지막 재부팅 전에 사용된다.

 

[2] interface  부분

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

- 인터페이스 부분의 괄호 안에서 send 문의 번호를 가지고 있다.

- dhcp 서버에게 특별히 무엇이 필요한지 알려준다.

- dhcpd.conf 의 옵션 부분과 비슷하다.

- MAC 주소와 같은 정보를 포함하고 있어서, 서버가 클라이언트를 인식 할 수 있도록 한다.

[3] 명령 라인 옵션

-p          요청이 만들어지는 포트 기본값은 68번 포트

-d          dhclient 가 포그라운드로 실행되도록 함, 디버깅에 사용

 

[4] 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)는 설정 수준이 높아서 사용자에게는 어렵다. dhcpcd pump를 사용한다.

 

3] pump - 레드헷이 설계한 DHCP 클라이언트

(1) 개요

레드헷 배포판에만 포함되어 있다.

사용하기 쉽지만 설정 옵션이 조금밖에 없다. ( lease 명령 : pump -I eth0 )

NT에서 ipconfig 명령과 비슷한 문법체계를 가지고 있다

ifup/ifdown 스크립트의 기초 명령어가 된다.

사용이 이더넷으로 제한된다.

 

(2) 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                                        사용메시지를 간략히 보여줌 

728x90
반응형

'IT > OracleLinux-1Z0460' 카테고리의 다른 글

ssh 란  (0) 2022.05.20
IP Masquerading Configuration  (0) 2022.05.20
삼바  (0) 2022.05.19
NFS란  (0) 2022.05.19
메일 서비스  (0) 2022.05.19