이 글에서는 Active Directory 환경에서 FSMO 역할을 보유한 도메인 컨트롤러를 확인하는 방법, 하나 이상의 FSMO 역할을 다른(추가/보조) 도메인 컨트롤러로 이전하는 방법, 그리고 FSMO 역할 소유 도메인 컨트롤러에 장애가 발생했을 때 해당 역할을 강제로 점유(seize)하는 방법까지 자세히 살펴봅니다.
Active Directory 도메인에서 FSMO 역할이란?
FSMO(Flexible Single Master Operation) 역할이란 무엇일까요? Active Directory에서 새 사용자 계정이나 보안 그룹 생성, 컴퓨터의 도메인 가입 같은 대부분의 표준 작업은 어떤 도메인 컨트롤러에서든 수행할 수 있습니다. AD 복제 서비스가 이러한 변경 사항을 디렉터리 전체에 전파하는 역할을 담당합니다. 여러 도메인 컨트롤러에서 동시에 동일한 사용자 계정 이름을 변경하는 것과 같은 충돌은 '마지막에 쓴 값이 우선한다'는 단순한 원칙으로 해결됩니다.
그러나 충돌이 절대 허용되지 않는 작업들도 있습니다. 예를 들어 새 하위 도메인/포리스트 생성, AD 스키마 변경 등이 대표적입니다. 이처럼 고유성이 보장되어야 하는 작업을 수행하려면 FSMO 역할을 보유한 도메인 컨트롤러가 필요하며, FSMO 역할의 핵심 목적은 바로 이런 충돌을 방지하는 것입니다.
Active Directory에는 총 다섯 가지 FSMO 역할이 존재합니다.
그중 두 가지는 AD 포리스트 수준에서 고유한 역할입니다.
- 스키마 마스터(Schema Master): Active Directory 스키마 변경을 담당합니다. 예를 들어
adprep /forestprep명령으로 AD 스키마를 확장할 때 필요합니다. - 도메인 명명 마스터(Domain Naming Master): AD 포리스트 내에서 생성되는 모든 도메인과 응용 프로그램 파티션의 고유한 이름을 관리합니다(관리하려면 'Enterprise Admins' 권한이 필요합니다).
나머지 세 가지는 각 도메인별로 존재합니다(관리하려면 계정이 'Domain Admins' 그룹의 구성원이어야 합니다).
- PDC 에뮬레이터(PDC Emulator): Windows 네트워크의 주 브라우저 역할을 수행하며(Domain Master Browser는 네트워크 환경에 컴퓨터를 표시하는 데 사용), 잘못된 암호 입력으로 인한 사용자 계정 잠금을 추적하고, 도메인의 기본 NTP 서버 역할을 하며, Windows 2000/NT 클라이언트와의 호환성을 제공하고, DFS 루트 서버가 네임스페이스 정보를 갱신할 때도 활용됩니다.
- 인프라스트럭처 마스터(Infrastructure Master): 도메인 간 개체 참조(cross-domain object link) 업데이트를 담당하며,
adprep /domainprep명령이 이 서버에서 실행됩니다. - RID 마스터(RID Master): 고유한 개체 식별자(SID) 생성을 위해 다른 도메인 컨트롤러에 RID를 500개씩 묶음으로 배포합니다.
도메인의 FSMO 역할 소유자 확인 방법
그렇다면 Active Directory 도메인에서 어떤 도메인 컨트롤러가 FSMO 역할을 보유하고 있는지 어떻게 알 수 있을까요?
도메인 내 모든 FSMO 역할 소유자를 확인하려면 다음 명령을 실행합니다.
netdom query fsmo
Schema master dc01.test.com
Domain naming master dc01.test.com
PDC dc01.test.com
RID pool manager dc01.test.com
Infrastructure master dc01.test.com
다른 도메인의 FSMO 역할을 조회할 수도 있습니다.
netdom query fsmo /domain:woshub.com
위 예시에서는 모든 FSMO 역할이 DC01에 위치해 있는 것을 볼 수 있습니다. 새 AD 포리스트(도메인)를 배포할 때 모든 FSMO 역할은 첫 번째 DC에 배치됩니다. RODC(읽기 전용 도메인 컨트롤러)를 제외한 모든 도메인 컨트롤러는 어떤 FSMO 역할이든 보유할 수 있으므로, 도메인 관리자는 원하는 FSMO 역할을 다른 도메인 컨트롤러로 이전할 수 있습니다.
PowerShell의 Get-ADDomainController cmdlet(RSAT Active Directory PowerShell 모듈 설치 필요)을 통해서도 FSMO 역할 정보를 확인할 수 있습니다.
Get-ADDomainController -Filter * | Select-Object Name, Domain, Forest, OperationMasterRoles | Where-Object {$_.OperationMasterRoles}
또는 포리스트/도메인 수준의 FSMO 역할을 다음과 같이 조회할 수 있습니다.
Get-ADDomain | Select-Object InfrastructureMaster, RIDMaster, PDCEmulator
Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster
Microsoft가 권장하는 일반적인 FSMO 역할 배치 지침은 다음과 같습니다.
- 포리스트 수준 역할(스키마 마스터, 도메인 명명 마스터)은 글로벌 카탈로그 서버를 겸하는 루트 도메인 컨트롤러에 배치합니다.
- 도메인 수준의 세 가지 FSMO 역할은 적절한 성능을 갖춘 하나의 도메인 컨트롤러에 함께 배치합니다.
- 모든 포리스트 DC를 글로벌 카탈로그 서버로 구성하면 AD의 안정성과 성능이 향상됩니다. 이 경우 인프라스트럭처 마스터 역할은 사실상 큰 의미가 없습니다. 만약 글로벌 카탈로그 역할이 없는 DC가 있다면 인프라스트럭처 마스터 역할을 그곳에 배치하세요.
- FSMO 역할 소유 DC에는 다른 작업을 부여하지 않는 것이 좋습니다.
FSMO 역할 이전은 AD MMC 그래픽 스냅인, ntdsutil.exe, 또는 PowerShell 등 여러 방법으로 수행할 수 있습니다. AD 인프라 최적화 시, 또는 FSMO 역할을 보유한 DC에 치명적인 하드웨어/소프트웨어 장애가 발생했을 때 역할 이전이 필요합니다. FSMO 역할을 옮기는 방식은 두 가지입니다. 두 DC가 모두 정상일 때 수행하는 이전(transfer)과, 역할 소유 DC를 사용할 수 없거나 손상된 경우 수행하는 점유(seize)입니다.
PowerShell로 FSMO 역할 이전하기
도메인에서 FSMO 역할을 이전하는 가장 쉽고 빠른 방법은 Move-ADDirectoryServerOperationMasterRole PowerShell cmdlet을 사용하는 것입니다.
한 번에 하나 이상의 FSMO 역할을 지정된 DC로 이전할 수 있습니다. 다음 명령은 두 개의 역할을 DC02로 옮깁니다.
Move-ADDirectoryServerOperationMasterRole -Identity dc02 -OperationMasterRole PDCEmulator, RIDMaster
OperationMasterRole 매개변수에는 아래 표와 같이 FSMO 역할 이름 또는 해당 인덱스를 지정할 수 있습니다.
| PDCEmulator | 0 |
| RIDMaster | 1 |
| InfrastructureMaster | 2 |
| SchemaMaster | 3 |
| DomainNamingMaster | 4 |
앞선 명령을 더 짧게 표현하면 다음과 같습니다.
Move-ADDirectoryServerOperationMasterRole -Identity dc02 -OperationMasterRole 0,1
모든 FSMO 역할을 한 번에 추가 도메인 컨트롤러로 이전하려면 다음 명령을 실행합니다.
Move-ADDirectoryServerOperationMasterRole -Identity dc02 -OperationMasterRole 0,1,2,3,4
Active Directory 그래픽 스냅인으로 FSMO 역할 이전하기
표준 Active Directory 그래픽 스냅인을 사용해서도 FSMO 역할을 이전할 수 있습니다. 이전 작업은 가능하면 FSMO 역할을 보유한 DC에서 수행하는 것이 좋습니다. 해당 서버의 로컬 콘솔에 접근할 수 없다면 MMC 스냅인에서 도메인 컨트롤러 변경(Change Domain Controller) 옵션을 사용해 대상 도메인 컨트롤러를 선택하세요.
RID 마스터, PDC 에뮬레이터, 인프라스트럭처 마스터 역할 이전 방법
도메인 수준 역할(RID, PDC, 인프라스트럭처 마스터)을 이전하려면 Active Directory 사용자 및 컴퓨터(DSA.msc) 콘솔을 사용합니다.
- Active Directory 사용자 및 컴퓨터(ADUC) 스냅인을 엽니다.
- 도메인 이름을 마우스 오른쪽 버튼으로 클릭하고 작업 마스터(Operations Master)를 선택합니다.
- RID, PDC, Infrastructure 세 개의 탭이 있는 창이 나타납니다. 각 탭에서 새 FSMO 소유자를 지정하고 변경(Change) 버튼을 클릭하여 해당 역할을 이전합니다.
스키마 마스터 역할 이전 방법
포리스트 수준의 스키마 마스터 FSMO 역할을 이전하려면 Active Directory 스키마 스냅인을 사용합니다.
- 스냅인을 시작하기 전에 명령 프롬프트에서
regsvr32 schmmgmt.dll을 실행하여 schmmgmt.dll 라이브러리를 먼저 등록해야 합니다. - 명령 프롬프트에 MMC를 입력하여 MMC 콘솔을 엽니다.
- 메뉴에서 파일 -> 스냅인 추가/제거를 선택하고 Active Directory 스키마 콘솔을 추가합니다.
- 콘솔 루트(Active Directory 스키마)를 마우스 오른쪽 버튼으로 클릭하고 작업 마스터를 선택합니다.
- 스키마 마스터 역할을 이전받을 도메인 컨트롤러 이름을 입력한 후 변경과 확인을 차례로 클릭합니다. 버튼이 비활성화되어 있다면 현재 계정이 Schema Admins 그룹의 구성원인지 확인하세요.
도메인 명명 마스터 FSMO 이전 방법
- 도메인 명명 마스터 FSMO 역할을 이전하려면 Active Directory 도메인 및 트러스트 콘솔을 엽니다.
- 도메인 이름을 마우스 오른쪽 버튼으로 클릭하고 작업 마스터를 선택합니다.
- 변경을 클릭하고 도메인 컨트롤러 이름을 입력한 뒤 확인을 누릅니다.
ntdsutil.exe로 명령 프롬프트에서 FSMO 역할 이전하기
주의: ntdsutil.exe 도구는 신중하게 사용해야 합니다. 작업 내용을 정확히 이해하지 못한 상태에서 사용하면 Active Directory 도메인 전체가 손상될 수 있습니다!
- 도메인 컨트롤러에서 명령 프롬프트를 열고
ntdsutil을 실행합니다. roles를 입력합니다.- 이어서
connections를 입력합니다. - FSMO 역할을 이전받을 DC에 연결해야 합니다.
connect to server <서버이름>을 입력합니다. q를 입력하고 Enter를 누릅니다.- FSMO 역할을 이전하려면
transfer <역할>명령을 사용합니다. 예:transfer schema master,transfer rid master등. - FSMO 역할 이전을 확인(승인)합니다.
- 완료되면
q를 입력하고 Enter를 눌러 ntdsutil.exe를 종료합니다. - 도메인 컨트롤러를 재부팅합니다.
AD FSMO 역할 점유(Seize)하기
FSMO 역할 중 하나를 보유한 DC가 손상되어(복구 불가능) 오랫동안 사용할 수 없는 상태라면, 해당 역할을 강제로 점유할 수 있습니다. 다만 AD에 새로운 문제가 생기지 않도록 하려면, 역할을 점유해 온 원래 서버가 다시는 네트워크에 나타나지 않도록 반드시 확실히 해야 합니다(나중에 백업으로 해당 DC를 복구하는 경우라도 마찬가지입니다). 손상된 DC를 도메인으로 되돌리고 싶다면 유일하게 올바른 방법은 AD에서 해당 컴퓨터 계정을 제거한 뒤, 새 호스트 이름으로 Windows를 클린 설치하고 ADDS 역할을 설치해 서버를 도메인 컨트롤러로 승격하는 것입니다.
FSMO 역할 점유는 PowerShell 또는 NTDSUtil을 통해 수행할 수 있습니다.
가장 간단한 방법은 PowerShell을 사용하는 것입니다. 동일한 Move-ADDirectoryServerOperationMasterRole cmdlet을 사용하되 -Force 매개변수만 추가하면 됩니다.
예를 들어 PDC 에뮬레이터 역할을 강제로 점유하여 DC02로 옮기려면 다음 명령을 실행합니다.
Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole PDCEmulator -Force
ntdsutil.exe를 사용해서도 DC02 서버로 FSMO 역할을 점유할 수 있습니다. 절차는 일반적인 이전과 유사하며, 다음 명령들을 사용합니다.
ntdsutil
roles
connections
connect to server DC02 (역할을 이전받을 서버)
quit
각 FSMO 역할을 점유하려면 다음 명령을 사용합니다.
seize schema master
seize naming master
seize rid master
seize pdc
seize infrastructure master
quit