[Ubuntu] 11. DHCP 서버 구성
카테고리: UBUNTU
🔔 DHCP란?
DHCP란 Dynamic Host Configuration Protocol의 약자로, 네트워크에서 IP 주소를 자동으로 할당해주는 프로토콜로 이를 통해 네트워크 장치들은 IP 주소를 수동으로 설정하지 않아도 자동으로 IP 주소를 획득할 수 있습니다.
-
IP 주소는 고정적으로 할당되어야 하지만, 수동으로 IP 주소를 할당하게 되면 네트워크 관리가 복잡해질 수 있습니다.
- 예를 들면, 네트워크 장치를 추가하거나 IP 주소를 변경해야 할 때 마다 모든 장치들의 IP 주소를 수동으로 설정해야 하는 번거로움이 발생하게 되는데 이를 해결하기 위해 DHCP가 등장하였습니다.

■ IP 주소 전달 방식

-
DHCP Discover : 클라이언트가 서브넷에 DHCP 서버를 찾는 메시지를 보내는 단계
-
DHCP Offer : DHCP 서버가 클라이언트에게 자신의 IP 주소와 클라이언트가 사용할 IP 주소, DNS 정보, IP 주소의 임대 시간 등을 전달하는 단계
-
DHCP Request : 클라이언트가 DHCP 서버에게 IP 주소를 사용한다고 통보하는 단계
-
DHCP Ack : DHCP 서버가 클라이언트에게 IP 주소의 사용을 확정하고 네트워크를 이용하도록 하는 단계
■ DHCP 메시지 종류
| 메시지 종류 | 설명 |
|---|---|
| DISCOVER (클라이언트) | 서버를 찾는 브로드캐스트 메시지 |
| OFFER (서버) | 클라이언트에게 동적 할당 할 IP를 제안하는 메시지 |
| REQUEST (클라이언트) | 선택된 서버를 알리는 메시지 |
| DECLINE (클라이언트) | IP 충돌이 확인되면 할당과정을 취소하기 위해 전달하는 메시지 |
| ACK (서버) | IP 할당과정의 정상적인 종료를 알리는 메시지 |
| NAK (서버) | IP 충돌 감지 등의 이유로 할당과정을 취소하기 위해 전달하는 메시지 |
| RELEASE (클라이언트) | 할당된 IP 해제 요청 |
| INFORM (클라이언트) | 현재 binding 된 정보 이외의 추가 정보를 요청하는 메시지 |
| FORCERENEW (서버) | binding 클라이언트의 정보를 삭제하고 재 요청을 하게 만드는 메시지 |
🔔 DHCP 서버 구성
■ DHCP를 설치 및 구성
$ apt -y install isc-dhcp-server
$ vi /etc/default/isc-dhcp-server
# line 4 : uncomment
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
# line 17 : 수신할 인터페이스 지정(사용자 환경에 맞게 변경)
INTERFACESv4="ens32"
$ vi /etc/dhcp/dhcpd.conf
# line 10 : 도메인 이름 지정
option domain-name "test.srv";
# line 11 : 네임서버의 호스트명 또는 IP 주소 지정
option domain-name-servers 168.126.63.1, 8.8.8.8;
# line 24 : DHCP 서버 중에서 해당 설정이 되어 있는 서버가 더 높은 우선순위를 가지게 되는 설정
authoritative;
# 네트워크 주소 및 서브넷 마스크 지정
subnet 192.168.219.0 netmask 255.255.255.0 {
# 게이트웨이 지정
option routers 192.168.219.2;
# 서브넷 마스크 지정
option subnet-mask 255.255.255.0;
# 임대 IP 주소 범위 지정
range dynamic-bootp 192.168.219.100 192.168.219.150;
}
$ systemctl restart isc-dhcp-server
■ Log 확인 - 서버의 IP 할당 과정 확인
$ tail -f /var/log/syslog
Jun 21 07:27:23 ubuntu systemd[1]: ua-timer.service: Deactivated successfully.
Jun 21 07:27:23 ubuntu systemd[1]: Finished Ubuntu Advantage Timer for running repeated jobs.
Jun 21 07:28:04 ubuntu dhcpd[2642]: DHCPDISCOVER from 00:0c:29:a4:73:ef via ens32
Jun 21 07:28:06 ubuntu dhcpd[2642]: ns1.example.org: host unknown.
Jun 21 07:28:06 ubuntu dhcpd[2642]: ns2.example.org: host unknown.
Jun 21 07:28:06 ubuntu dhcpd[2642]: DHCPOFFER on 192.168.219.100 to 00:0c:29:a4:73:ef via ens32
Jun 21 07:28:06 ubuntu dhcpd[2642]: DHCPDISCOVER from 00:0c:29:a4:73:ef via ens32
Jun 21 07:28:06 ubuntu dhcpd[2642]: DHCPOFFER on 192.168.219.100 to 00:0c:29:a4:73:ef via ens32
Jun 21 07:28:06 ubuntu dhcpd[2642]: DHCPREQUEST for 192.168.219.100 (192.168.219.10) from 00:0c:29:a4:73:ef via ens32
Jun 21 07:28:06 ubuntu dhcpd[2642]: DHCPACK on 192.168.219.100 to 00:0c:29:a4:73:ef via ens32
■ 임대된 IP와 클라이언트 정보 확인 - /var/lib/dhcpd/dhcpd.leases
$ cat /var/lib/dhcp/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.4.1
# authoring-byte-order entry is generated, DO NOT DELETE
authoring-byte-order little-endian;
server-duid "\000\001\000\001,%b\244\000\014)\240\272\220";
lease 192.168.219.100 {
starts 3 2023/06/21 07:28:06;
ends 3 2023/06/21 07:38:06;
cltt 3 2023/06/21 07:28:06;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:a4:73:ef;
uid "\001\000\014)\244s\357";
}
댓글 남기기