Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 2개 있습니다.)
개발 환경 구성: 283. Hyper-V 내에 구성한 Active Directory 환경의 시간 구성 방법
; https://www.sysnet.pe.kr/2/0/10931

오류 유형: 375. Hyper-V 내에 구성한 Active Directory 환경의 시간 구성 방법 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/11136




Hyper-V 내에 구성한 Active Directory 환경의 시간 구성 방법

Hyper-V 물리 서버에 VM으로 AD 서버 구성하고 그 AD에 Hyper-V의 물리 서버를 구성원으로 등록시켰습니다. 그랬더니... 시간이 안 맞네요. ^^; 관련해서 다음의 이야기들이 있습니다.

Hyper-V Time Sync for VM Domain Controller
; http://serverfault.com/questions/486593/hyper-v-time-sync-for-vm-domain-controller

시간이 안 맞는 물리 서버에 다음과 같이 실행하면 기준이 되는 시간 서버를 알 수 있습니다.

C:\Windows\system32>net time /SET /Y
Current time at \\MYAD is 2016-01-07 오후 3:04:30

The command completed successfully.

물리 서버도 AD에 참여하고 있기 때문에 당연히 Active Directory가 설치된 MYAD 서버를 기준으로 삼고 있군요. ^^ 그런데, 정작 MYAD PDC 서버는 시간 기준을 Hyper-V 측의 시간으로 잡고 있는 것을 다음의 명령으로 확인할 수 있습니다.

C:\Windows\system32>w32tm /query /source
VM IC Time Synchronization Provider

이 때문에 시간이 꼬리 물기식으로 순환하면서 점점 느려지게 되는 것입니다. 물리 서버는 VM으로 설치된 AD의 시간을 기준으로 하고, VM은 다시 물리 서버의 시간과 연계해 주는 "Hyper-V Time Synchronization Service"를 기준으로 하는 것입니다.

이 연관 관계를 끊어줘야 하는데요. 어쨌든 AD 상의 도메인 컨트롤러 서버가 AD 멤버들의 시간을 관리하는 것이 좋기 때문에 Hyper-V 측으로부터의 시간 전달 서비스를 안 받도록 해야 합니다. 이를 위해 AD PDC VM에서 다음과 같은 레지스트리 명령을 내려줍니다.

C:\Windows\system32>reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0

Value Enabled exists, overwrite(Yes/No)? y
The operation completed successfully.

그럼, AD는 더 이상 Hyper-V 물리 서버로부터 시간을 연계하지 않습니다. 하지만, 이렇게 되면 Active Directory 내의 구성원 간에는 시간이 단일화될 수 있어도 자칫 틀린 시간으로 맞춰질 수 있습니다. 따라서, 기준이 되는 별도의 NTP 서버를 지정해 주는 것이 좋은데요. 이럴 때 인터넷 상의 유명한 NTP 서버를 이용할 수 있습니다. 제 경우에는 pool.ntp.org 서버를 지정해 주었습니다.

C:\Windows\system32>net stop w32time

C:\Windows\system32>w32tm /config /syncfromflags:manual /manualpeerlist:"0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org"
C:\Windows\system32>w32tm /config /reliable:yes

C:\Windows\system32>net start w32time

설정이 잘 되었는지 다음의 명령으로 확인합니다.

C:\Windows\system32>w32tm /query /configuration
[Configuration]

...[생략]...

[TimeProviders]

...[생략]...
Type: NTP (Local)
NtpServer: 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org (Local)

NtpServer (Local)
DllName: C:\Windows\system32\w32time.dll (Local)
Enabled: 1 (Local)
InputProvider: 0 (Local)
AllowNonstandardModeCombinations: 1 (Local)

VMICTimeProvider (Local)
DllName: C:\Windows\System32\vmictimeprovider.dll (Local)
Enabled: 0 (Local)
InputProvider: 1 (Local)

또는 간단하게 다음의 명령으로도 가능합니다.

C:\Windows\system32>w32tm /query /source
0.pool.ntp.org,

이제 잠시 후부터 전체적인 시간 설정이 정상적으로 동기화하는데, 기다리지 말고 다음의 명령으로 곧바로 동기화시켜도 됩니다.

C:\Windows\system32>w32tm /resync /force
Sending resync command to local computer
The command completed successfully.




참고로, 특정 Active Directory의 PDC 서버 이름을 찾고 싶다면 다음과 같은 명령어를 내려도 됩니다. ^^

C:\Windows\system32>netdom /query fsmo
Schema master               myad.testad.com
Domain naming master        myad.testad.com
PDC                         myad.testad.com
RID pool manager            myad.testad.com
Infrastructure master       myad.testad.com
The command completed successfully.





[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 10/14/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2019-03-18 01시20분
[ad 환경 초보자] 안녕하세요. 정성태님 글을 보고 답변을 얻을 수있을거 같아서 질문드립니다.
현재 저의 ad 환경은 위에 글과 같이 Hyper-V 물리 서버위에 VM으로 AD 서버 구성하고 windows 2012 r2가 깔렸습니다.
제가 알고 싶은건 Hyper-V 물리 서버의 시간을 가져다 VM으로 AD 서버에서 보고 싶은데 그렇게 하려면 어떠한 방법이 있어야 하나요?
가령 vm위의 ad 환경의 시간이 변화 했는데도 불구하고 hyper-v의 물리 서버 시간을 볼 수 있는 방법입니다.
[guest]
2019-03-18 01시40분
[ad 환경 초보자] 혹은 Hyper-V Time Synchronization Service를 중지 했다가 다시 실행 시킬 수 있는 명령어 좀 알려주면 감사하겠습니다.
[guest]
2019-03-18 03시58분
이 글에서는 AD VM의 Host 서버 참조를 끊은 것인데요, 마찬가지 방법으로 Host 서버의 AD VM 시간 참조를 끊으면 됩니다. (방법은 이미 글에 있습니다.)

"Hyper-V Time Synchronization Service" 서비스 재시작은 net stop/start 명령어를 함께 사용하시면 됩니다.
정성태

... 61  62  63  64  65  66  67  68  69  70  71  72  [73]  74  75  ...
NoWriterDateCnt.TitleFile(s)
11817정성태2/17/20199923오류 유형: 514. WinDbg Preview 실행 오류 - Error : DbgX.dll : WindowsDebugger.WindowsDebuggerException: Could not load dbgeng.dll
11816정성태2/17/201912431Windows: 157. 윈도우 스토어 앱(Microsoft Store App)을 명령행에서 직접 실행하는 방법
11815정성태2/14/201911325오류 유형: 513. Visual Studio 2019 - VSIX 설치 시 "The extension cannot be installed to this product due to prerequisites that cannot be resolved." 오류 발생
11814정성태2/12/201910138오류 유형: 512. VM(가상 머신)의 NT 서비스들이 자동 시작되지 않는 문제
11813정성태2/12/201911723.NET Framework: 809. C# - ("Save File Dialog" 등의) 대화 창에 확장 속성을 보이는 방법
11812정성태2/11/20199589오류 유형: 511. Windows Server 2003 VM 부팅 후 로그인 시점에 0xC0000005 BSOD 발생
11811정성태2/11/201913357오류 유형: 510. 서버 운영체제에 NVIDIA GeForce Experience 실행 시 wlanapi.dll 누락 문제
11810정성태2/11/201911426.NET Framework: 808. .NET Profiler - GAC 모듈에서 GAC 비-등록 모듈을 참조하는 경우의 문제
11809정성태2/11/201912913.NET Framework: 807. ClrMD를 이용해 메모리 덤프 파일로부터 특정 인스턴스를 참조하고 있는 소유자 확인
11808정성태2/8/201913975디버깅 기술: 123. windbg - 닷넷 응용 프로그램의 메모리 누수 분석
11807정성태1/29/201912290Windows: 156. 가상 디스크의 용량을 복구 파티션으로 인해 늘리지 못하는 경우 [4]
11806정성태1/29/201912023디버깅 기술: 122. windbg - 덤프 파일로부터 PID와 환경 변수 등의 정보를 구하는 방법
11805정성태1/28/201913887.NET Framework: 806. C# - int []와 object []의 차이로 이해하는 제네릭의 필요성 [4]파일 다운로드1
11804정성태1/24/201911926Windows: 155. diskpart - remove letter 이후 재부팅 시 다시 드라이브 문자가 할당되는 경우
11803정성태1/10/201911411디버깅 기술: 121. windbg - 닷넷 Finalizer 스레드가 멈춰있는 현상
11802정성태1/7/201912792.NET Framework: 805. 두 개의 윈도우를 각각 실행하는 방법(Windows Forms, WPF)파일 다운로드1
11801정성태1/1/201913823개발 환경 구성: 427. Netsh의 네트워크 모니터링 기능 [3]
11800정성태12/28/201813120오류 유형: 509. WCF 호출 오류 메시지 - System.ServiceModel.CommunicationException: Internal Server Error
11799정성태12/19/201813931.NET Framework: 804. WPF(또는 WinForm)에서 UWP UI 구성 요소 사용하는 방법 [3]파일 다운로드1
11798정성태12/19/201813174개발 환경 구성: 426. vcpkg - "Building vcpkg.exe failed. Please ensure you have installed Visual Studio with the Desktop C++ workload and the Windows SDK for Desktop C++"
11797정성태12/19/201810540개발 환경 구성: 425. vcpkg - CMake Error: Problem with archive_write_header(): Can't create '' 빌드 오류
11796정성태12/19/201810188개발 환경 구성: 424. vcpkg - "File does not have expected hash" 오류를 무시하는 방법
11795정성태12/19/201812581Windows: 154. PowerShell - Zone 별로 DNS 레코드 유형 정보 조회 [1]
11794정성태12/16/20189976오류 유형: 508. Get-AzureWebsite : Request to a downlevel service failed.
11793정성태12/16/201811613개발 환경 구성: 423. NuGet 패키지 제작 - Native와 Managed DLL을 분리하는 방법 [1]
11792정성태12/11/201812357Graphics: 34. .NET으로 구현하는 OpenGL (11) - Per-Pixel Lighting파일 다운로드1
... 61  62  63  64  65  66  67  68  69  70  71  72  [73]  74  75  ...