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

1  2  3  4  5  6  7  8  9  10  11  [12]  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13336정성태5/4/20234686.NET Framework: 2111. C# - 바이너리 출력 디렉터리와 연관된 csproj 설정
13335정성태4/30/20234723.NET Framework: 2110. C# - FFmpeg.AutoGen 라이브러리를 이용한 기본 프로젝트 구성 - Windows Forms파일 다운로드1
13334정성태4/29/20234401Windows: 250. Win32 C/C++ - Modal 메시지 루프 내에서 SetWindowsHookEx를 이용한 Thread 메시지 처리 방법
13333정성태4/28/20233800Windows: 249. Win32 C/C++ - 대화창 템플릿을 런타임에 코딩해서 사용파일 다운로드1
13332정성태4/27/20233888Windows: 248. Win32 C/C++ - 대화창을 위한 메시지 루프 사용자 정의파일 다운로드1
13331정성태4/27/20233923오류 유형: 856. dockerfile - 구 버전의 .NET Core 이미지 사용 시 apt update 오류
13330정성태4/26/20233580Windows: 247. Win32 C/C++ - CS_GLOBALCLASS 설명
13329정성태4/24/20233773Windows: 246. Win32 C/C++ - 직접 띄운 대화창 템플릿을 위한 Modal 메시지 루프 생성파일 다운로드1
13328정성태4/19/20233455VS.NET IDE: 184. Visual Studio - Fine Code Coverage에서 동작하지 않는 Fake/Shim 테스트
13327정성태4/19/20233862VS.NET IDE: 183. C# - .NET Core/5+ 환경에서 Fakes를 이용한 단위 테스트 방법
13326정성태4/18/20235314.NET Framework: 2109. C# - 닷넷 응용 프로그램에서 SQLite 사용 (System.Data.SQLite) [1]파일 다운로드1
13325정성태4/18/20234603스크립트: 48. 파이썬 - PostgreSQL의 with 문을 사용한 경우 연결 개체 누수
13324정성태4/17/20234434.NET Framework: 2108. C# - Octave의 "save -binary ..."로 생성한 바이너리 파일 분석파일 다운로드1
13323정성태4/16/20234365개발 환경 구성: 677. Octave에서 Excel read/write를 위한 io 패키지 설치
13322정성태4/15/20235168VS.NET IDE: 182. Visual Studio - 32비트로만 빌드된 ActiveX와 작업해야 한다면?
13321정성태4/14/20233978개발 환경 구성: 676. WSL/Linux Octave - Python 스크립트 연동
13320정성태4/13/20233912개발 환경 구성: 675. Windows Octave 8.1.0 - Python 스크립트 연동
13319정성태4/12/20234386개발 환경 구성: 674. WSL 2 환경에서 GNU Octave 설치
13318정성태4/11/20234259개발 환경 구성: 673. JetBrains IDE에서 "Squash Commits..." 메뉴가 비활성화된 경우
13317정성태4/11/20234313오류 유형: 855. WSL 2 Ubuntu 20.04 - error: cannot communicate with server: Post http://localhost/v2/snaps/...
13316정성태4/10/20233593오류 유형: 854. docker-compose 시 "json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)" 오류 발생
13315정성태4/10/20233815Windows: 245. Win32 - 시간 만료를 갖는 컨텍스트 메뉴와 윈도우 메시지의 영역별 정의파일 다운로드1
13314정성태4/9/20233975개발 환경 구성: 672. DosBox를 이용한 Turbo C, Windows 3.1 설치
13313정성태4/9/20234017개발 환경 구성: 671. Hyper-V VM에 Turbo C 2.0 설치 [2]
13312정성태4/8/20234047Windows: 244. Win32 - 시간 만료를 갖는 MessageBox 대화창 구현 (개선된 버전)파일 다운로드1
13311정성태4/7/20234535C/C++: 163. Visual Studio 2022 - DirectShow 예제 컴파일(WAV Dest)
1  2  3  4  5  6  7  8  9  10  11  [12]  13  14  15  ...