Ubuntu(20.04) DHCP 서버 구성(with PNetLab 실습)
🧩 전체 토폴로지
🧩 실습 구성 개요
- 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
수정 내용:
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)이 되돌아가기 위한 경로 설정입니다.
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 안 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 구성 절차
- 실 PC에 USB NIC 장착
- USB NIC -> 공유기 LAN 포트 연결 (인터넷 미연결 공유기)
- 공유기에는 DHCP OFF (충돌 방지 목적)
- USB NIC은 PNetLab VMnet2로 브릿지 설정
- 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 작동 확인 절차
- 실 PC의 Wi-Fi 끈 상태에서 DHCP 시도
- ipconfig /release "USB-NIC"
- ipconfig /renew "USB-NIC"
- 192.168.10.x 대역으로 할당 완료