리눅스/프로젝트 실습

Ubuntu(20.04) DHCP 서버 구성(with PNetLab 실습)

CBROJIN 2025. 5. 27. 12:00

🧩 전체 토폴로지

🧩 실습 구성 개요

  • Ubuntu 서버 인터페이스
    • ens3: 외부망 NAT (패키지 설치 위한 인터넷 용도)
    • ens4: 내부망(VLAN 10~40) 연결

 

  • DHCP 대상 네트워크
    • VLAN 10: 192.168.10.0/25
    • VLAN 20: 192.168.10.128/25
    • VLAN 30: 192.168.11.0/25
    • VLAN 40: 192.168.11.128/25

Step 1. 패키지 설치

sudo apt update
sudo apt install isc-dhcp-server -y

 

Step 2. DHCP 서버가 사용할 인터페이스 지정

sudo nano /etc/default/isc-dhcp-server

 

수정 내용:

DHCP 서버가 ens4 인터페이스에서 들어오는 DHCP Discover 요청만 수신하고 응답하도록 설정하는 것입니다.

 

Step 3. 네트워크 설정 확인 (Netplan)

sudo nano /etc/netplan/00-installer-config.yaml

 

수정 내용:

ens4는 DHCP로 IP를 받지 않고 수동(static) 설정을 사용합니다.

192.168.50.0/24 대역의 DHCP 서버 주소 역할

DHCP 클라이언트들은 ASA 또는 스위치의 릴레이를 통해 이 주소로 요청을 보내게 됨

DHCP 요청에 대한 응답(Offer, ACK)이 되돌아가기 위한 경로 설정입니다.

 
sudo netplan apply 적용 후 설정 마무리

 

Step 4. DHCP 설정 파일 작성

sudo nano /etc/dhcp/dhcpd.conf

 

수정 내용:

default-lease-time 86400;      # 기본 임대 시간 (24시간)
max-lease-time 604800;        # 최대 임대 시간 (7일)
authoritative;                          # 이 서버가 해당 네트워크에서 유일한 DHCP 서버임을 명시
ddns-update-style none;        # DDNS(동적 DNS 갱신) 비활성화 -> 아직 DNS서버 미설치 오류 방지

range: 실제 클라이언트에게 할당될 IP 범위

routers: 해당 VLAN의 게이트웨이 IP → VRRP IP 사용

DNS 서버: 192.168.50.3 (향후 DNS 서버 구성 예정)

Step 5. 서비스 재시작 및 활성화

sudo systemctl restart isc-dhcp-server   # 설정을 수정하고 반영할 때 재시작해야 합니다.
 
sudo systemctl enable isc-dhcp-server  # 부팅될 때 isc-dhcp-server 서비스를 자동으로 시작하도록 설정하는 명령
sudo systemctl status isc-dhcp-server  # isc-dhcp-server 상태 확인

 

Step 6. 동작 확인

sudo cat /var/lib/dhcp/dhcpd.leases  # DHCP 서버가 클라이언트에게 할당한 IP 정보(임대 기록)를 확인

 

PNetLab Sales2 PC(왼), 실제 내 PC(우)
PNetLab Ubuntu DHCP server

 

pnetlab 안 pc,  실제 내 pc(cloud 노드에 매핑한) 모두 ip 할당 완료 됬습니다.

 

🧩 ASA, D1, D2 등의 네트워크 장비에서 DHCP 릴레이 설정

DHCP 서버가 ASA 8.4(2) DMZ 영역의 Ubuntu 서버 (192.168.50.2)로 존재하며, Distribution1,2 장비는 DHCP 릴레이 역할을 수행함.


Step 1. ASA 설정

dhcprelay server 192.168.50.2 DMZ #DHCP 서버의 IP가 192.168.50.2이고, 이 서버는 ASA의 DMZ 인터페이스에 연결

 

dhcprelay enable inside  # DHCP Discover 요청을 받을 ASA 인터페이스 지정

 

access-list ALLOW-DHCP extended permit udp 192.168.10.0 255.255.254.0 host 192.168.50.2 eq bootps

# 클라이언트 -> DHCP 서버 (DHCP Discover / Request)

access-list ALLOW-DHCP extended permit udp host 192.168.50.2 192.168.10.0 255.255.254.0 eq bootpc

# DHCP 서버 -> 클라이언트 (DHCP Offer / ACK)

 

access-group ALLOW-DHCP in interface DMZ # DMZ존에 ALLOW-DHCP access-list 적용

 

포트 번호 역할
UDP 67 bootps DHCP 서버가 수신하는 포트
UDP 68 bootpc DHCP 클라이언트가 수신하는 포트

 

ASA에서 DHCP 릴레이를 정상 작동시키기 위해서는 DHCP Discover/Offer 트래픽이 흐를 수 있도록 UDP 67, 68번 포트를 명시적으로 허용하는 ACL이 필요하다. 위 ACL은 DHCP 요청과 응답을 양방향으로 허용하며, 반드시 DHCP 서버가 연결된 인터페이스에 access-group으로 적용해야 한다.

 

Step 2. Distribution1,2 (L3 스위치 역할) 설정

 

interface vlan10,20,30,40에 동일 적용

ip helper-address는 DHCP Discover --> UDP 67 포트로 브로드캐스트 되는 패킷을 유니캐스트로 DHCP 서버에 전달함.

 

Step 3. VRRP 구성도 반영됨

  • D1, D2 간 VRRP로 DHCP 릴레이 게이트웨이도 가상 IP로 통일.
  • 예: VLAN 10 --> VRRP IP: 192.168.10.3 , DHCP 설정에서도 해당 IP를 option routers로 설정.

💻 실제 PC (외부 Windows 장비) 구성

PNetLab 내부 PC 노드 및 실제 PC를 클라이언트로 사용


Step 1. 네트워크 구조 요약

  • 실 PC ↔ USB-NIC ↔ 공유기 (Dummy 연결용, 인터넷 안됨)
  • 공유기 ↔ VMnet2 ↔ PNetLab Cloud2 ↔ Pre-share pc(VLAN 10)

Step 2. USB NIC 구성 절차

  1. 실 PC에 USB NIC 장착
  2. USB NIC -> 공유기 LAN 포트 연결 (인터넷 미연결 공유기)
  3. 공유기에는 DHCP OFF (충돌 방지 목적)
  4. USB NIC은 PNetLab VMnet2로 브릿지 설정
  5. PNetLab의 Cloud2 노드 -> VMnet2로 연결

더미 공유기를 사용하는 이유는 NIC가 링크업 되도록 신호를 유지하기 위해서입니다.

 

Step 3. 실 PC에서 방화벽 구성 및 확인

 

DHCP 통신이 되지 않을 경우 아래 항목 확인:  저같은 경우 방화벽만 꺼도 됬습니다.

netsh advfirewall set allprofiles state off 

 

또는 Inbound ICMP 허용 설정:

netsh advfirewall firewall add rule name="Allow ICMPv4-In" protocol=icmpv4:8,any dir=in action=allow
netsh advfirewall firewall add rule name="Allow ICMPv4-Out" protocol=icmpv4:0,any dir=out action=allow

 

Step 4. DHCP 작동 확인 절차

  1. 실 PC의 Wi-Fi 끈 상태에서 DHCP 시도
  2. ipconfig /release "USB-NIC"
  3. ipconfig /renew "USB-NIC"
  4. 192.168.10.x 대역으로 할당 완료