Linux Server 1일차(dhcp)

2022. 1. 17. 12:27Server

DHCP(Dynamic Host Configuration Protocol)

동적 호스트 설정 프로토콜이다. IP 라우터는 인터페이스 및 호스트에 IP 주소를 할당해 줄 수 있다. 과거에는 각 PC마다 고정 IP를 설정 해주었지만 그로 인해 오타로 인한 IP 설정 오류, 동일한 IP를 기입하여 IP 충돌 등의 문제가 발생했다. 또한 사용하지 않고 꺼 놓은 컴퓨터에도 모두 IP를 할당해주어 IP가 모자라는 문제도 발생하게 된다. 이러한 문제를 해결하기 위해 DHCP가 개발이 되었다.

※DHCP 서버가 기능상 문제가 발생하여 IP는 제대로 할당 해주지 못했을 시 169.254.0.0/16 대역을 임시로 할당해준다. 이 기능을 WINDOWS에서 APIPA(Automatic Private IP Addressing) 사설 IP 주소 자동 할당이라고 한다

DHCP 주요 구성정보 및 동적 할당

구성 정보

 기본 정보 : IP주소, 서브넷 마스크, 디폴트 라우트

 추가 정보 : 네임서버(DNS)IP주소

 기타 정보 : 홈 에이전트 주소, 디폴트 도메인 네임 등

동적 할당

 제한된 수량의 IP 주소를 재사용, 한시적 사용, 자동 재활용 등 가능

 

디스크 없는 컴퓨터에게, IP 주소 등 기타 구성정보를 제공 가능(과거 BOOTP의 주요 역할)

 지정된 서버로부터 IP 주소 및 부트스트랩 관련 구성정보를 얻을 수 있도록, 응답메세지 내에 파일 경로를 송부하여, 이를 이용하여 TFTP를 통해 나머지 구성정보 얻기가 가능하다.

 

DHCP 특징

클라이언트/서버 형태의 동작

 동적인 구성정보 요청/제공하는 프로토콜

  DHCP 클라이언트(요청) 및 서버(응답)가 동일 서브넷에 함께 있을 수도 서로 다른 망에

  분리될 수도 있다. 이경우 DHCP 중계 에이전트가 작동해야한다.

프로토콜 및 포트

 UDP 포트를 사용한다.

 사용 포트 번호

 DHCPv4 : 67 목적지포트, 68 출발지 포트

 DHCPv6 546 서버 송출, 클라이언트 청취, 547 서버 청취, 클라이언트 송출

DHCP 탐색(DHCPDISCOVER)/요청(DHCPREQUEST) 때 쓰이는 IP 헤더 내 IP 주소

 IP 헤더 내 발신지 주소 : 미확정이기 때문에 0.0.0.0를 사용한다

 IP 헤더 내 목적지 주소

  DHCPv4 255.255.255.255(BR주소)

  DHCPv6 All_DHCP_Relay_Agents_and_Servers (FF02::1:2)

          All_DHCP_Servers (FF05::1:3)

요청 받는 서버에서는 요청 클라이언트의 MAC 주소를 기억, 이를 IP 주소와의 매핑시 이용한다.

 

DHCP 이전 프로토콜과의 비교

RARP (지금은 사용하지 않는다)

 단점 : IP주소 만을 제공, 매 서브넷 마다 브로드캐스트 방식 필요

BOOTP (주로 디스크가 없는 호스트의 부팅을 위해 개발됨)

 IP 주소 및 부트스트랩 파일이 있는 호스트 내 경로만 제공

BOOTP와 역호환성

 동적인 DHCP, 부팅 시 자동으로 구성정보를 구성하는 BOOTP와는 상호 호환되며, 아울러보다 더 확장되고 진보된 형태를 띄고 있음

BOOTP와 패킷 구조가 거의 동일함

BOOTP로 동작하는 호스트도 DHCP 서버에 의해 정적인 주소 설정은 가능

 

BOOTP RARP의 두가지 약점을 보완하였으나, 정적이 프로토콜이라는 한계점을 갖고있어 이미 준비된 고정된 IP주소와의 바인딩만 가능하다(중간에 변경이 불가능하다)

 

 

BOOPT (Bootstarp Protocol)

1. 처음으로 부팅된 컴퓨터, 디스크를 갖지 않은 컴퓨터에게 IP 주소 등 구성정보를 제공

  정적으로 클라이언트/서버 형태의 구성 정보를 제공하는 프로토콜

2. 3가지 정보 제공 : IP 주소, 부트 파일 있는 서버 이름, 부트 파일 이름

※단, 지금은 거의 사용되지 않은 구형 프로토콜이다. 상위 버전인 동적인 DHCP와는 완벽 호환이 된다. BOOTP 클라이언트가 DHCP 서버와도 대화가 가능하다 IP UDP에 실려 전달되며, 동일 메세지 포멧 및 포트 번호 사용한다.

 

DHCP IP 주소 할당 방법 종류

 수동 할당(Manual Alloction)

  DHCP 서버의 관리자가 수동으로 개별 장비별(중요 호스트, 라우터 등)로 고정 설정

 자동 할당(Automatic Alloction)

  IP 주소의 영구적 독점 사용

 동적 할당(Dynamic Allocation) : 대부분이 이 방법을 사용한다.

  제한된 수량의 IP 주소 재사용, 한시적 사용, 자동 재활용

 

DHCP NAT 차이점

 사설 IP 주소공간을 별도로 매핑하는 NAT 방식과는 달리, DHCP는 확보한 공인 IP 주소공간 범위 내에서 사용자가 인터넷에 연결하려고 할 때, 실시간으로 기확보된 공인 IP를 하나씩 할당하는 방식을 취한다. 물론 IP 주소는 사용 후 반납하게 된다.

 

DHCP PPP 차이점

 망에 접속하는 순간 NAS 등에 의해 IP 주소 등의 매개변수를 할당받는 PPP 방식과는 달리, DHCP PC 부팅 또는 망 접속 시 DHCP 서버로부터 IP 주소 등을 동적으로 할당 받는다.

PPP Point-to-Point Protocol의 약자로 점대점 데이터링크 를 통해 3계층 프로토콜들을 캡슐화 시켜 전송하는 프로토콜이다. 주로 IP 전송 위자이나, 그 외의 여러 3계층 프로토콜의 복삽 전송도 가능하다.

 

DHCP 메세지 타입

DHCPDISCOVER(1) 클라이언트가 서버를 찾기 위해 브로드캐스팅 하는 메세지 (탐색)
DHCPOFFER(2) 서버가 클라이언트에게 할당 후보 IP 주소 제시(제안)
DHCPREQUEST(3) 서버를 선택한 클라이언트가 원하는 구성 요청(요청)
후보로 제시된 IP 주소의 사용을 요청
IP 주소의 유효시간 연장을 요청
DHCPDECLINE(4) 이미 사용중인 중복 주소임을 알고서 거부함(요청 수락 거부)
DHCPACK(5) 긍정 응답(요청 수락)
DHCPNACK(6) 부정 응답(요청 거부)
클라이언트의 요청 사항을 서버가 거부
DHCPRELEASE(7) 클라이언트가 정상적인 해제를 서버에게 요청
통상, 클라이언트는 그냥 전원을 끄므로, 후에 다시금 DHCPREQUEST로써 유효기간 연장 요청
DHCPINFORM(8) 클라이언트가 주소 정보 이외 추가 설정 정보를 얻기 위해 사용
, 주소 설정 정보이외의 추가 정보의 요청
DHCPFORCERENEW(9)  
DHCPLEASEQUERY(10)  
DHCPLEADEUNASSIGNED(11)  
DHCPLEASEUNKNOWN(12)  
DHCPLEASEACTIVE(13)  

 

DHCPDISCOVER (탐색)

1. 처음에는 클라이언트가 DHCP 서버를 탐색하는 브로드캐스트 메세지

 출발지 : 0.0.0.0

 목적지 : 255.255.255.255(브로드캐스트)

2. DHCP 메세지 포멧 내 필드

op 필드 : 1 (client -> server) (요청BOOTREQUEST)

flags필드 : 브로드캐스트('1000 0000 0000 0000')

xid 필드 : 클라이언트가 선택하는 랜덤한 32비트짜리 수(요청 및 응답을 짝 짓는데 사용)

ciaddr 필드 : Zero IP Address 값을 써넣음(아직 미확정이므로 편의상 0.0.0.0)

chaddr 필드 : 자신의 MAC 주소를 써넣음

 

DHCPOFFER 메세지(제안)

1. 클라이언트 DHCPDISCOVER 메세지에 서버가 할당 후보 IP 주소를 제시/응답하는 메세지

 출발지 : DHCP 서버의 IP 주소

 목적지 : 255.255.255.255(브로드캐스트)

2. DHCP 메세지 포멧 내 필드

op 필드 : 2(server -> client) (응답 BOOTREPLY)

flags 필드 : 브로드캐스트('1000 0000 0000 0000')

yiaddr : Your IP Address(4바이트) 클라이언트에 할당 IP 주소를 제시/제안

giaddr : Gateway IP Address(4바이트) 디폴트 게이트웨이 IP 주소

options : 임대 기간(DHCP Lease TIme)

 

 

 

 

 

DHCPREQUEST 메세지 (요청)

1. 클라이언트가 DHCP 서버에게 자신이 사용할 구성정보의 내역을 알려주며 요청

 출발지 : 0.0.0.0

 목적지 : 255.255.255.255(브로드캐스트)

2. DHCP 메세지 포멧 내 필드

op 필드 : 1(client -> server) (요청BOOTREQUEST)

flags 필드 : 브로드캐스트('1000 0000 0000 0000')

siaddr : 클라이언트가 선택한 DHCP 서버의 IP 주소

ciaddr : 클라이언트 자신이 사용하려는 IP 주소

xid : 클라이언트가 선택하는 랜덤한 32비트짜리 수(요청 및 응답을 짝짓는데 사용)

 

DHCPACK 메세지 (요청 수락)

1. DHCP 서버가 클라이언트 자신이 사용할 구성정보 제안에 대한 수락 메세지

 출발지 : DHCP 서버의 IP 주소

 목적지 : 255.255.255.255(브로드캐스트)

2. DHCP 메세지 포멧 내 필드

 op 필드 : 2(server -> client) (응답 BOOTREPLY)

 flags 필드 : 브로드캐스트('1000 0000 0000 0000')

 xid : 클라이언트가 선택하는 랜덤한 32비트짜리 수(요청 및 응답을 짝짓는데 사용)

 yiaddr : Your IP Address(4바이트)

 options

 

 

 

 

 

DHCP 임대 갱신 재연결 리바인딩 해제

임대 시간 (Lease Time : T)

 DHCP Client IP 주소 사용에 대한 임대시간 : 그 기간 동안만 사용 가능

 통상 임대시간은 디폴트 12~24시간(실제, 구현 시스템 마다 다르다)

 만일, 임대 시간 이후에도 계속 사용하려면, DHCP 서버에게 임대 연장을 요청해야 한다.

 

연장 요청 / 갱싱 (Renewal Time : T1 = T/2)

 임대 기간의 절반(50%, T1=T/2)이 지나면, 클라이언트는 임대 갱신 요청을 해야 한다.

 

리바인딩 (Rebinding Time : T2 = 7/8 T)

 원래 DHCP 임대 서버와의 갱신 최대 한계

 만일 원래 DHCP 서버와 리바인딩이 실패하면 다른 DHCP 임대 서버와 현재 임대를 연장 갱신

 해야한다.

 

재연결 (Reallocate)

 예기지못한 재부팅시에도 부팅전 설정을 그대로 재배당 받는 것

 

DHCP 타이머

DHCP 클라이언트에게 필요한 3개 타이머 (T1 < T2 < 만료)

갱신 타이머 (T1) : (기본값) 임대시간의 50%

리바인딩 타이머 (T2) : (기본값) 임대시간의 87.5%

 원래 임대 서버와의 갱신 실패시, 리바인딩 타이머를 기준으로하여 타 임대 서버에 연장 갱신

만료 타이머 : (기본값) 임대시간의 100%

 

 

 

DHCP Scope Option

 일련의 IP 주소 및 고나련된 구성정보로 이루어진 하나의 집합을 Scope라고 함

 하나의 Scope는 하나 이상의 옵션들을 클라이언트에게 제공할 수 있음

 

DHCP 주소 충돌 방지

DHCP 서버

 할당 전 핑 테스트로 확인 후 IP 주소 할당

DHCP 클라이언트

 할당 받은 IP 주소를 사용전 GARP로 중복 여부 확인 후, 사용중이면 DHCPDECLINE(요청 수락 거부) 송출

 

DHCP 서버

역할 구성정보의 유지, 저장, 전달, 관리의 주체(중앙집중화)
DHCP 서버는, 전체 클라이언트들의 구성 정보 관리를 위한 DB의 유지관리 필요
서버 위치 통상, 서브넷 당 1 DHCP 서버를 두나, DHCP Relay Agent를 사용하여 더 넓은 지역에 걸쳐 중앙집중도 가능
관리 방식 보통, 각 클라이언트별 MAC 주소를 식별자로 하여, 이를 DB화 하고 개별 관리함
관리 정보 IP 주소 범위, 임대 시간 길이 명세, 설정 매개변수, 정책 정보 등
정보의 저장 및 관리 보통, 영구적 메모리에 구성정보를 관리 및 저장함 심지어, 서버 재부팅시에도 클라이언트 기존 임대는 그대로 유지됨

 

DHCP 릴레이 에이전트(dhcprelay)

DHCP 서버가 없는 서브넷으로부터 다른 서브넷에 존재하는 1 이상의 DCHP 서버에게 DHCP또는 BOOTP요청을 중계(Relay) 해줌

다만 DHCP 릴레이 기능은, 제품 마다 설정,동작 방식 등이 달라 취급이 까다로움

 

 

 

DHCP 릴레이 에이전트 동작 설명

DHCP 서버가 동일 서브넷의 밖에 있을 경우에 다음과 같이 동작함 - 동일 서브넷내부에는 반드DHCP Relay Agent 있어야 한다.

DHCP 관리자는 네트워크 각 Subnetwork에 모두 DHCP Server를 둘 필요없이 통상적인 라우터또는 타 하여금 DHCP 메세지들을 전달토록 할 수 있음

DHCP클라이언트가 정보를 요청하면 . DHCP릴레이 에이전트는 그 요청을 지정된 DHCP 서버목록로 전송한다.

DHCP 서버가 이에 응답을 하면, 원래 요청을 보낸 네트워크상으로 그 응답을 브로드캐스트하거 유니캐스트함

DHCP릴레이 에이전트의 동작은 DHCP클라이언트에게는 그 존재를 알지 못 함

 

 

 

 

실습

Server : centos7

Client  : windows 10

 

DHCP 상황

1. 10.0.0.0/24 할당
2. 서버는 30대 운영중(Static IP, 네트워크 앞쪽부터 순차적 사용중)
3. DNS는 1차 2차 kornet 2차 google public DNS
4. Gateway는 네트워크 마지막 주소 사용중
5. 기본임대 시간 1시간, 최대임대시간 2시간
6. domain name은 본인이름 이니셜

 

 

1. Server 설정

yum install -y dhcpd

vi /etc/dhcp/dhcpd.conf -> $ 5 r 경로하면 파일이 복사

= cp /usr/share/doc/dhcp-4.2.5/dhcp.conf.example /etc/dhcp/dhcpd.conf (편집기에서 복사하는거랑 같은효과)

위에 보이는 설정 빼고는 필요없는 설정들이다.

 

마지막으로 systemctl start dhcpd를 실행하고 윈도우에서 지켜보자

 

 

2. Client 설정

 

초기 IP설정이다.

위와 같이 dhcp 서버로부터 IP를 할당 받지 않은 상태에서 ipconfig /renew를 해준다

renew를 하게 되면 DHCP서버로부터 IP를 제대로 할당 받게 되었다.

 

 

@ Windows만 이용 : APIPA ( 자동사설 IP할당)

 

 

 

실습2

주의 할점 2가지

1. 브로드캐스트 도메인이 2개이상이기 때문에 각각 라우팅을 해줘야 한다.

2. R2 F0/0에도 IP를 주어 대역대를 확보해야 한다.

 

 

 

기본 설정





R1
conf t
int s1/0
ip add 29.29.12.1 255.255.255.0
no sh
router rip
ver 2
no au
net 29.29.12.0

 



 

R2
conf t
int s1/0
ip add 29.29.12.2 255.255.255.0
no sh
int f0/0
ip add 10.10.10.1 255.255.255.0
no sh
router rip
ver 2
no au
net 29.29.12.0
net 10.10.10.0


 
 

 

1. DHCP Pool만들기

R1
ip dhcp pool DHCP_Test
network 10.10.10.0 /24 //할당 할 네트워크 지정
default-router 10.10.10.1 //디폴트게이트웨이 주소 설정
dns-server 8.8.8.8 //DNS
서버 주소 설정

exit
ip dhcp excluded-address 10.10.10.1 10.10.10.10 //클라이언트가 할당 받지 못하는 범위 설정

2. R2 Relay Agent로 만들기

R2
int f0/0 // Client가 포함된 서브넷의 인터페이스에 적용시켜준다.
ip helper-address 29.29.12.1 //dhcp 서버 주소를 써준다

3. client PC로 확인해보기

DHCP 패킷

맨 위 출발지 주소가 10.10.10.1로 바뀌어서 DHCP 서비스를 사용한다. Time table까지 확인하여 helper-address를 써서 브로드캐스트를 확장시켜 dhcp에 요청하는 패킷까지 유추할 수 있다.

 

R2 DORA

'Server' 카테고리의 다른 글

DHCP(실습)  (0) 2022.06.19
CA(Certification Authority) 인증기관  (0) 2022.06.13
CDN(Content Delivery Network)  (0) 2022.06.13
Linux Server 3일차(DNS)  (0) 2022.01.21
Linux Server 2일차(FTP)  (0) 2022.01.20