제2의 비엔지니어 인생관을 꿈꾸며

Posted
Filed under Study
검색을 통해서 많이 본 글중 하나가 NTP 서버나 시간 동기화에 대한 이슈가 많이 거론되는듯 합니다. 레지스트리를 수정하라고 하거나 하는데 대부분의 가이드는 레지스트리 수정과 명령어로 기능을 활성화 시키는 방법이였습니다. 하지만 윈도우 운영체제에서는 소프트웨어를 설치하지 않고도 자체 기능으로 NTP 서버 및 시간 동기화 옵션을 세부적으로 조절을 할수가 있습니다. 이 글을 보고나면 신세계를 알아서 감동받지는 않을까 자뻑 하고 싶기도 합니다.
자 그럼 필자가 권고하는 시간동기화 방법은 정말 심플하고 마우스로 몇번 클릭하면 만사 끝입니다.
"사용자
gpedit.msc 를 실행하면 정책편집기가 보입니다. 관리 템플릿의 시간 서비스를 클릭하면 세부적인 설정이 나옵니다. 처음에 위 숫자들을 보면 머리가 정말 아픕니다만 하나씩 정독하고 이해를 한다면 환장하는 기능들입니다. 모르면 그냥 기본값으로 놔두어도 무방합니다. 저걸 세부적으로 조절해서 쓰기엔 주위에서 보지도 못했고 저렇게 해야될일도 없습니다. 하지만 진짜 그럴만한 이유가 있기는 합니다.

고객사중 시간 서비스 동기화가 되면서 서비스가 에러가 발생하는 사례가 있었습니다. 동기화가 장기적으로 실패가 발생하면서 나중에 틀어진 시간을 다시 바로 잡을때 여러 서버가 문제를 일으켜버린 케이스였습니다. 그래서 동기화도 몇초이상 간격이 벌어지면 동기화를 하지 말아라?라는 지시가 내려온 케이스입니다. 그럼 동기화 어뜨게 할건데?라는 문제가 발생하게 되죠. 윈도우 운영체제에서는 시간 동기화를 바로 조절해버리지 않고 주파수값으로 미세하게 조절을 합니다. 1초를 변경하더라도 바로 수정하지 않고 0.01초씩 빠르게 작동하거나 늦추게 하는 방법으로 서서히 근접하게 하는 방법이 위 조절값에 전부 속해 있습니다.
바로 동기화 하지 않고 서서히 간격을 줄여가는 방법이 바로 윈도우 시간 서버 동기화의 장점입니다. 그렇기 때문에 간격이 벌어지더라도 바로 동기화를 하지 않고 주파수값에 따라 서서히 간격을 줄여가는 방법인것입니다.
"사용자
기본값은 NT5DS 인데 도메인 환경이라면 NTP가 아닌 NT5DS 값이 기본값입니다. 도메인 환경이 아니라면 NTP 설정으로 따라가게 됩니다. 기본값으로만 놔두어도 아주 충실하게 외부 시간서버랑 동기화를 하고 내부 인프라에 동기화를 시켜주게 됩니다. 서버 클라이언트 OS 가리지 않고 시간서비스는 전부 존재합니다.

"사용자
그리고 나서 서비스에 Windows Time 서비스를 시작하거나 재시작 해주면 시간포트 UDP 123이 대기상태로 올라오게 되고 서비스는 이걸로 끝입니다. 확인하고 말고도 없습니다.

외부시간과 매칭이 되는지 한두번 모니터링 해보고 통신상에 문제가 없으면 문제가 전혀 되지 않으리라 장담합니다. N 고객사에서 이런 사건이 벌어지고 난후 이런 이슈를 해결하기 위해 일일이 설득을 시키기 위해 위 기능을 설명해주고 마무리를 했던 기억이 납니다. 그누구도 위와 같은 방법을 제시해주지 않았었습니다.
대부분 레지스트리 수정하라고만 했지 위와같이 세부적인 설정까지 나온 시간서비스를 가이드 해주지 않아 블로그에 포스팅을 남겨봅니다.
2014/12/22 00:46 2014/12/22 00:46
Posted
Filed under Study
사용자 삽입 이미지
윈도우 서버로  NTP서버를 구성하는건 쉬웠다. 아주 쉬웠기 때문에 새로운 벽을 만나게 되었고 새로운걸 알게되었다.
회사에서 요구한 타임서버. 특정서버끼리는 시간을 동기화 시켜라. 내부끼리는 오차도 없어야 한다. 하지만 핸드폰 시간과도 동기화 시켜라. 이런 일을 주게되었다. 필자가 관리하는 서버들은 NT서버들이기 때문에 참 특이사항에 부딪혔고 유닉스 타임서버에는 어떤서버는 붙고 어떤서버는 안붙고 지 맘데로였다. 그래서 NT끼리만 동기화 하자해서 한대를 NTP서버로 구성하였고 다른 클라이언트 서버들을 동기화 시킬려고 하는데 안되는게 미칠노릇인거다. 온갖 문서나 트러블 슈팅을 봐도 교본대로 그대로 따라했을뿐인데 안되는게 이상했다.
NET TIME 명령어(net time
\\xxx.xxx.xxx.xxx /set /y)로 동기화를 하는건 UDP123번 통신을 하는게 아니고 RPC 와 넷바이오스 통신을 하면서 동기화를 하는것이였다. 결국 위방법은 안된다고 보안팀에서 너무 시끄럽게 해서 임시적으로만 동기화를 시키고 있는데 왜? 내가 운영하는 제주도 서버들은 잘만되는데 왜 여기 회사는 안되고 있는가? 뭐가 문제인가?라고 고민하던 찰나에 하나씩 찾아보기로 했다. 내 익스체인지 서버가 시간이 5분이상 늦었다는걸 알고 NTP 서버로 동기화 시킬때 스니퍼를 구동시켜봤다. 정확하게 패킷이 타임서버로 쏘는걸 모니터 된후 타임서버의 UDP123 포트가 정확하게 리스너가 되어 있는지를 확인했다.
사용자 삽입 이미지
정확하게 리스너 상태인것이 확인되었고 이서버는 타임서버로서 문제가 없으니 제대로 구동되고 있었던 것이다. 그럼 안되는 NTP 서버는 뭐가 문제인가?
netstat -an 으로 확인해보면 127.0.0.1 UDP123 이 리스너가 되고 있었고 그리고 지정한 ip로도 UDP123 이 리스너 상태였다.
혹시나 싶어 activeport로도 모니터 해본결과 127.0.0.1만 리스너 상태였고 지정한 아이피는 올라오지 않았던것이 주 원인이였다. 재부팅 해보면 될거 같았지만 특정서버라는 이유때문에 재부팅도 못하고 결국 네트워크 처리량이 없는 2003서버를 NTP서버로 다시 구성해야 하는 것으로 마무리 되었다.
소켓통신 방식은 항상 스니퍼든 패킷모니터든간에 한번은 확인을 해봐야 한다. 그렇지 않으면 패킷을 주고 받고 있는지 방화벽에서 차단되었는지를 알수 없기때문에 자신들은 문제없는데 왜 안되냐는둥 타부서를 원망하게 되는 함정에 빠지게 된다.
윈도우 서버 2003까지는 세션이 가득차서 빠지지 않으면 재부팅 해야되는 문제가 있는데 비스타엔진부터는 이게 해결되었다. 즉 윈도우2008 서버는 이문제가 없다는 것이다.
AD가 올라간 Stand Alone 서버를 다른서버와 시간을 동기화 시키기 위해서는 정책에서 클라이언트 사용구성을 해줘야 만 동기화가 적용된다.  
2008/11/30 13:26 2008/11/30 13:26