linux

20210624 (목) DHCP

gusalstm 2021. 6. 24. 11:16
반응형

09:40

DHCP (Dynamic Host Configuration Protocol)

IP 주소를 할당해주는 역할 (공유기, 가상머신 하이퍼바이저)

 

동작단계

    1) 클라이언트의 요청 dhcp Discover

        (포트 : 67/UDP, 68/UCP)source 0.0.0.0 destination 255.255.255.255 :브로드캐스트통신

        (dhcp 이외의 시스템에서는 요청 폐기/거부)

    2) dhcp 서버가 요청을 확인하고 본인의 IP주소를 알림. dhcp Offer

       수신지를 특정하지 않고 브로드캐스트 통신

       서버가 제안하는 IP주소, 서브넷 마스크, dhcp 서버의 ip주소 등 포함

       (마찬가지로 클라이언트 이외의 시스템에서는 요청 폐기/무시)

    3) 클라이언트 요청 : dhcpREQUEST.

        제안을 수용하고 Server Identification Option (dhcp 서버를 구분) 사용 메시지를 전달

        브로드캐스트 통신 : 다수의 dhcp가 제안 응답을 보내온 경우에 하나의 제안만 수락하게 된다.

        (클라이언트의 브로드캐스트 통신을 통해 모든 dhcp가 메시지를 수신하게되며, 수락된 dhcp 외의 다른 dhcp의 제안은 자동적으로 폐기된다)

    4) 서버응답 IP주소 저장 및 할당 : dhcp Acknowledgement

        임대기간 및 dns정보 등을 클라이언트에 전달하고 네트워크인터페이스에 할당 (dhcpACK)

        임대기간 만료 시에 클라이언트-dhcp 의 통신은 UDP 유니캐스트를 통해 이루어 진다.

        (dhcp REQUEST와 dhcpACK 과정만 이용하게 됨)

 

할당방식

    1) 동적 할당 : 요청에 따라 관리 범위 내의 IP를 유동적으로 할당(기간제한)

    2) 수동 할당 : MAC주소에 따라 IP주소를 직접 할당하는 방식

 

실습 : virtual-box > 파일 > 설정 > 네트워크 >nat network 더블클릭 > dhcp 지원 체크 해제 후 저장

 

 

[root@dns ~]# hostname
dns.school.exam.com
[root@dns ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search school.exam.com
nameserver 10.0.2.10
nameserver 8.8.8.8
[root@dns ~]# yum install -y dhcp

[root@dns ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf 
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y  → 샘플파일 경로에서 실제 사용할 conf파일로 복사
[root@dns ~]# vim /etc/dhcp/dhcpd.conf 

option domain-name "school.exam.com"; → 도메인주소

option domain-name-servers 10.0.2.10; → dns 주소

#실제 대역에 대한 설정 subnet

subnet 10.0.2.0 netmask 255.255.255.0 {
  range 10.0.2.11 10.0.2.200;   → 기본dns나 예약된 아이피를 피해서 범위를 설정
}

#특정 맥주소에 특정 ip를 부여할 수 있음

subnet 10.0.2.0 netmask 255.255.255.0 {

        range 10.0.2.40 10.0.2.50;

        option routers 10.0.2.1;

        option domain-name-servers 10.0.2.10;

        host localhost {                               → 호스트네임

        hardware ethernet 08:00:27:17:7b:23;    → 고유 mac address

        fixed-address 10.0.2.40→ 할당하고자 하는IP주소 (ip대역과 일치해야함. range와 불일치해도 됨)

        }

      }

 

[root@dns ~]# systemctl start dhcpd

[root@dns ~]# ss -nlpt |grep 67  : tcp 포트 아무것도 없음
[root@dns ~]# ss -nlpu |grep 67 : udp 포트 아래와 같이 신호대기중
UNCONN     0      0            *:67                       *:*                   users:(("dhcpd",pid=4881,fd=7))
UNCONN     0      0      *%virbr0:67                       *:*                   users:(("dnsmasq",pid=1526,fd=3))

[root@dns ~]# firewall-cmd --add-service=dhcp
[root@web ~]# cat /usr/lib/firewalld/services/dhcp.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>DHCP</short>
  <description>This allows a DHCP server to accept messages from DHCP clients and relay agents.</description>
  <port protocol="udp" port="67"/>
</service>

 

TEST

[root@web ~]# nmcli con add type ethernet con-name dhcp ifname enp0s3
Connection 'dhcp' (0b2b7e3a-bd93-46d9-bb4e-5db3358944fe) successfully added.
[root@web ~]# nmcli con up dhcp
[root@web ~]# ip addr show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:1c:ad:c6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.4/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3
       valid_lft 578sec preferred_lft 578sec
    inet6 fe80::d70d:bda0:21f0:4f8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

  ipv4.method:                           auto 동적 manual 수동

    … DHCP4.OPTION 등에 dhcp 옵션이 기재된다.

 

[root@host1 ~]# service network restart → dhcp 재시작 (클라이언트)

 

 

P882 DDNS

Dynamic DNS 동적으로 dns서버 정보를 업데이트 가능

 

 

 

728x90