티스토리 뷰
CentOS 강좌 PART 2. 9 DHCP 서버 구축
DHCP (Dynamic Host Configuration Protocol)은 BOOTP를 확장한 프로토콜로 DHCP Discover, Offer, Request, Ack 메세지를 이용하여 서버와 클라이언트간에 IP 주소 및 이와 관련된 다양한 정보를 클라이언트가 수신하기 위한 목적으로 사용된다.
이때 주로 사용되는 프로토콜은 BOOTP (Bootstrap Protocol)이며 , 해당 프로토콜을 통해 IP 주소를 포함하는 다양한 네트워크 정보를 서버측으로 부터 수신받도록 하는 방식이다.
해당 프로토콜은 UDP 68,69를 사용하게 되며 BOOTP의 기본이 RARP 를 이용하는 방식이므로, 브로드캐스트 전송 방식을 이용하게 된다.
리눅스에서는 dhcp 데몬을 설치하여 이 패키지를 기반으로 DHCP 서비스를 사용한다.
DHCP 서버가 Client에 전송할 때는 Option 정보를 포함하여, 단순히 IP 정보만 수신하는 게 아니라, 다양한 정보를 수신 및 송신 할 수 있다.
아래는 실제 DHCP 파라메터에서 송,수신 되는 정보들이다.
- Client MAC 주소
- IP 주소 : 단말에 할당 될 IP 주소
- Option 1 - Subnet Mask
- Option 3 - Router (단말의 GateWay)
- Option 6 - DNS 주소
- Option 51 - IP Lease Time (단말에서 IP를 임대해서 사용할 수 있는 기간)
- Option 54 - DHCP Server ID (DHCP Ack를 보낸 DHCP 서버 주소)
Option은 매우 다양하게 제공이 되는데 그 정보는 아래 URL을 참조한다.
1.DHCP 서버 설치
먼저 서버가 될 호스트에 DHCP 패키지를 설치 구성한다.
1 | [root@centrepo whchoi]# yum -y install dhcp | cs |
설치가 완료되면dhcp 메세지를 주고 받을 인터페이스를 지정한다.
1 2 3 4 | [root@centrepo whchoi]# vi /etc/sysconfig/dhcpd DHCPDARGS = ens192 # dhcp 메세지를 주고 받을 인터페이스를 선언한다. | cs |
2. CentOS에서 DHCP 서버 구성
DHCP 상세 구성은 /etc/dhcp/dhcpd.conf에 구성된다. 해당 파일을 비어 있는 상태이며, 설정 샘플파일을 참조하기 위해서는 /usr/share/doc/dhcp*/dhcpd.conf.sample을 참조할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | [root@centrepo whchoi]# more /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example # dhcp 서비스 구성방식에 대한 정보가 Sample로 제공된다. [root@centrepo whchoi]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf [root@centrepo whchoi]# vi /etc/dhcp/dhcpd.conf option domain-name "cisko-dc.com"; option domain-name-servers ns1.cisko-dc.com, ns2.cisko-dc.com; default-lease-time 3600; max-lease-time 7200; authoritative; # domain name은 “cisko-dc.com”, domain-name-server는 “ns1.cisko-dc.com”으로 지정한다. # default-lease-time은 3600초, max-lease-time은 7200초이다. subnet 10.72.78.128 netmask 255.255.255.128 { option routers 10.72.78.129; option subnet-mask 255.255.255.128; option domain-search "cisko-dc.com"; option domain-name-servers 10.72.86.7; range 10.72.78.131 10.72.78.140; } # 서브넷 10.72.78.128/25, Gateway는 10.72.78.129, domain은 “cisko-dc.com” # nameserver 주소는 “10.72.86.7”, IP 할당 범위는 “10.72.78.131~140”이다. host test1 { hardware ethernet 00:50:56:aa:aa:01; fixed-address 10.72.78.140; } # 클라이언트 사이드에서 MAC주소를 최초에 전송하게 되는데 이때 MAC주소를 보고 IP를 Assign할 수 있다. [root@centrepo whchoi]# systemctl start dhcpd [root@centrepo whchoi]# systemctl enable dhcpd # dhcp 데몬을 활성화하고, 재구동시 사용할 수 있도록 설정한다. | cs |
3. dhcp를 위한 보안 설정
DHCP 서비스를 제공하기 위해서는 수신포트 UDP 67번을 사용한다. 따라서 Firewall에서 반드시 허용해 주어야 한다.
1 2 3 4 5 6 | [root@centrepo whchoi]# firewall-cmd --permanent --zone=public --add-service=dhcp success [root@centrepo whchoi]# firewall-cmd --reload success # dhcp 서비스를 위해 방화벽 정책을 설정한다. | cs |
4. DHCP Client Side 설정
리눅스 클라이언트가 DHCP를 사용하기 위해서는 network-script파일을 변경해야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | [root@web whchoi]# more /etc/sysconfig/network-scripts/ifcfg-ens192 HWADDR=00:50:56:8f:bb:47 NAME=ens192 DEVICE=ens192 ONBOOT=yes USERCTL=no BOOTPROTO=dhcp PEERDNS=no 이하 생략 # BOOTPROTO를 dhcp로 구성한다. [root@web whchoi]#ip link set ens192 down [root@web whchoi]#ip link set ens192 up # interface를 재구동한다. [root@web whchoi]# ip a 2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:50:56:8f:0c:d7 brd ff:ff:ff:ff:ff:ff inet 10.72.78.132/25 brd 10.72.78.255 scope global noprefixroute dynamic ens192 valid_lft 3294sec preferred_lft 3294sec # 설정 변경 후에 DHCP로 해당 IP Range로 정상적으로 할당되었는지 확인한다. | cs |
DHCP Server 의 DHCP Log를 보면 아래와 같이 동작한 것을 알 수 있다.
1. MAC 주소 00:50:56:8f:0c:d7을 가진 클라이언트가 “DHCP DISCOVER”를 요청
2.해당 요청에 대해 DHCP 서버는 10.72.78.132를 “DHCP OFFER”로 전송
3.10.72.86.132 IP 주소를 할당 받은 클라이언트는 해당 IP를 할당해 줄 것을 “DHCP REQUEST” 요청
4. DHCP Server는 최종적으로 10.72.86.132를 할당해 주고 Option에 배정된 정보들을 “DHCP ACK”를 통해 할당.
앞서 설정한 특정 MAC으로 할당했을 때 정상적으로 동작하는 지를 확인해 본다.
VM의 MAC 주소를 변경하고, 재부팅한다.
재부팅 이후 DHCP 서버에서 메세지를 확인한다.
MAC 주소 aa:aa:01은 사전에 정의된 IP 주소 10.72.78.140으로 서버에서 할당되는 로그를 확인할 수 있다.
클라이언트에서도 정상적으로 할당되어 있는지를 확인한다.
1 2 3 4 5 6 7 8 9 | [root@web whchoi]# ip a 2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:50:56:aa:aa:01 brd ff:ff:ff:ff:ff:ff inet 10.72.78.140/25 brd 10.72.78.255 scope global noprefixroute dynamic ens192 valid_lft 3224sec preferred_lft 3224sec inet6 fe80::45c5:d3c5:a4a4:7745/64 scope link noprefixroute valid_lft forever preferred_lft forever # DHCP Server에서 정의한 10.72.78.140으로 정상적으로 할당된 것을 확인할 수 있다. | cs |
Tip . DHCP를 MAC주소만 확인하고 Assign하려면?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | option domain-name "cisko-dc.com"; option domain-name-servers ns1.cisko-dc.com, ns2.cisko-dc.com; default-lease-time 3600; max-lease-time 7200; authoritative; subnet 10.72.78.128 netmask 255.255.255.128 { option routers 10.72.78.129; option subnet-mask 255.255.255.128; option domain-search "cisko-dc.com"; option domain-name-servers 10.72.86.7; group{ host test1 {hardware ethernet 00:50:56:aa:aa:01; fixed-address 10.72.78.140;} } } | cs |
DHCP Log는 기본 /var/log/syslog에 log7으로 기록되고, 실제 할당되는 정보는 /var/lib/dhcpd/dhcpd.leases 에서 확인할 수 있다.
'운영체제 > CentOS 강좌' 카테고리의 다른 글
CentOS 강좌 PART 2. 10 PXE기반의 CentOS 서버 자동 구축 2편 (2) | 2019.04.05 |
---|---|
CentOS 강좌 PART 2. 10 PXE기반의 CentOS 서버 자동 구축 1편 (2) | 2019.04.05 |
CentOS 강좌 PART 2. 8 SAMBA 서버 구축과 운영 (1) | 2019.04.03 |
CentOS 강좌 PART 2. 7 NFS 서버 구축과 운영 (0) | 2019.04.02 |
CentOS 강좌 PART 2. 6 FTP 서버 구축과 운영 (1) | 2019.04.02 |
공지사항