CentOS 7 - DHCP Server
✔ DHCP(Dynamic Host Configuration Protocol) Server
- 클라이언트의 요청이 있을 경우 IP 등을 부여해 주는 서버
- UDP 67번 포트(서버), UDP 68번 포트(클라이언트)
◾DHCP 동작 방식
메시지 이름 | 보내는 곳 | 설명 |
DHCP Discover | Client | Client가 BroadCast로 DHCP Server를 찾는 패킷 |
@ | Server | ARP or ICMP로 Client에게 할당할 IP 주소가 같은 네트워크 대역에 있는지 확인하는 패킷 |
DHCP Offer | Server | 서버 Pool에 있는 IP 설정 등을 Client에게 전달하는 패킷 |
DHCP Request | Client | Client가 전달 받은 정보를 다시 Server에게 확인하는 패킷 |
DHCP Ack | Server | Server가 Request 패킷의 내용을 확인 후 Client에게 응답하는 패킷 |
@ | Client | Client는 Ack 패킷을 받은 후에 DHCP IP 적용함 |
◾임대 시간
IP를 사용할 수 잇는 시간 | |
종류 | 예) |
default : 기본 임대 시간 | default-lease-time 시간(초); |
MAX : 최대 임대 시간 | max-lease-time 시간(초); |
MIN : 최소 임대 시간 | min-lease-time 시간(초); |
◾임대 연장
종류 | 설명 | |
Renewal Time(T1) | 임대 시간의 50% 지난 시점에 요청 | |
DHCP 서버로 Request 패킷을 보냄(Unicast) | ||
Rebinding Time(T2) | 임대 기간의 7/8이 지난 시점에 요청 | |
DHCP Discover 패킷 전송(Boradcast) |
◾특정 클라이언트에게 고정 IP 주소 할당
/etc/dhcp/dhcpd.conf
host [이름] {
hardware ethernet [MAC 주소]
fixed-address [IP 주소]
}
◾DHCP Server 구축
1. 서비스에 필요한 패키지 찾기
2. 패키지 버전 확인
# yum info dhcp
3. 패키지 설치
# yum install -y dhcp
4. 설정 및 확인 (시작을 해야 가능한 경우도 존재)
# vim /etc/dhcp/dhcpd.conf
※ 인터페이스 순서가 중요한 듯
5. 서비스 시작
# systemctl restart dhcpd
6. 서비스 확인
# systemctl status dhcpd
7. 방화벽 설정
# firewall-cmd --add-service=dhcp --permanent
# firewall-cmd --reload
8. 방화벽 설정 확인
# firewall-cmd --list-all
9. 포트 상태 확인
# netstat -nltp | grep dhcp | tcp 포트 확인 |
# netstat -anp | grep dhcp | udp 포트 확인 |
10. IP 할당 받은 Client 확인
# vi /var/lib/dhcpd/dhcpd.leases
※ DHCP Relay (Router에 설정)
- DHCP 서버가 다른 네트워크에 존재할 때 BroadCast 패킷을 넘겨주는 역할 하는 것
- 라우터와 DHCP 서버가 서로 통신을 하며 받은 패킷을 네트워크 내로 보내줌
- 게이트웨이 역할을 하는 인터페이스에 설정
(config-if)# ip helper-address [DHCP Server IP]
※ Router - DHCP 서버 구축
R(config)# ip dhcp pool [풀 이름]
R(dhcp-config)# network [네트워크 대역] [서브넷 마스크]
R(dhcp-config)# default-router [게이트웨이 주소]
R(dhcp-config)# dns-server [DNS 서버 주소]
R(config)# ip dhcp excluded-address [제외할 IP 주소]
R(config)# ip dhcp excluded-address [제외할 시작 IP 주소] [제외할 마지막 IP 주소]
R# show ip dhcp binding