DHCP(Dynamic Host Configuration Protocol)
네트워크 관리자들이 조직 내 네트워크 상에서 IP 및 네트워크 서비스 (IP, netmask, DNS, Gateway)등 여러 설정을 관리 할당할 수 있는 서버이다. 효율적인 IP 관리와 보안적인측면 최근에는 노트북/핸드폰 같은 무선AP 관리에 많은 활용이 되고있다.
BOOTP 라는 protocol 의 일부를 가져와 만들어진것이 DHCP이다.
[참고] IP 주소의 종류
고정 IP : IP 를 직접 설정한 IP
유동 IP : IP 를 DHCP server로 부터 부여받은 경우
사설 IP : 라우팅이 안되는 IP (NAT 를 통해 사설을 공인으로 변경 시 공인망 이용가능)
공인 IP : 라우팅이 되는 IP
동작 원리
1. 같은 네트워크 내 존재 시. (DHCP DORA 과정)
1) Client --> Server : (Discover)
Client 에서 DHCP 서버가 있는지 찾기위해 동작
2) Server --> Client : (Offer)
discover 받은 server는 할당 가능한 ip의 유무를 확인 (ARP, ICMP) 이후 할당가능한 네트워크 서비스 정보를 담은 dhcpoffer 를 전달한다.
3) Client --> Server : (Request)
offer 로 받은 네트워크 서비스 정보를 적용 후 사용의사를 알리는 request를 server 에게 전송
4) Server --> Client : (Acknowledge)
request를 받은 server는 사용허가를 전달, client는 보내준정보를 받아서 설정하게 된다.
2. 다른 네트워크 에 존재 시. (일반 가정)
위 과정과 동일하나. client와 server 사이에 BOOTP Relay server 가 존재한다. 말그대로 정보를 중간에 전달하는 역할을 진행하며, DORA 과정내 client 와 server의 소통을 중간에서 중계하는 역할을 해준다.
DHCPserver 구성
1) DHCP Server
패키지: dhcp
데몬 & 포트 & 프로토콜: dhcpd(67/udp)
주 설정 파일: /etc/dhcp/dhcpd.conf (/usr/share/doc/dhcp-server/dhcpd.conf.example)
서브 설정 파일:
서비스: dhcpd.service
2) DHCP Client
패키지: dhcp-client
명령 & 포트 & 프로토콜: dhclient(68/udp)
주 설정 파일: /etc/dhcp/dhclient.conf
서브 설정 파일: /etc/dhcp/dhclient.d/
스크립트: /etc/NetworkManager/dispatcher.d/11-dhclient
1. 설정 파일 분석
매개변수 : 지시자와 값으로 이루어져잇는 형태.
선언 : {}로 묶여져있는 현태
/etc/dhcp/dhcpd.conf 파일분석
*기본적으로 /usr/share/doc/dhcp-server/dhcpd.conf.example을 참조하게됨, 자료를 가져와서 편집
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
* 클라이언트에 제공되는 도메인 이름과 도메인 서버 목록
default-lease-time 600;
max-lease-time 7200;
* 임대 기간 설정(단위: 초), 최대 임대 기간 설정(단위: 초)
# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;
* 동적 DNS 설정 여부 지정 ( none : 활용안함 / DNSserver 를 지정하면 활용 )
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
* DHCP 로그 메시지를 보낼때 메시지 종류 지정 ( local7 : /log/messges )
subnet 10.152.187.0 netmask 255.255.255.0 {
}
* 서비스를 제공하지 않을 네트워크 지정 ( {} 내 값이 없음 )
# This is a very basic subnet declaration.
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20;
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}
* 가장 기본적인 서브네트워크 선언 ( IP, netmask, gateway )subnet 10.254.239.32 netmask 255.255.255.224 {
range dynamic-bootp 10.254.239.40 10.254.239.60;
option broadcast-address 10.254.239.31;
option routers rtr-239-32-1.example.org;
* BOOTP 클라이언트에게 동적 주소를 제공하기 위한 선언
host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia";
server-name "toccata.example.com";
* 특정 MAC 주소를 가진 클라이언트에게 부팅 이미지를 제공하기 위한 설정
# set.host fantasia {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address fantasia.example.com;
}
* 특정 MAC 주소를 가진 클라이언트에게 고정으로 IP 주소를 할당하기 위한 설정
class "foo" {
match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}
shared-network 224-29 {
subnet 10.17.224.0 netmask 255.255.255.0 {
option routers rtr-224.example.org;
}
subnet 10.0.29.0 netmask 255.255.255.0 {
option routers rtr-29.example.org;
}
pool {
allow members of "foo";
range 10.17.224.10 10.17.224.250;
}
pool {
deny members of "foo";
range 10.0.29.10 10.0.29.230;
}
}
* 복잡한 형태의 네트워크 구성 정보 설정
[참고] 주요 선언 예시
서브넷 선언(Subnet Declaration)
subnet 192.168.1.0 netmask 255.255.255.0 { option time-offset -18000; # Eastern Standard Time range 192.168.1.10 192.168.1.100; } |
공유 네트워크 선언(Shared-network Declaration)
shared-network name { |
DHCP 서버를 통한 고정 IP 설정(Static IP Address using DHCP)
host linux140 { |
/etc/dhcp/dhclient.conf 파일분석
* 기본적으로 /usr/share/doc/dhcp-client/dhclient.conf.example 을 참조하게됨, 자료를 가져와서 편집
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;
* 해당 내용의 값을 요청하게 됨.
[실습] DHCP server 구축 및 유동IP 요청
* /var/lib/dhcpd/dhcpd.leases : DHCP의 네트워크 서비스 제공 이력 확인 파일.
[실습] DHPC server 구축 및 고정IP 요청
* NIC 카드를 추가하여 dhcp 를 받아올 수 있게 설정한다.
'모의해킹 침해대응 과정 > Liunx 관리' 카테고리의 다른 글
SSH server / day 22 (0) | 2021.04.26 |
---|---|
NTP server / day 22 (0) | 2021.04.26 |
Log server / day 21 (0) | 2021.04.23 |
SAMBA server / day 21 (0) | 2021.04.23 |
NFS server / day 20 (0) | 2021.04.22 |