Linux

CentOS 7 - DHCP Server

seo07 2024. 7. 17. 10:44

✔ 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. 설정 및 확인 (시작을 해야 가능한 경우도 존재)

dhcp 설정 파일 찾기

# vim /etc/dhcp/dhcpd.conf

/etc/dhcp/dhcpd.conf 설정

※ 인터페이스 순서가 중요한 듯

 

5. 서비스 시작

# systemctl restart dhcpd

 

6. 서비스 확인

# systemctl status dhcpd

# 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

/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