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

... 31  32  33  34  35  36  37  38  39  40  41  42  43  44  [45]  ...
NoWriterDateCnt.TitleFile(s)
12505정성태1/23/20219374.NET Framework: 1018. .NET Core Kestrel 호스팅 - Web API 추가 [1]파일 다운로드1
12504정성태1/23/202110489.NET Framework: 1017. .NET 5에서의 네트워크 라이브러리 개선 (2) - HTTP/2, HTTP/3 관련 [1]
12503정성태1/21/20218758오류 유형: 696. C# - HttpClient: Requesting HTTP version 2.0 with version policy RequestVersionExact while HTTP/2 is not enabled.
12502정성태1/21/20219526.NET Framework: 1016. .NET Core HttpClient의 HTTP/2 지원파일 다운로드1
12501정성태1/21/20218642.NET Framework: 1015. .NET 5부터 HTTP/1.1, 2.0 선택을 위한 HttpVersionPolicy 동작 방식파일 다운로드1
12500정성태1/21/20219192.NET Framework: 1014. ASP.NET Core(Kestrel)의 HTTP/2 지원 여부파일 다운로드1
12499정성태1/20/202110417.NET Framework: 1013. .NET Core Kestrel 호스팅 - 포트 변경, non-localhost 접속 지원 및 https 등의 설정 변경 [1]파일 다운로드1
12498정성태1/20/20219364.NET Framework: 1012. .NET Core Kestrel 호스팅 - 비주얼 스튜디오의 Kestrel/IIS Express 프로파일 설정
12497정성태1/20/202110288.NET Framework: 1011. C# - OWIN Web API 예제 프로젝트 [1]파일 다운로드2
12496정성태1/19/20219121.NET Framework: 1010. .NET Core 콘솔 프로젝트에서 Kestrel 호스팅 방법 [1]
12495정성태1/19/202111175웹: 40. IIS의 HTTP/2 지원 여부 - h2, h2c [1]
12494정성태1/19/202110451개발 환경 구성: 522. WSL2 인스턴스와 호스트 측의 Hyper-V에 운영 중인 VM과 네트워크 연결을 하는 방법 [2]
12493정성태1/18/20218771.NET Framework: 1009. .NET 5에서의 네트워크 라이브러리 개선 (1) - HTTP 관련 [1]파일 다운로드1
12492정성태1/17/20218164오류 유형: 695. ASP.NET 0x80131620 Failed to bind to address
12491정성태1/16/20219810.NET Framework: 1008. 배열을 반환하는 C# COM 개체의 메서드를 C++에서 사용 시 메모리 누수 현상 [1]파일 다운로드1
12490정성태1/15/20219343.NET Framework: 1007. C# - foreach에서 열거 변수의 타입을 var로 쓰면 object로 추론하는 문제 [1]파일 다운로드1
12489정성태1/13/202110304.NET Framework: 1006. C# - DB에 저장한 텍스트의 (이모티콘을 비롯해) 유니코드 문자가 '?'로 보인다면? [1]
12488정성태1/13/202110546.NET Framework: 1005. C# - string 타입은 shallow copy일까요? deep copy일까요? [2]파일 다운로드1
12487정성태1/13/20219076.NET Framework: 1004. C# - GC Heap에 위치한 참조 개체의 주소를 알아내는 방법파일 다운로드1
12486정성태1/12/20219994.NET Framework: 1003. x64 환경에서 참조형의 기본 메모리 소비는 얼마나 될까요? [1]
12485정성태1/11/202110729Graphics: 38. C# - OpenCvSharp.VideoWriter에 BMP 파일을 1초씩 출력하는 예제파일 다운로드1
12484정성태1/9/202111400.NET Framework: 1002. C# - ReadOnlySequence<T> 소개파일 다운로드1
12483정성태1/8/20218504개발 환경 구성: 521. dotPeek - 훌륭한 역어셈블 소스 코드 생성 도구
12482정성태1/8/202110022.NET Framework: 1001. C# - 제네릭 타입/메서드에서 사용 시 경우에 따라 CS8377 컴파일 에러
12481정성태1/7/20219695.NET Framework: 1000. C# - CS8344 컴파일 에러: ref struct 타입의 사용 제한 메서드파일 다운로드1
12480정성태1/6/202112306.NET Framework: 999. C# - ArrayPool<T>와 MemoryPool<T> 소개파일 다운로드1
... 31  32  33  34  35  36  37  38  39  40  41  42  43  44  [45]  ...