NTP in Active directory Environment

วันนี้ขอเขียนเกี่ยวกับ Network Time Protocol(NTP) ในการทำงานของ AD ว่าทำงานยังไง

เผื่อว่าจะแก้ไขหรือตั้งใหม่ (และแอบลืมก็มี – -“) บทความนี้คงไม่ลงรายละเอียดอะไรมากนะครับ สำคัญว่าทำไงให้มัน Work!

     เริ่มแรกต้องมาดูกันก่อนว่าในสภาวะแวดล้อม AD อ้างอิงเวลากันยังไง เริ่มต้นอันดับแรกเลย แน่นอนก็ต้องมี Server ที่ทำหน้าที่เป็น Time Server (NTP Server) ซึ่งจะเป้นคนให้บริการข้อมูลเวลากับ NTPClient(Client ต่างๆที่อยู่ในระบบ) ซึ่ง NTP Protocol ใน Windows จะเป็นเวอร์ชั่น 3 ก็จะเพิ่มความถูกต้องและต่อเนื่องขึ้นมา (ตอนนี้มี v4 แต่มาตราฐานที่ใช้กันคือ 3)

     แล้วเวลามีความสำคัญแค่ไหนถึงต้องทำเป็นเรื่องเป็นราว? กับคำถามนี้ตอบสั้นๆง่ายๆ ก็คือเวลามีความสำคัญกับเรื่องของความปลอดภัยเป็นหลัก ส่วนใหญ่ก็เรื่องการตรวจสอบสิทธิ์ การอ้างอิงในการทำงานกับสิ่งต่างๆ เช่น ไฟล์ทั่วไป ไปจนถึง การส่งจดหมาย การจัดการรายการขายสินค้า(Transections) ถ้าต่างฝั่งต่างอ้างเวลาของฝั่งต้นเอง… แล้วจะเชื่อใครล่ะ? ในระบบของ AD หรือแม้แต่ Directory system อื่นๆก็จำเป็นต้องมี Time Server หลักในระบบขึ้นมาแล้วให้ Client ในระบบมาขอข้อมูลเวลาแล้วนำไปปรับเวลาของตัวเองให้ตรงกันเสมือนถือนาฬิกาเรือนเดียวกัน

    ใน AD จะมีการแบ่ง role เพื่อแยกหน้าที่การทำงาน หนึ่งในห้านั้น role ที่ทำหน้าที่เป็น NTP Server คือ “PDC Emulator” ซึ่งในการ Promote ปกติก็จะถูกตั้งค่าให้อยู่แล้ว DC อื่นๆก็จะมา Sync กับเจ้า PDC role นี้อีกที ที่นี้ก็คงพอจินตนาการคร่าวๆไดแล้วว่ามันจะมีลักษณะเป็นลำดับขั้น (Hierarchy)  และถ้าในระบบมี DC หลายตัวละ Client จะวิ่งไปหาใคร? …เออใครหว่ามาดูรูปนี้กันหน่อย

    ดูแล้วจะเห็นว่าที่ Root domain(Parent Domain) เจ้า PDC Emulator อาจจะมีการเทียบเวลากับอุปกรณ์เวลามาตราฐาน GPS หรือท่ามาตราฐานก็คือ External Time source ที่อยู่ใน Internet บ้านเราก็ไม่ทหารเรือ ก็มาตราวิทยา หรือ NECTEC ละครับ

    ซึ่งหลังจาก PDC role สามารถ Sync เวลาได้แล้ว วิธีการให้บริการในระบบ AD ถ้ามีขนาดกลางถึงใหญ่ DC เครื่องอื่นๆในระบบก็จะมา Sync. กับ PDC role แล้วClient หรือ member server อื่นๆก็จะมาเทียบเวลากับ DC ตัวใดตัวหนึ่งแทน ไม่ได้ Sync กับ PDC role ตรงๆนะครับ (ถ้าในระบบมี DC ตัวเดียวก็ตัวนั้นละครับ – -‘’)

แล้วจะต้องตั้งค่า PDC ยังไงให้สามารถเทียบเวลากับ External Time Source ได้?

จากที่เจอมาขอแบ่งเป็น 2 อย่างหลักๆ คือ แก้ Registry กับใช้ w32tm command โดยสองอย่างนี้ผลลัพธ์ืั้สุดท้ายได้เหมือนกันคือw32tm ก็จะไปปรับค่าใน registry อยู่ดีและใน registry ยังมีตัวเลือกให้ปรับอีกมากมาย ถ้างั้นมาดู Key หลักๆที่ต้องตั้วค่าก่อน

Registry Keys

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Parameters] 
“Type”=REG_SZ:”NTP” *** ถ้าต้องการให้ PDC Sync. กับภายนอกต้องตั้งเป็น NTP นะครับไม่ใช่ NT5DS 
“NtpServer”=REG_SZ:”time2.nimt.or.th,0x01”

ถ้ามีมากกว่า 1 Server ให้ใช้วรรคคั่นแบบนี้ครับ time2.nimt.or.th,0x01 time1.nimt.or.th,0x02

แล้วเจ้า ,0x01 หรือ 0x02 คืออะไร? มันคือ sync flag นะครับโดย

    0x01 = SpecialInterval 

    0x02 = UseAsFallbackOnly

ซึ่งถ้าตั้ง 0x01 ก็จะSync ด้วยค่าใน KEY

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\ 
NtpClient\SpecialPollInterval] *** ซึ่งค่าจะเป็นวินาที ระวังเรื่องค่าด้วย ให้ดูค่าในวงเล็บเอานะครับ ***

image

ส่วน Key อื่นๆ 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpClient] 
“Enabled”=dword:00000001 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpServer] 
“Enabled”=dword:00000001

ส่วนค่าอื่นๆถ้าอยากจะจูนให้เวลาผิดพลาดน่อยที่สุดดูลิงค์แนะนำด้านล่างครับ

W32TM command

Smile

ผมว่าง่ายกว่านั่งหา registry เยอะเลย 

w32tm /config /manualpeerlist:”time2.nimt.or.th,0x01 time.navy.mi.th,0x02” /syncfromflags:manual /reliable:yes 
w32tm /config /update 
net stop w32time && net start w32time หรือ “restart-service w32time” ใน Powershell 
w32tm /resync

เสริม/อื่นๆ

    แล้วถ้าเครื่องที่ไม่ได้ Join Domain หากอยากจะเทียบเวลาให้ตรง ก็ต้องบอกว่าไม่ต้องทำอะไรเลย(ก็ได้) เพราะโดยปกติพอลง OS เสร็จระบบก็จะตั้งให้ไปเทียบเวลากับ time.windows.com อยู่แล้วครับ

    อย่างในรูปผมเปลี่ยนไปเทียบกับทางมาตาวิทยา ใส่ IP,server name ลงไปแล้ว “Update Now” ถ้า Network admin. ไม่ใจร้ายเกินไปก็จะ Sync. ได้ครับถ้าไม่ได้ก็ขอเปิด UDP:123 เป็นอันจบ

image

Tip & Trick

  • Check status
    • w32tm /query /source
    • w32tm /query /status
    • w32tm /stripchart /computer<ntp_server>
  • Reset all configured
    • w32tm /unregister     *** ถ้าเกรงว่าจะมั่วแล้วไม่มีที่ไป คำสั่งนี้จะยกเลิกการตั้งค่าเกี่ยวกับ NTP ***
    • w32tm /register         *** หลังจาก unregister หากจะเริ่มใหม่ก็ register อีกรอบนึงเพื่อให้สร้าง registry ขึ้นมาใหม่”
      • แนะนำให้ stop w32time service ก่อนแล้วค่อย unregister/register
  • GPO conflict ถ้าในระบบท่านมีการทำ GPO แบบว่าต้องการระบุ ntp client ให้ชี้มาที่ NTP Server ให้ระวัง เครื่อง PDC ท่านจะโดนร่างแหไปด้วยนะครับ ให้ exception ซะ หรือไม่ต้องทำก็ได้
  • ถ้า DC[PDC] อยู่บน Hypervisor ในแต่ละ Hypervisor มีวิธีการตัดการไม่เหมือนกันให้ดูใน Related link ครับ

Related link

http://technet.microsoft.com/en-us/library/cc773013(WS.10).aspx

http://technet.microsoft.com/en-us/library/cc773263(WS.10).aspx

http://xtravirt.com/disabling-virtual-machine-guest-host-time-synchronization-multiple-hypervisors

http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/11/19/time-synchronization-in-hyper-v.aspx

http://jorgequestforknowledge.wordpress.com/2011/09/14/time-sync-recommendations-for-virtual-dcs-on-hyper-v-change-in-recommendations/

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

Create your website with WordPress.com
เริ่มได้
%d bloggers like this: