2022. 11. 25. 00:38ㆍ리눅스(Linux)
DHCP (Dynamic Host Configuration Protocol)란?
- 클라이언트 컴퓨터나 다른 TCP/IP 기반 네트워크 장치에 IP 주소를 제공하는 서비스
- IP와 함께 라우터(G/W), DNS 서버 같은 네트워크 리소스와 연결할 수 있도록 옵션 제공
- DHCP 클라이언트에 특정 기간 IP를 임대하며 갱신을 요청하는 경우 IP 주소를 갱신
- 특정 컴퓨터나 장치에 IP주소 예약이 가능하다.
- Port 번호는 Server(UDP : 67), Client(UDP : 68) 사용한다.
$ DHCP 주소 임대 과정
- DHCP Discover Client to server 주소를 요청
- DHCP Offer Server to client 사용할 주소를 제공
- DHCP Request Client to server 제공받는 주소 사용을 승인
- DHCP ACK Server to client 주소 사용 승인
$ DHCP Spoofing
- 내부 네트워크에 게이트웨이 주소, DNS서버 주소를 속여 정보를 가로챔
- 디폴트게이트웨이가 해커가 지정한 게이트웨이로 잡히면 모든 송수신이 해커에게로 거쳐가게 됨
- DNS서버가 잡히면 네이버랑 똑같은 피싱사이트를 만들어 로그인을 하는 순간 개인정보가 유출
- 내부 네트워크에 허가되지 않은 dhcp가 있는지 확인하는게 중요
$ DHCP Package
- dhcp-common-4.2.5-47.e17.centos.x86_64
- dhcp-devel-4.2.5-47.e17.centosx86_64
- dhcp-4.2.5-47.e17.centos.x86_64
- dhcp-libs-4.2.5-47.e17.centos.x86_64
$ DHCP 관련 파일
- /etc/dhcp/dhcpd.conf (DHCP 서비스 메인 설정 파일)
- /var/lib/dhcpd/dhcpd.leases (DHCP 데이터 베이스 파일 임대 정보 등을 확인 할 수 있다.)
$ DHCP Client 명령어 (Windows)
C:\Users> ipconfig /all
- NIC 상세정보 확인
- 169.254.0.0/16(ARIPA) 네트워크가 할당 될 경우 정상적인 DHCP서비스를 제공받지 못한 상태
C:\Users> ipconfig /renew
- DHCP를 이용한 IP주소 할당 및 재할당
C:\Users> ipconfig /release
- DHCP 임대해제
$ TEST 항목 (Wireshark 프로그램을 Win10 Client에서 설치)
- Client IP주소 일반 임대 및 네트워크 통신확인 및 DHCP 주소임대과정 패킷 확인
- Client의 MAC Address를 이용하여 DHCP 예약작업 진행 후 예약된 IP주소를 임대받는지 확인
- DHCP Failover 구성 (Linux1 - Linux2)
$ dhcp 설정
# yum -y install dhcp-*
* VMware NAT의 dhcp 설정을 해제
# ps -ef | grep dnsmasq
# kill -9 dnsmasq의 pid
- dhcp 서버 재부팅 시 dnsmasq가 충돌이 일어날 수 있으므로 종료한다.
# vi /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0
{
option routers 192.162.1.2 ; → 게이트웨이 주소
option subnet-mask 255.255.255.0 ;
range dynamic-bootp 192.168.1.30 192.168.1.50 ; → 할당할 대역대
option domain-name-servers 168.126.63.1 ; → dns 서버 주소
default-lease-time 10000 ; → 임대를 요청한 클라이언트가 특정한 만료 시간을
요청하지 않았을 경우에 기본으로 할당되는 시간을 10000초로 지정
max-lease-time 20000 ; → 임대를 요청한 클라이언트가 IP주소를 가지고 있을 수 있는
최대시간을 20000초로 지정
}
# firewall-cmd --permanent --add-service=dhcp
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: bond0 ens32 ens34
sources:
services: dhcp dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
# systemctl start dhcpd
# systemctl enable dhcpd
netstat -anp | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 5529/dhcpd
# systemctl retstart dhcpd
# systemctl retstart network
# cat /var/lib/dhcpd/dhcpd.leases
- IP 임대 정보 확인
[ Client TEST ] : IP주소 자동할당으로 변경
CMD > C:\Users\ITBANK>ipconfig /all
Windows IP 구성
호스트 이름 . . . . . . . . : Client
주 DNS 접미사 . . . . . . . :
노드 유형 . . . . . . . . . : 혼성
IP 라우팅 사용. . . . . . . : 아니요
WINS 프록시 사용. . . . . . : 아니요
이더넷 어댑터 Ethernet0:
연결별 DNS 접미사. . . . :
설명. . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection
물리적 주소 . . . . . . . . : 00-0C-29-B7-BE-FC
DHCP 사용 . . . . . . . . . : 예
자동 구성 사용. . . . . . . : 예
IPv4 주소 . . . . . . . . . : 192.168.1.60(기본 설정)
서브넷 마스크 . . . . . . . : 255.255.255.0
임대 시작 날짜. . . . . . . : 2022년 6월 9일 목요일 오후 1:58:36
임대 만료 날짜. . . . . . . : 2022년 6월 9일 목요일 오후 3:58:36
기본 게이트웨이 . . . . . . : 192.168.1.2
DHCP 서버 . . . . . . . . . : 192.168.1.100
DNS 서버. . . . . . . . . . : 8.8.8.8
Tcpip를 통한 NetBIOS. . . . : 사용
$ dhcp static 설정
# vim /etc/dhcp/dhcpd.conf
subnet 192.168.111.0 netmask 255.255.255.0
{
option routers 192.162.1.2 ;
option subnet-mask 255.255.255.0 ;
range dynamic-bootp 192.168.1.30 192.168.1.50 ;
option domain-name-servers 168.126.63.1 ;
default-lease-time 10000 ;
max-lease-time 20000 ;
host client1
{
option host-name "client1"; → 클라이언트 명
hardware ethernet 00:0c:29:47:0c:99; → 클라이언트 물리적주소
fixed-address 192.168.1.45; → 할당할 주소
}
}
# firewall-cmd --permanent --add-service=dhcp
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: bond0 ens32 ens34
sources:
services: dhcp dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
# systemctl retstart dhcpd
# systemctl retstart network
# netstat -anp | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 5529/dhcpd
# cat /var/lib/dhcpd/dhcpd.leases
- IP 임대 정보 확인
[ Client TEST ] : IP주소 자동할당으로 변경
CMD > C:\Users\ITBANK>ipconfig /all
Windows IP 구성
호스트 이름 . . . . . . . . : Client
주 DNS 접미사 . . . . . . . :
노드 유형 . . . . . . . . . : 혼성
IP 라우팅 사용. . . . . . . : 아니요
WINS 프록시 사용. . . . . . : 아니요
이더넷 어댑터 Ethernet0:
연결별 DNS 접미사. . . . :
설명. . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection
물리적 주소 . . . . . . . . : 00-0C-29-B7-BE-FC
DHCP 사용 . . . . . . . . . : 예
자동 구성 사용. . . . . . . : 예
IPv4 주소 . . . . . . . . . : 192.168.1.60(기본 설정)
서브넷 마스크 . . . . . . . : 255.255.255.0
임대 시작 날짜. . . . . . . : 2022년 6월 9일 목요일 오후 1:58:36
임대 만료 날짜. . . . . . . : 2022년 6월 9일 목요일 오후 3:58:36
기본 게이트웨이 . . . . . . : 192.168.1.2
DHCP 서버 . . . . . . . . . : 192.168.1.100
DNS 서버. . . . . . . . . . : 8.8.8.8
Tcpip를 통한 NetBIOS. . . . : 사용
$ DHCP Failover 구성
[Linux 01 primary 설정]
# firewall-cmd --permanent --add-port=647/tcp
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: bond0 ens32 ens34
sources:
services: dhcp dhcpv6-client ssh
ports: 647/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
# vi /etc/dhcp/dhcpd.conf
failover peer "dhcp-failover" {
primary;
address 192.168.1.100;
port 647;
peer address 192.168.1.100;
peer port 647;
max-response-delay 30;
load balance max seconds 3;
mclt 1800;
split 128;
}
subnet 192.168.1.0 netmask 255.255.255.0{
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.2;
option domain-name-servers 168.126.63.1;
pool {
failover peer "dhcp-failover";
max-lease-time 7200;
range 192.168.1.100 192.168.1.254;
}
}
# systemctl restart dhcpd
# netstat -anp | grep dhcpd
tcp 0 0 192.168.1.100:647 0.0.0.0:* LISTEN 56482/dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 5529/dhcpd
- LISTEN 상태가 뜨는지 확인
[Linux 02 secondary 설정]
# yum -y install dhcp-*
# firewall-cmd --permanent --add-service="dhcp"
# firewall-cmd --permanent --add-port=647/tcp
- Failover 구성 시 사용
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens32
sources:
services: dhcp dhcpv6-client ssh
ports: 647/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
# vi /etc/dhcp/dhcpd.conf
failover peer "dhcp-failover" {
secondary;
address 192.168.1.150;
port 647;
peer address 192.168.1.100;
peer port 647;
max-response-delay 30;
load balance max seconds 3;
}
subnet 192.168.1.0 netmask 255.255.255.0{
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.2;
option domain-name-servers 168.126.63.1;
pool {
failover peer "dhcp-failover";
max-lease-time 7200;
range 192.168.1.100 192.168.1.254;
}
}
# systemctl start dhcpd
# systemctl enable dhcpd
# netstat -anp | grep dhcpd
tcp 0 0 192.168.1.150:647 0.0.0.0:* LISTEN 53371/dhcpd
tcp 0 0 192.168.1.150:59477 192.168.1.100:647 ESTABLISHED 53371/dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 53371/dhcpd
- ESTABLISHED 뜨는지 확인, 이중화 연동 확인
$ DHCP Failover 구성테스트
1. Primary Server로부터IP주소할당
2. Primary Server에서DHCP Service 비활성화
3. Client에서IP주소임대해제후다시IP주소를할당
4. Secandary Server로부터IP주소임대가되는지확인
'리눅스(Linux)' 카테고리의 다른 글
[Centos 7] SSH-Keygen & SSH 공개키 생성 (1) | 2022.11.25 |
---|---|
[Centos 7] sshd_config (SSH 설정 파일) (0) | 2022.11.25 |
[Centos 7] Channel Bonding( 채널 본딩 ) (1) | 2022.11.25 |
[Centos 7] 네트워크 명령어(ifconfig, Network Manager, route, netstat, IP Binding) (0) | 2022.11.24 |
[Centos 7] Linux Firewalld(방화벽) (0) | 2022.11.24 |