이 가이드에서는 Windows Server 2019 기반의 DHCP 서버를 설치하고 구성하는 방법을 단계별로 살펴봅니다. GUI 콘솔을 통한 일반적인 DHCP 서버 옵션 구성 방식과 PowerShell 명령줄을 이용한 DHCP 구성 방식을 모두 다룹니다. 또한 Windows Server에 DHCP 역할을 설치·구성하는 세부 사항, DHCP 범위(Scope) 생성, 범위 옵션 설정, 고정 IP 주소 예약 방법까지 함께 설명합니다.
DHCP(Dynamic Host Configuration Protocol)는 네트워크상의 장비(컴퓨터, 노트북, 스캐너, 프린터 등)에 네트워크 설정(IP 주소, 서브넷 마스크, 게이트웨이, DNS 서버 등)을 자동으로 할당하기 위해 사용되는 프로토콜입니다. DHCP 서버를 사용하면 IP 주소 공간을 더 효율적으로 활용할 수 있고, 네트워크 내 IP 주소 충돌을 방지하며, 클라이언트 장비의 네트워크 파라미터를 중앙에서 관리할 수 있습니다.
Windows Server 2019/2016에 DHCP 서버 역할 설치하기
이 예제에서는 IP 주소가 192.168.13.4인 Windows Server 2019 호스트에 DHCP 서버를 설치합니다. Windows Server Core 버전과 Full GUI 버전 모두 사용할 수 있으며, 소규모 인프라에서는 Active Directory 도메인 컨트롤러 역할을 하는 서버에 DHCP 서버를 함께 설치해도 무방합니다.
DHCP 서버 호스트에는 반드시 고정(static) IP 주소를 할당해야 합니다. 동적 IP 주소를 사용하는 서버에 PowerShell 콘솔로 DHCP 역할을 설치하면 아래와 같은 경고가 표시됩니다:
Configure at least one static IP address on your computer before installing DHCP.
WARNING: The following recommended condition is not met for DHCP: No static IP addresses were found on this computer. If the IP address changes, clients might not be able to contact this server. Please configure a static IP address before installing DHCP Server.
Server Manager(서버 관리자) 콘솔에서 Add Roles and Features → Server Roles 경로를 통해 DHCP Server 역할을 설치할 수 있습니다.
DHCP 역할 설치 후에는 배포 후 구성(post-deployment configuration) 작업을 수행해야 합니다. Server Manager 콘솔에서 알림을 클릭한 뒤 Complete DHCP configuration을 선택하세요.
새 DHCP 서버를 Active Directory에서 권한 부여(Authorization)하는 화면이 나타납니다. AD에서 DHCP 서버를 승인하려면 계정이 Enterprise Admins 도메인 그룹의 멤버여야 합니다.
AD에서 DHCP를 승인할 권한이 없다면, 도메인 권한 확인 없이 DHCP 서버가 시작되도록 설정할 수 있습니다:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\DHCPServer\Parameters" -Name DisableRogueDetection -Value 1 -Force
PowerShell 콘솔에서 다음 명령으로도 Windows Server에 DHCP 서버 역할을 설치하고 구성할 수 있습니다:
Install-WindowsFeature DHCP –IncludeManagementTools
DHCP 역할과 RSAT-DHCP 관리 도구가 정상적으로 설치되었는지 확인합니다:
Get-WindowsFeature -Name *DHCP*| Where Installed
Active Directory에서 DHCP 서버를 승인합니다(서버의 DNS 이름과 DHCP 클라이언트가 사용할 IP 주소 지정):
Add-DhcpServerInDC -DnsName hq-dc01.woshub.com -IPAddress 192.168.13.4
DHCP 서버용 로컬 보안 그룹을 생성합니다:
Add-DhcpServerSecurityGroup
Server Manager에서 "DHCP 역할에 추가 구성이 필요합니다"라는 알림이 더 이상 표시되지 않도록 하려면 다음 명령을 실행합니다:
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\ServerManager\Roles\12 -Name ConfigurationState -Value 2
DHCPServer 서비스를 재시작합니다:
Restart-Service -Name DHCPServer -Force
DHCP 서버 데이터베이스와 로그는 %systemroot%\system32\dhcp 폴더에 저장됩니다:
- dhcp.mdb — DHCP 서버 데이터베이스 파일
- j50.log — 트랜잭션 로그 파일(DHCP 구성 복원 시 사용)
- j50.chk — 체크포인트 파일
- tmp.edb — DHCP 서버 임시 작업 파일
Windows Server 2019에서 DHCP 범위(Scope) 구성하기
DHCP 역할 설치 후에는 서버가 클라이언트에 할당할 IP 주소 범위와 각종 파라미터를 정의하는 DHCP 범위(Scope)를 생성해야 합니다.
DHCP 서버는 dhcpmgmt.msc 콘솔로 관리합니다(RSAT가 설치된 원격 컴퓨터에서도 관리 가능). DHCP 콘솔을 열고 서버를 확장한 뒤 IPv4를 마우스 오른쪽 버튼으로 클릭하고 New Scope를 선택합니다.
DHCP 범위의 이름을 지정합니다.
해당 범위에서 발급할 IP 주소 범위와 서브넷 마스크를 입력합니다. 이 예제에서는 192.168.100.0/24 네트워크용 DHCP 범위를 만들며, 이 네트워크 내에서 DHCP 서버는 192.168.100.50 ~ 192.168.100.250 범위의 동적 IP 주소를 할당합니다. 다음 창에서 이 범위에 대한 제외 항목(Add Exclusions and Delay)을 추가할 수도 있습니다.
다음으로 DHCP 클라이언트의 IP 주소 임대 기간(Lease Duration)을 지정합니다. 기본값은 8일이며, 특별한 이유가 없다면 변경하지 않아도 됩니다.
추가적인 DHCP 범위 옵션을 구성하겠다고 선택합니다.
클라이언트에 할당할 네트워크의 기본 게이트웨이 IP 주소를 지정합니다(이 예제에서는 192.168.100.1).
그다음 DHCP 클라이언트에 전파할 도메인 이름과 DNS 서버 IP 주소를 입력합니다.
마지막으로 DHCP 범위를 활성화하여 클라이언트에 서비스를 제공하도록 합니다.
DHCP 서버는 IP 주소 외에도 다양한 설정을 클라이언트에 할당할 수 있으며, 이때 Scope Options(범위 옵션)를 사용합니다.
Windows Server DHCP에서는 전역 범위 설정 또는 각 범위별 Scope Options를 구성할 수 있습니다.
앞서 우리는 세 가지 범위 옵션을 구성했습니다:
- 003 Router(라우터)
- 006 DNS Server(DNS 서버)
- 015 DNS Domain Name(DNS 도메인 이름)
NTP 서버, PXE 설정 등 다른 옵션도 추가할 수 있습니다.
DHCP 서버의 Server Options 섹션에서 모든 범위가 상속받는 전역 옵션을 구성할 수 있습니다. 단, 각 범위의 설정에서 전역 설정을 재정의할 수 있으며(범위 옵션이 서버 옵션보다 우선함), 이 점을 활용하면 유연한 운영이 가능합니다.
하나의 DHCP 서버로 수백 개의 서브넷과 VLAN을 서비스할 수 있으므로 여러 개의 범위를 생성할 수 있습니다. 중요한 것은 각 서브넷에 DHCP 릴레이 에이전트를 구성하여 브로드캐스트 DHCP 요청을 DHCP 서버로 전달해야 한다는 점입니다. Cisco 용어로는 DHCP 릴레이를 ip helper라고 부르며, Windows Server 호스트에도 DHCP Relay를 구성할 수 있습니다.
DHCP는 UDP 프로토콜을 전송 수단으로 사용합니다. 클라이언트에서 서버로 가는 패킷은 UDP 67 포트를, 그 반대 방향은 UDP 68 포트를 통해 전송됩니다.
DHCP 서버에서 IP 주소 예약 구성하기
기본적으로 DHCP 서버는 클라이언트에 동적 주소를 임대합니다. 즉, 어떤 클라이언트의 IP 주소든 변경될 수 있습니다. 특정 장비가 항상 동일한 고정 IP 주소를 받도록 하려면 예약(Reservation)을 설정하면 됩니다(예: 사용자 컴퓨터에 연결된 네트워크 프린터 등).
DHCP 예약을 생성하려면 해당 범위를 선택하고 Reservation 섹션으로 이동한 뒤 메뉴에서 New Reservation을 선택합니다.
예약 생성 시 장비에 할당할 IP 주소와 해당 장비의 고유 MAC 주소를 지정해야 합니다. Windows에서 MAC 주소는 ipconfig /all 명령 결과나 PowerShell(Get-NetAdapter | select Name, Macaddress)로 확인할 수 있습니다. 필요에 따라 장비 이름과 설명도 추가할 수 있습니다.
또한 DHCP 콘솔의 Address Leases 섹션에서 장비를 찾은 후 클릭하고 Add to Reservation을 선택하면 현재 동적 주소를 그대로 예약 주소로 전환할 수 있습니다.
PowerShell로 DHCP 서버 구성 및 관리하는 방법
Windows Server 2019/2016에서 DHCP 서버의 모든 구성 및 관리 작업은 PowerShell 콘솔에서 수행할 수 있습니다. 기본적인 DHCP 관리 명령어를 살펴보겠습니다. 먼저 DHCPServer 모듈을 PowerShell 세션으로 가져옵니다:
Import-Module DHCPServer
DHCP 모듈의 전체 cmdlet 목록은 다음과 같이 확인할 수 있습니다:
Get-Command -Module DHCPServer
Active Directory에 승인된 DHCP 서버 목록을 표시합니다:
Get-DhcpServerInDC
지정된 서버의 DHCP 범위 목록을 가져옵니다:
Get-DhcpServerv4Scope –ComputerName be-dhcp1
더 많은 필드(Delay, Description, Name 등)를 표시하려면:
Get-DhcpServerv4Scope –ComputerName be-dhcp1| FL *
IPv6 범위 정보를 표시하려면:
Get-DHCPServerv6Scope
특정 DHCP 범위의 설정을 가져옵니다:
Get-DhcpServerv4Scope –ComputerName be-dhcp1 –ScopeID 192.168.12.0
IP 주소 범위가 192.168.113.50 ~ 192.168.113.250인 비활성 상태의 새 DHCP 범위를 생성합니다:
Add-DhcpServerv4Scope -Name "NY Branch1 192.168.113.0" -StartRange 192.168.113.50 -EndRange 192.168.113.250 -SubnetMask 255.255.255.0 -State InActive
DNS 서버, 도메인, 기본 게이트웨이 주소 등의 DHCP 범위 옵션을 설정합니다:
Set-DhcpServerv4OptionValue -ScopeID 192.168.113.0 -DnsDomain woshub.com -DnsServer 192.168.13.4 -Router 192.168.113.1
DHCP 범위에 제외 범위를 추가합니다:
Add-DhcpServerv4ExclusionRange -ScopeID 192.168.113.0 -StartRange 192.168.113.90 -EndRange 192.168.113.100
DHCP 범위를 활성화합니다:
Set-DhcpServerv4Scope -ScopeID 192.168.113.0 -State Active
편의를 위해 새 범위를 생성할 때 다음과 같은 PowerShell 해시 테이블 방식을 사용할 수도 있습니다:
$HashArgs = @{
'Name' = 'NY Office Scope';
'Description' = 'Workstations';
'StartRange' = '192.168.120.10';
'EndRange' = '192.168.120.200';
'SubnetMask' = '255.255.255.0';
'State' = 'Active';
'LeaseDuration' = '7.00:00:00';
}
Add-DhcpServerv4Scope @HashArgsWPAD 같은 다른 DHCP 서버 옵션은 다음과 같이 추가할 수 있습니다:
Add-DhcpServerv4OptionDefinition -ComputerName be-dhcp1 -Name WPAD -OptionId 252 -Type String
구성된 DHCP 서버 옵션 목록을 표시합니다:
Get-DHCPServerv4OptionValue -ComputerName be-dhcp1 | Format-List
구성된 범위 옵션 목록을 표시합니다:
Get-DHCPServerv4OptionValue -ComputerName be-dhcp1 -ScopeId 192.168.12.0 | Format-List
DHCP 범위 192.168.12.0의 현재 임대된 IP 주소 목록을 표시합니다:
Get-DHCPServerv4Lease -ScopeId 192.168.12.0 -ComputerName be-dhcp1
동적 IP 주소 192.168.12.88을 할당받은 클라이언트에 대해 DHCP 예약을 생성합니다(임대 주소를 예약 주소로 변환):
Get-DhcpServerv4Lease -ComputerName be-dhcp1 -IPAddress 192.168.12.88| Add-DhcpServerv4Reservation -ComputerName be-dhcp1
CSV 파일에 나열된 컴퓨터들에 대해 대량으로 IP 주소를 예약할 수도 있습니다. 먼저 다음 형식의 텍스트 파일을 만듭니다:
ScopeId,IPAddress,Name,ClientId,Description
192.168.12.0,192.168.12.88,PC-be-s1,2a-a2-1c-39-42-1f,Reservation PC-be-s1
192.168.12.0,192.168.12.89,PC-be-s2,2a-a2-1c-59-22-2f,Reservation PC-be-s2
파일을 c:\dhcp\DHCPReservations.csv로 저장한 뒤, 다음 명령을 실행하면 CSV 파일의 데이터를 가져와 클라이언트용 DHCP 예약을 생성합니다:
Import-Csv –Path c:\dhcp\DHCPReservations.csv | Add-DhcpServerv4Reservation -ComputerName be-dhcp1
DHCP 서버에서 범위를 비활성화합니다:
Set-DhcpServerv4Scope -ComputerName be-dhcp1 -ScopeId 192.168.12.0 -State InActive
DHCP 서버에서 범위를 삭제합니다:
Remove-DHCPServerv4Scope -ComputerName be-dhcp1 -ScopeId 192.168.12.0 -Force
DHCP 서버 통계(범위 및 예약 수, 주소 사용률 등)를 조회할 수 있습니다:
Get-DhcpServerv4Statistics -ComputerName be-dhcp1
특정 범위에 대한 동일한 정보는 Get-DhcpServerv4ScopeStatistics cmdlet으로 확인할 수 있습니다.
DHCP 서버 구성은 다음 명령으로 XML 파일로 내보낼 수 있습니다:
Export-DHCPServer -ComputerName be-dhcp1 -File C:\dhcp\dhcp-export.xml
팁: 이 명령을 작업 스케줄러(Task Scheduler)에 등록하면 DHCP 서버 구성을 자동으로 백업할 수 있습니다.
내보낸 DHCP 서버 설정은 다른 DHCP 서버로 가져오기(마이그레이션)할 수 있습니다:
Import-DHCPServer -ComputerName be-dhcp2 -File C:\dhcp\dhcp-export.xml -BackupPath C:\dhcpbackup\