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 명령어를 함께 사용하시면 됩니다.
정성태

... 16  [17]  18  19  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
13223정성태1/20/20234740오류 유형: 838. RDP 연결 오류 - The two computers couldn't connect in the amount of time allotted
13222정성태1/20/20234414개발 환경 구성: 657. WSL - DockerDesktop.vhdx 파일 위치를 옮기는 방법
13221정성태1/19/20234606Linux: 57. C# - 리눅스 프로세스 메모리 정보파일 다운로드1
13220정성태1/19/20234704오류 유형: 837. NETSDK1045 The current .NET SDK does not support targeting .NET ...
13219정성태1/18/20234330Windows: 220. 네트워크의 인터넷 접속 가능 여부에 대한 판단 기준
13218정성태1/17/20234230VS.NET IDE: 178. Visual Studio 17.5 (Preview 2) - 포트 터널링을 이용한 웹 응용 프로그램의 외부 접근 허용
13217정성태1/13/20234834디버깅 기술: 185. windbg - 64비트 운영체제에서 작업 관리자로 뜬 32비트 프로세스의 덤프를 sos로 디버깅하는 방법
13216정성태1/12/20235070디버깅 기술: 184. windbg - 32비트 프로세스의 메모리 덤프인 경우 !peb 명령어로 나타나지 않는 환경 변수
13215정성태1/11/20236803Linux: 56. 리눅스 - /proc/pid/stat 정보를 이용해 프로세스의 CPU 사용량 구하는 방법 [1]
13214정성태1/10/20236135.NET Framework: 2087. .NET 6부터 SourceGenerator와 통합된 System.Text.Json [1]파일 다운로드1
13213정성태1/9/20235598오류 유형: 836. docker 이미지 빌드 시 "RUN apt install ..." 명령어가 실패하는 이유
13212정성태1/8/20235492기타: 85. 단정도/배정도 부동 소수점의 정밀도(Precision)에 따른 형변환 손실
13211정성태1/6/20235432웹: 42. (https가 아닌) http 다운로드를 막는 웹 브라우저
13210정성태1/5/20234582Windows: 219. 윈도우 x64의 경우 0x00000000`7ffe0000 아래의 주소는 왜 사용하지 않을까요?
13209정성태1/4/20234476Windows: 218. 왜 윈도우에서 가상 메모리 공간은 64KB 정렬이 된 걸까요?
13208정성태1/3/20234442.NET Framework: 2086. C# - Windows 운영체제의 2MB Large 페이지 크기 할당 방법파일 다운로드1
13207정성태12/26/20224721.NET Framework: 2085. C# - gpedit.msc의 "User Rights Assignment" 특권을 코드로 설정/해제하는 방법파일 다운로드1
13206정성태12/24/20224984.NET Framework: 2084. C# - GetTokenInformation으로 사용자 SID(Security identifiers) 구하는 방법 [3]파일 다운로드1
13205정성태12/24/20225222.NET Framework: 2083. C# - C++과의 연동을 위한 구조체의 fixed 배열 필드 사용 (2)파일 다운로드1
13204정성태12/22/20224661.NET Framework: 2082. C# - (LSA_UNICODE_STRING 예제로) CustomMarshaler 사용법파일 다운로드1
13203정성태12/22/20224816.NET Framework: 2081. C# Interop 예제 - (LSA_UNICODE_STRING 예제로) 구조체를 C++에 전달하는 방법파일 다운로드1
13202정성태12/21/20225194기타: 84. 직렬화로 설명하는 Little/Big Endian파일 다운로드1
13201정성태12/20/20225753오류 유형: 835. PyCharm 사용 시 C 드라이브 용량 부족
13200정성태12/19/20224704오류 유형: 834. 이벤트 로그 - SSL Certificate Settings created by an admin process for endpoint
13199정성태12/19/20224893개발 환경 구성: 656. Internal Network 유형의 스위치로 공유한 Hyper-V의 VM과 호스트가 통신이 안 되는 경우
13198정성태12/18/20224816.NET Framework: 2080. C# - Microsoft.XmlSerializer.Generator 처리 없이 XmlSerializer 생성자를 예외 없이 사용하고 싶다면?파일 다운로드1
... 16  [17]  18  19  20  21  22  23  24  25  26  27  28  29  30  ...