DHCP

로커스트·2021년 5월 24일
1

Linux 중급

목록 보기
4/4
post-thumbnail

DHCP?

DHCP는 Dynamic Host Configuration Protocol의 약자이며 쉽게 말하면 자동 아이피 할당 프로토콜입니다.

DHCP의 역할

자신의 네트워크 안에 있는 클라이언트 컴퓨터가 부팅 될때 자동으로 IP주소, 서브넷 마스크, 게이트웨이, DNS서버주소를 할당해 주는 역할을 한다.

DHCP의 장점

복잡한 IP설정을 자동으로 하기 때문에 효율적으로 사용하고 IP충돌문제를 해결해줄수 있다.

DHCP의 단점

DHCP서버에 의존적이므로 DHCP서버가 다운되면 IP할당을 받을수 없다.
-> 리눅스의 경우 IP를 못 받아온다 ( CentOS7 )
-> 윈도우의 경우 오류IP를 받아온다 ( IP 169.254.x.x , 서브넷마스크 255.255.0.0 )

DHCP와 NAT

DHCP서버는 자신의 네트워크 안에 있는 클라이언트 IP관리를 하는 것이다. 인터넷이 가능하게 해주는 것은 아니지만 DHCP서버에 NAT을 추가하여 적은 IP를 이용하여 인터넷을 가능하도록 해준다.



DHCP의 임대 과정

DHCP 임대 과정은 클라이언트가 서버와 통신하여 네트워크 정보를 받아 오는 과정을 의미한다.

  1. DHCP Discover Packet (DHCP 발견 패킷)
    DHCP서버가 누군지 모르니 Broadcast를 이용하여 DHCP Discover Packet을 전달한다.
    -> DHCP서버가 있는지 확인하는 패킷 ( 존재유뮤)
  1. DHCP Offer Packet ( DHCP 제안 패킷 )
    Discover Packet받은 DHCP서버는 클라이언트에게 DHCP Offer Packet를 보낸다.
    -> DHCP서버가 복수이면 먼저 받은 서버가 발급해준다 ( 선착순 )
    -> 클라이언트에게 IP 주소 및 TCP/IP 정보를 전달하는 메시지가 들어있다.

  2. DHCP Reqest Packet ( DHCP 요청 패킷 )
    DHCP Offer Packet받은 클라이언트가 서버에게 DHCP Reqest Packet을 보낸다.
    -> DHCP서버를 선택하고 그 서버에게 클라이언트가 사용할 네트워크 정보를 요청하는 메시지가 들어 있다.

  3. DHCP ACK Packet ( DHCP 응답 패킷 )
    DHCP Reqest Packet받은 서버가 클라이언트에게 DHCP ACK Packet을 보냄
    -> 클라이언트에게 IP주소 및 TCP/IP 정보 전달 메시지, 임대기간, 허가 의미도 있다.


DHCP임대기간

DHCP 임대기간의 50%가 경과했을때 갱신요청을 하며 서버가 무응답시에는 87.5% 경과했을때 다시 갱신요청을 하고 이때도 서버가 무응답시에는 처음으로 돌아가 DHCP Discover Packet을 서버에게 전달한다.

출처 : https://www.netmanias.com/en/post/techdocs/5998/dhcp-network-protocol/understanding-the-basic-operations-of-dhcp



리눅스 실습1 - DHCP서버 구축

#yum -y install dhcp

# cd /etc/dhcp/
# ls
dhclient-exit-hooks.d  dhclient.d  dhcpd.conf  dhcpd6.conf  scripts

# cat dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page

DHCP를 설치하고 설정파일인 dhcpd.conf를 확인해보면 설정을 위한 샘플링 파일이 있다는걸 확인할수 있다.

# cp /usr/share/doc/dhcp*/dhcpd.conf.example dhcpd.conf
cp: overwrite `dhcpd.conf'? y

# vim dhcpd.conf

샘플링 파일을 복사하여 DHCP서버의 설정을 변경할수 있다.

A slightly different configuration for an internal subnet. 
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.201 192.168.1.220;
  option domain-name-servers 8.8.8.8;
  option domain-name "internal.example.org";
  option routers 192.168.1.2;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
}

dhcpd.conf의 46번 라인에서 설정을 할 수 있다.

DHCP설정
subnet 192.168.1.0 -> 네트워크 대역
netmask 255.255.255.0 -> 서브넷 마스크
range 192.168.1.201 192.168.1.220 -> IP사용 가능한 범위
option domain-name-servers 8.8.8.8 -> DNS서버
option routers 192.168.1.2 -> 게이트웨이
option broadcast-address 192.168.1.255 -> 브로드캐스트
default-lease-time 600 -> 임대기간
max-lease-time 7200 -> 최대임대기간

위에 보이는것과 같이 DNS서버, 게이트웨이, 브로드캐스트는 옵션이다.

# systemctl start dhcpd
# systemctl enable dhcpd

설정이 끝났으면 DHCP서버를 실행한다.
-> 리눅스의 경우 numti을 이용하여 DHCP를 자동으로 변경하여 지금 만든 DHCP서버가 작동하는지 확인하다. ( systemctl restart network )
-> window의 경우 네트워크 설정에 자동IP할당으로 변경후 지금 만든 DHCP서버가 작동하는지 확인하다. ( ipconfig /release -> ipconfig /renew )

# cd /var/lib/dhcpd
# ls
dhcpd.leases  dhcpd.leases~  dhcpd6.leases
# cat dhcpd.leases

dhcpd.leases파일을 통해 DHCP서버를 통해 임대한 정보를 확인할 수 있다.



리눅스 실습2 - DHCP서버을 이용한 고정IP사용

DHCP 예약 주소란 ?

DHCP 예약 주소는 고정으로 IP를 지정 하지 않아도 서버에서 임대기간에 관계없이 항상 특정IP주소만 할당 받아서 사용하는 것을 의미한다.

프린터서버와 같이 유동적IP를 사용하면 매번 IP를 확인해야하는 번거러움을 줄일수 있다.

DHCP 예약 주소를 사용하기 위해서는 예약할 장치의 물리적 주소를 확인해야한다.

# cd /etc/dhcp/
# vim dhcpd.conf 

dhcpd.conf의 75번 라인에서 설정을 할 수 있다.

host fantasia {
      hardware ethernet 00:0C:29:D7:23:E3;
      fixed-address 192.168.1.210;
     }

host fantasia -> 예약명
hardware ethernet 00:0C:29:D7:23:E3 -> 예약할 장치의 물리적주소
fixed-address 192.168.1.210 -> 고정할 IP

여러개 설정이 가능하며 예약명 및 고정할 IP 겹치지 않게 주의해야한다

profile
늦은 개발자의 길

0개의 댓글